@localstack/appinspector-ui 1.0.41 → 1.0.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +3046 -438
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3079 -457
- package/dist/index.js.map +1 -1
- package/package.json +2 -3
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/pages/spans-list-page.tsx","../src/api/use-api.tsx","../src/components/spans-list/spans-list.tsx","../src/components/spans-list/spans-data-grid.tsx","../src/components/cells/responsive-timestamp-cell.tsx","../src/utils/logger.ts","../src/utils/search-in-object.ts","../src/components/cells/service-cell.tsx","../src/components/aws-service-icon/aws-service-icon.tsx","../src/utils/wrap-in-component.tsx","../src/components/aws-service-icon/icons/index.tsx","../src/types/service-names.ts","../src/components/aws-service-icon/icons/account.svg","../src/components/aws-service-icon/icons/acm-pca.svg","../src/components/aws-service-icon/icons/acm.svg","../src/components/aws-service-icon/icons/amplify.svg","../src/components/aws-service-icon/icons/apigateway.svg","../src/components/aws-service-icon/icons/apigatewaymanagementapi.svg","../src/components/aws-service-icon/icons/apigatewayv2.svg","../src/components/aws-service-icon/icons/appconfig.svg","../src/components/aws-service-icon/icons/application-autoscaling.svg","../src/components/aws-service-icon/icons/appsync.svg","../src/components/aws-service-icon/icons/athena.svg","../src/components/aws-service-icon/icons/autoscaling.svg","../src/components/aws-service-icon/icons/backup.svg","../src/components/aws-service-icon/icons/batch.svg","../src/components/aws-service-icon/icons/bedrock.svg","../src/components/aws-service-icon/icons/ce.svg","../src/components/aws-service-icon/icons/cloudcontrol.svg","../src/components/aws-service-icon/icons/cloudformation.svg","../src/components/aws-service-icon/icons/cloudfront.svg","../src/components/aws-service-icon/icons/cloudtrail.svg","../src/components/aws-service-icon/icons/cloudwatch.svg","../src/components/aws-service-icon/icons/codeartifact.svg","../src/components/aws-service-icon/icons/codebuild.svg","../src/components/aws-service-icon/icons/codecommit.svg","../src/components/aws-service-icon/icons/codeconnections.svg","../src/components/aws-service-icon/icons/codedeploy.svg","../src/components/aws-service-icon/icons/codepipeline.svg","../src/components/aws-service-icon/icons/codestar-connections.svg","../src/components/aws-service-icon/icons/cognito-identity.svg","../src/components/aws-service-icon/icons/cognito-idp.svg","../src/components/aws-service-icon/icons/config.svg","../src/components/aws-service-icon/icons/dms.svg","../src/components/aws-service-icon/icons/docdb.svg","../src/components/aws-service-icon/icons/dynamodb.svg","../src/components/aws-service-icon/icons/dynamodbstreams.svg","../src/components/aws-service-icon/icons/ec2.svg","../src/components/aws-service-icon/icons/ecr.svg","../src/components/aws-service-icon/icons/ecs.svg","../src/components/aws-service-icon/icons/efs.svg","../src/components/aws-service-icon/icons/eks.svg","../src/components/aws-service-icon/icons/elasticache.svg","../src/components/aws-service-icon/icons/elasticbeanstalk.svg","../src/components/aws-service-icon/icons/elasticsearch.svg","../src/components/aws-service-icon/icons/elastictranscoder.svg","../src/components/aws-service-icon/icons/elb.svg","../src/components/aws-service-icon/icons/elbv2.svg","../src/components/aws-service-icon/icons/emr-serverless.svg","../src/components/aws-service-icon/icons/emr.svg","../src/components/aws-service-icon/icons/events.svg","../src/components/aws-service-icon/icons/firehose.svg","../src/components/aws-service-icon/icons/fis.svg","../src/components/aws-service-icon/icons/glacier.svg","../src/components/aws-service-icon/icons/glue.svg","../src/components/aws-service-icon/icons/iam.svg","../src/components/aws-service-icon/icons/identitystore.svg","../src/components/aws-service-icon/icons/infrastructure.svg","../src/components/aws-service-icon/icons/iot-data.svg","../src/components/aws-service-icon/icons/iot.svg","../src/components/aws-service-icon/icons/iotanalytics.svg","../src/components/aws-service-icon/icons/iotwireless.svg","../src/components/aws-service-icon/icons/kafka.svg","../src/components/aws-service-icon/icons/kinesis.svg","../src/components/aws-service-icon/icons/kinesisanalytics.svg","../src/components/aws-service-icon/icons/kinesisanalyticsv2.svg","../src/components/aws-service-icon/icons/kms.svg","../src/components/aws-service-icon/icons/lakeformation.svg","../src/components/aws-service-icon/icons/lambda.svg","../src/components/aws-service-icon/icons/logs.svg","../src/components/aws-service-icon/icons/managedblockchain.svg","../src/components/aws-service-icon/icons/mediaconvert.svg","../src/components/aws-service-icon/icons/mediastore-data.svg","../src/components/aws-service-icon/icons/mediastore.svg","../src/components/aws-service-icon/icons/memorydb.svg","../src/components/aws-service-icon/icons/mq.svg","../src/components/aws-service-icon/icons/mwaa.svg","../src/components/aws-service-icon/icons/neptune.svg","../src/components/aws-service-icon/icons/opensearch.svg","../src/components/aws-service-icon/icons/organizations.svg","../src/components/aws-service-icon/icons/pinpoint.svg","../src/components/aws-service-icon/icons/pipes.svg","../src/components/aws-service-icon/icons/qldb-session.svg","../src/components/aws-service-icon/icons/qldb.svg","../src/components/aws-service-icon/icons/ram.svg","../src/components/aws-service-icon/icons/rds-data.svg","../src/components/aws-service-icon/icons/rds.svg","../src/components/aws-service-icon/icons/redshift-data.svg","../src/components/aws-service-icon/icons/redshift.svg","../src/components/aws-service-icon/icons/resource-groups.svg","../src/components/aws-service-icon/icons/resourcegroupstaggingapi.svg","../src/components/aws-service-icon/icons/route53.svg","../src/components/aws-service-icon/icons/route53resolver.svg","../src/components/aws-service-icon/icons/s3.svg","../src/components/aws-service-icon/icons/s3control.svg","../src/components/aws-service-icon/icons/sagemaker-runtime.svg","../src/components/aws-service-icon/icons/sagemaker.svg","../src/components/aws-service-icon/icons/scheduler.svg","../src/components/aws-service-icon/icons/secretsmanager.svg","../src/components/aws-service-icon/icons/serverlessrepo.svg","../src/components/aws-service-icon/icons/servicediscovery.svg","../src/components/aws-service-icon/icons/ses.svg","../src/components/aws-service-icon/icons/sesv2.svg","../src/components/aws-service-icon/icons/shield.svg","../src/components/aws-service-icon/icons/sns.svg","../src/components/aws-service-icon/icons/sqs.svg","../src/components/aws-service-icon/icons/ssm.svg","../src/components/aws-service-icon/icons/sso-admin.svg","../src/components/aws-service-icon/icons/stepfunctions.svg","../src/components/aws-service-icon/icons/sts.svg","../src/components/aws-service-icon/icons/support.svg","../src/components/aws-service-icon/icons/swf.svg","../src/components/aws-service-icon/icons/textract.svg","../src/components/aws-service-icon/icons/timestream-query.svg","../src/components/aws-service-icon/icons/timestream-write.svg","../src/components/aws-service-icon/icons/transcribe.svg","../src/components/aws-service-icon/icons/transfer.svg","../src/components/aws-service-icon/icons/verifiedpermissions.svg","../src/components/aws-service-icon/icons/wafv2.svg","../src/components/aws-service-icon/icons/xray.svg","../src/components/cells/pill-cell.tsx","../src/components/status-message/status-message.tsx","../src/api/errors.ts","../src/config.ts","../src/hooks/use-local-storage.tsx","../src/hooks/use-status.tsx","../src/pages/trace-graph-page.tsx","../src/components/event-details/event-details.tsx","../src/utils/iam-utils.ts","../src/utils/event-utils.ts","../src/utils/time.ts","../src/components/event-details/event-details-header.tsx","../src/components/event-details/event-section.tsx","../src/components/event-details/event-detail.tsx","../src/components/status-icon.tsx","../src/components/event-details/iam-event-detail.tsx","../src/components/event-details/iam-permission-detail.tsx","../src/components/event-details/toggle-section.tsx","../src/components/trace-graph/trace-graph.tsx","../src/components/trace-graph/service-node.tsx","../src/components/trace-graph/problem-indicator.tsx","../src/components/trace-graph/utils.ts","../src/components/trace-graph/xyflow/controls.tsx","../node_modules/zustand/esm/shallow.mjs","../src/routes.ts","../src/context.tsx","../src/constants/error-messages.ts","../src/api/client.ts"],"sourcesContent":["import type { FC } from 'react'\n\nimport { SpansListPage } from './pages/spans-list-page.tsx'\nimport { routes } from './routes.ts'\n\nexport { AppInspectorContextProvider } from './context.tsx'\n\nexport type PagesMap = Record<keyof typeof routes, readonly [string, FC]>\n\nexport const pages = {\n APP_INSPECTOR_SPANS_LIST: [routes.APP_INSPECTOR_SPANS_LIST, SpansListPage],\n} as const satisfies PagesMap\n","import type { FC } from 'react'\nimport { Box } from '@mui/material'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { ExtendedSpan, SpansRequest } from '@/types/api.ts'\nimport type { Span } from '@/types/spans.ts'\nimport { useAppInspectorApi } from '@/api/use-api.tsx'\nimport { SpansList } from '@/components/spans-list/spans-list.tsx'\nimport { StatusMessage } from '@/components/status-message/status-message.tsx'\nimport { useLocalStorage } from '@/hooks/use-local-storage.tsx'\nimport { useStatus } from '@/hooks/use-status.tsx'\n\nimport { TraceGraphPage } from './trace-graph-page.tsx'\n\nconst spansPerPageOptions = [25, 50, 100]\n\nexport const SpansListPage: FC = () => {\n const api = useAppInspectorApi()\n const [spans, setSpans] = useState<ExtendedSpan[]>()\n const [loading, setLoading] = useState(false)\n const hasFetched = useRef(false)\n const [includeReadOperations, setIncludeReadOperations] = useLocalStorage('includeReadOperations', false)\n\n const mapPageToNextCursor = useRef<Record<number, string>>({})\n\n const [page, setPage] = useState(0)\n const [pageSize, setPageSize] = useState(100)\n const [spanCount, setSpanCount] = useState(0)\n const queryOptions = useMemo<SpansRequest>(() => {\n return {\n is_write_operation: includeReadOperations ? undefined : true,\n limit: pageSize,\n pagination_token: mapPageToNextCursor.current[page - 1],\n }\n }, [includeReadOperations, pageSize, page])\n\n const [fetchError, setFetchError] = useState<Error>()\n const { checkStatus, error: statusError, status } = useStatus()\n const fetchSpans = useCallback(async () => {\n setLoading(true)\n try {\n const response = await api.getSpans(queryOptions)\n setSpans(response.spans)\n setSpanCount(response.pagination.total_count)\n setFetchError(undefined)\n if (response.pagination.cursor) {\n mapPageToNextCursor.current[page] = response.pagination.cursor\n }\n }\n catch (error) {\n console.error(error)\n setFetchError(error instanceof Error ? error : new Error('Unknown error', { cause: error }))\n }\n finally {\n setLoading(false)\n }\n }, [api, page, queryOptions])\n\n const fetchSpansSync = useCallback(() => {\n void fetchSpans()\n }, [fetchSpans])\n\n useEffect(() => {\n if (hasFetched.current) return\n // Only fetch spans if status is ENABLED (avoid redundant API calls when disabled)\n if (status?.status !== 'ENABLED') return\n\n hasFetched.current = true\n void fetchSpans()\n }, [fetchSpans, status])\n\n // Re-fetch when filter changes\n useEffect(() => {\n if (!hasFetched.current) return\n void fetchSpans()\n }, [fetchSpans])\n\n const [selectedTraceId, setSelectedTraceId] = useState<string>()\n const [selectedSpanId, setSelectedSpanId] = useState<string>()\n const navigateToSpan = useCallback((span: Span) => {\n setSelectedTraceId(span.trace_id)\n setSelectedSpanId(span.span_id)\n }, [])\n\n const clearSpans = useCallback(async () => {\n setLoading(true)\n try {\n await api.deleteSpans()\n setSpans([])\n setFetchError(undefined)\n // Refresh the list after deletion\n await fetchSpans()\n }\n catch (error) {\n console.error('Failed to delete spans:', error)\n setFetchError(error instanceof Error ? error : new Error('Failed to delete spans', { cause: error }))\n }\n finally {\n setLoading(false)\n }\n }, [api, fetchSpans])\n\n const handleRetry = useCallback(() => {\n // Check status first, then fetch spans only if no error\n void checkStatus()\n // Fetch will happen automatically via useEffect when status changes to ENABLED\n }, [checkStatus])\n\n // Show helpful message if connection failed or AppInspector is disabled\n const shouldShowStatusMessage = Boolean(statusError) || (status?.status === 'DISABLED')\n\n return (\n <>\n <Box\n data-testid=\"spans-list-page\"\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n // Do not consume vertical space if trace graph is open\n flexGrow: selectedTraceId ? 0 : 1,\n height: selectedTraceId ? 0 : undefined,\n // Do not show if trace graph is open\n visibility: selectedTraceId ? 'hidden' : 'visible',\n width: '100%',\n }}\n >\n {shouldShowStatusMessage\n ? (\n <StatusMessage\n error={statusError}\n onRetry={handleRetry}\n status={status}\n />\n )\n : (\n <SpansList\n includeReadOperations={includeReadOperations}\n onClearSpans={() => { void clearSpans() }}\n onIncludeReadOperationsChange={(value) => { setIncludeReadOperations(value) }}\n onPageChange={setPage}\n onPageSizeChange={setPageSize}\n onRefresh={() => { fetchSpansSync() }}\n onSpanClick={(span) => { navigateToSpan(span) }}\n page={page}\n pageSize={pageSize}\n spanCount={spanCount}\n spans={{\n data: spans,\n error: fetchError,\n loading,\n }}\n spansPerPageOptions={spansPerPageOptions}\n />\n )}\n </Box>\n\n {selectedTraceId !== undefined && (\n <TraceGraphPage onClose={() => { setSelectedTraceId(undefined) }} spanId={selectedSpanId} traceId={selectedTraceId} />\n )}\n </>\n )\n}\n","import type { FC, PropsWithChildren } from 'react'\nimport { createContext, useContext } from 'react'\n\nimport type { Api } from './api.ts'\n\nconst AppInspectorApiContext = createContext<Api | undefined>(undefined)\n\nexport interface ApiProviderProps {\n api: Api\n}\n\nexport const ApiProvider: FC<PropsWithChildren<ApiProviderProps>> = (props) => {\n return <AppInspectorApiContext.Provider value={props.api}>{props.children}</AppInspectorApiContext.Provider>\n}\n\nexport const useAppInspectorApi = (): Api => {\n const api = useContext(AppInspectorApiContext)\n if (!api) {\n throw new Error('useAppInspectorApi must be used within AppInspectorApiProvider')\n }\n return api\n}\n","import type { FC } from 'react'\nimport { Alert, Box, Button } from '@mui/material'\n\nimport type { ExtendedSpan } from '@/types/api.ts'\nimport { SpansDataGrid } from '@/components/spans-list/spans-data-grid.tsx'\n\ninterface SpansListProps {\n includeReadOperations: boolean\n onClearSpans: () => void\n onIncludeReadOperationsChange: (value: boolean) => void\n onPageChange: (page: number) => void\n onPageSizeChange: (pageSize: number) => void\n onRefresh: () => void\n onSpanClick: (span: ExtendedSpan) => void\n page: number\n pageSize: number\n spanCount: number\n spans: {\n data: ExtendedSpan[] | undefined\n error: Error | undefined\n loading: boolean\n }\n spansPerPageOptions: number[]\n}\n\nexport const SpansList: FC<SpansListProps> = (props) => {\n return (\n <Box data-testid=\"spans-data-grid\" sx={{ display: 'flex', flexDirection: 'column', flexGrow: 1, gap: 2, width: '100%' }}>\n {props.spans.error && (\n <Alert\n action={\n <Button onClick={props.onRefresh}>Retry</Button>\n }\n severity=\"error\"\n >\n Unexpected error:\n {' '}\n {props.spans.error.message}\n </Alert>\n )}\n {(props.spans.data !== undefined || props.spans.loading) && (\n <SpansDataGrid\n includeReadOperations={props.includeReadOperations}\n loading={props.spans.loading}\n onClearSpans={props.onClearSpans}\n onIncludeReadOperationsChange={props.onIncludeReadOperationsChange}\n onPageChange={props.onPageChange}\n onPageSizeChange={props.onPageSizeChange}\n onRefresh={props.onRefresh}\n onSpanClick={props.onSpanClick}\n page={props.page}\n pageSize={props.pageSize}\n rowCount={props.spanCount}\n rows={props.spans.data ?? []}\n rowsPerPageOptions={props.spansPerPageOptions}\n sortingOption={{ field: 'start_time_unix_nano', sort: 'asc' }}\n />\n )}\n </Box>\n )\n}\n","import type { GridComparatorFn, GridRenderCellParams, GridRowParams, GridSortItem, GridSortModel } from '@mui/x-data-grid'\nimport type { GridColDef } from '@mui/x-data-grid'\nimport type { ChangeEvent, FC } from 'react'\nimport { Cached, DeleteForeverOutlined, Search } from '@mui/icons-material'\nimport { Box, Button, FormControlLabel, Grid, Paper, Switch, TextField, Tooltip, Typography } from '@mui/material'\nimport { DataGrid } from '@mui/x-data-grid'\nimport { useCallback, useMemo, useState } from 'react'\n\nimport type { ExtendedSpan } from '@/types/api.ts'\nimport type { SearchableObject } from '@/utils/search-in-object.ts'\nimport { ResponsiveTimestampCell } from '@/components/cells/responsive-timestamp-cell.tsx'\nimport { logger } from '@/utils/logger.ts'\nimport { searchInObject } from '@/utils/search-in-object.ts'\n\nimport { ServiceCell } from '../cells/service-cell.tsx'\n\nconst resourceNameComparator: GridComparatorFn<string> = (v1 = '', v2 = '') => {\n return v1.localeCompare(v2)\n}\n\ninterface SortingOption {\n field: string\n sort: 'asc' | 'desc'\n}\n\ninterface SpansDataGridProps {\n includeReadOperations?: boolean\n loading: boolean\n onClearSpans: () => void\n onIncludeReadOperationsChange?: (checked: boolean) => void\n onPageChange: (page: number) => void\n onPageSizeChange: (pageSize: number) => void\n onRefresh: () => void\n onSpanClick: (span: ExtendedSpan) => void\n page: number\n pageSize: number\n rowCount: number\n rows: ExtendedSpan[]\n rowsPerPageOptions: number[]\n sortingOption?: SortingOption\n}\n\nconst columns: GridColDef<ExtendedSpan>[] = [\n {\n field: 'trace_id',\n headerName: 'Trace',\n renderCell: (parameters) => {\n return (\n <Tooltip arrow title={String(parameters.value)}>\n <span style={{\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {parameters.value}\n </span>\n </Tooltip>\n )\n },\n type: 'string',\n width: 120,\n },\n {\n field: 'start_time_unix_nano',\n headerName: 'Time',\n renderCell: (parameters: GridRenderCellParams<ExtendedSpan>) => (\n <ResponsiveTimestampCell date={parameters.value?.startTime} />\n ),\n type: 'string',\n width: 180,\n },\n {\n field: 'producer',\n headerName: 'Producer',\n renderCell: (parameters) => {\n // Only render if row has parent_span_id and parent_service_name\n if (!parameters.row.parent_service_name || !parameters.row.parent_resource_name) {\n return\n }\n return (\n <ServiceCell resource={parameters.row.parent_resource_name} service={parameters.row.parent_service_name} />\n )\n },\n sortable: true,\n sortComparator: resourceNameComparator,\n width: 260,\n },\n {\n field: 'operation_name',\n headerName: 'Action',\n type: 'string',\n width: 130,\n },\n {\n field: 'consumer',\n flex: 1,\n headerName: 'Consumer',\n renderCell: (parameters) => {\n return <ServiceCell resource={parameters.row.resource_name} service={parameters.row.service_name} />\n },\n sortComparator: resourceNameComparator,\n width: 260,\n },\n]\n\nconst defaultSortingOption: GridSortItem = { field: 'start_time_unix_nano', sort: 'asc' }\n\nexport const SpansDataGrid: FC<SpansDataGridProps> = ({\n includeReadOperations = false,\n loading,\n onClearSpans,\n onIncludeReadOperationsChange,\n onPageChange,\n onPageSizeChange,\n onRefresh,\n onSpanClick,\n page,\n pageSize,\n rowCount,\n rows,\n rowsPerPageOptions,\n // setRows,\n sortingOption = defaultSortingOption,\n}) => {\n const [searchTerm, setSearchTerm] = useState(() => localStorage.getItem('spansSearchTerm') ?? '')\n\n // Initialize sorting from localStorage or fallback to the provided sortingOption\n const [sortModel, setSortModel] = useState<GridSortModel>(() => {\n const savedSorting = localStorage.getItem('spansSortModel')\n if (savedSorting) {\n try {\n return JSON.parse(savedSorting) as GridSortModel\n }\n catch (error) {\n logger.error('Error parsing saved sort model', error)\n }\n }\n return [\n {\n field: sortingOption.field,\n sort: sortingOption.sort,\n },\n ]\n })\n\n const handleRowClick = useCallback((parameters: GridRowParams<ExtendedSpan>) => {\n onSpanClick(parameters.row)\n }, [onSpanClick])\n\n const handleSearchTermChange = useCallback((span: ChangeEvent<HTMLInputElement>) => {\n const newValue = span.target.value\n setSearchTerm(newValue)\n localStorage.setItem('spansSearchTerm', newValue)\n }, [])\n\n const handleSortModelChange = useCallback((newSortModel: GridSortModel) => {\n setSortModel(newSortModel)\n localStorage.setItem('spansSortModel', JSON.stringify(newSortModel))\n }, [])\n\n // const clearSpans = useCallback(() => {\n // setRows([])\n // // TODO call backend to delete spans\n // logger.info('Cleared all spans')\n // }, [setRows])\n\n const filterSpansBySearchTerm = useCallback(\n (span: ExtendedSpan): boolean => {\n if (searchTerm.length === 0) return true\n return searchInObject(span as unknown as SearchableObject, searchTerm)\n },\n [searchTerm],\n )\n\n const filtersToApply = useMemo(() => [filterSpansBySearchTerm], [filterSpansBySearchTerm])\n\n // TODO add filters to api call\n const filteredRows = useMemo(\n () => rows.filter(row => filtersToApply.every(filter => filter(row))),\n [filtersToApply, rows],\n )\n\n return (\n <>\n <Grid item xs={12}>\n <Box sx={{ alignItems: 'center', display: 'flex', gap: '0.5rem' }}>\n <TextField\n label={(\n <Box sx={{ display: 'flex', gap: '0.25rem' }}>\n <Search fontSize=\"small\" />\n <Typography>Search Spans</Typography>\n </Box>\n )}\n onChange={handleSearchTermChange}\n size=\"small\"\n sx={{ minWidth: '200px' }}\n value={searchTerm}\n />\n <Box sx={{ flexGrow: 1 }} />\n\n <FormControlLabel\n control={(\n <Switch\n checked={includeReadOperations}\n onChange={(event) => { onIncludeReadOperationsChange?.(event.target.checked) }}\n size=\"small\"\n />\n )}\n label=\"Include Read Operations\"\n />\n\n <Button onClick={onClearSpans} startIcon={<DeleteForeverOutlined />}>\n Clear Spans\n </Button>\n <Button disabled={loading} onClick={onRefresh} startIcon={<Cached />}>\n Refresh\n </Button>\n </Box>\n </Grid>\n <div style={{ display: 'flex', flexDirection: 'column', flexGrow: 1 }}>\n <Paper\n sx={{\n boxShadow: 2,\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n minHeight: 120,\n p: 2,\n }}\n >\n <DataGrid\n columns={columns}\n disableColumnMenu\n getRowId={(row: ExtendedSpan) => row.span_id}\n initialState={{\n pagination: {\n page,\n pageSize,\n },\n }}\n loading={loading}\n onPageChange={(newPage) => { onPageChange(newPage) }}\n onPageSizeChange={(newPageSize) => { onPageSizeChange(newPageSize) }}\n onRowClick={handleRowClick}\n onSortModelChange={handleSortModelChange}\n page={page}\n pageSize={pageSize}\n paginationMode=\"server\"\n rowCount={rowCount}\n rowHeight={40}\n rows={filteredRows}\n rowsPerPageOptions={rowsPerPageOptions}\n sortModel={sortModel}\n sx={{ flexGrow: 1 }}\n />\n </Paper>\n </div>\n </>\n )\n}\n","import type { FC } from 'react'\nimport { memo } from 'react'\n\ninterface ResponsiveTimestampCellProps {\n date: Date | number | undefined\n locale?: string\n}\n\nexport const ResponsiveTimestampCell: FC<ResponsiveTimestampCellProps> = memo(({ date, locale }) => {\n const format = new Intl.DateTimeFormat(locale, {\n day: '2-digit',\n fractionalSecondDigits: 3,\n hour: '2-digit',\n hour12: false,\n minute: '2-digit',\n month: '2-digit',\n second: '2-digit',\n year: 'numeric',\n })\n\n const formattedTime = format.format(date)\n\n return (\n <div style={{ width: '100%' }}>\n {formattedTime}\n </div>\n )\n})\n","export interface Logger {\n debug: LoggerFunction\n error: LoggerFunction\n info: LoggerFunction\n warn: LoggerFunction\n}\n\ntype LoggerFunction = (message: string, data?: unknown) => void\n\nconst getIsDevelopment = (): boolean => {\n try {\n return import.meta.env.DEV || false\n }\n catch {\n return false\n }\n}\n\nconst isDevelopment = getIsDevelopment()\n\nexport const logger: Logger = {\n debug: (message: string, data?: unknown): void => {\n if (isDevelopment) {\n console.debug(`[DEBUG] ${message}`, data === undefined ? '' : data)\n }\n },\n\n error: (message: string, data?: unknown): void => {\n if (isDevelopment) {\n console.error(`[ERROR] ${message}`, data === undefined ? '' : data)\n }\n // In production, you might want to send errors to a monitoring service\n },\n\n info: (message: string, data?: unknown): void => {\n if (isDevelopment) {\n console.info(`[INFO] ${message}`, data === undefined ? '' : data)\n }\n },\n\n warn: (message: string, data?: unknown): void => {\n if (isDevelopment) {\n console.warn(`[WARN] ${message}`, data === undefined ? '' : data)\n }\n },\n}\n\nexport const isLoggerEnabled = (): boolean => isDevelopment\n\nexport const createScopedLogger = (scope: string): Logger => ({\n debug: (message: string, data?: unknown) => { logger.debug(`[${scope}] ${message}`, data) },\n error: (message: string, data?: unknown) => { logger.error(`[${scope}] ${message}`, data) },\n info: (message: string, data?: unknown) => { logger.info(`[${scope}] ${message}`, data) },\n warn: (message: string, data?: unknown) => { logger.warn(`[${scope}] ${message}`, data) },\n})\n","export interface SearchableObject {\n [key: string]: SearchableValue\n}\n\nexport type SearchableValue = boolean | null | number | SearchableObject | SearchableValue[] | string | undefined\n\nexport const searchInObject = (object: SearchableValue, searchTerm: string, skipKeys: string[] = []): boolean => {\n if (!object) return false\n if (!searchTerm || searchTerm.trim() === '') return true\n\n const normalizedSearchTerm = searchTerm.toLowerCase().trim()\n\n if (typeof object === 'string') {\n return object.toLowerCase().includes(normalizedSearchTerm)\n }\n\n if (typeof object === 'number') {\n return String(object).toLowerCase().includes(normalizedSearchTerm)\n }\n\n if (typeof object === 'boolean') {\n return String(object).toLowerCase().includes(normalizedSearchTerm)\n }\n\n if (Array.isArray(object)) {\n return object.some(item => searchInObject(item, searchTerm, skipKeys))\n }\n\n if (typeof object === 'object') {\n return Object.entries(object)\n .filter(([key]) => !skipKeys.includes(key))\n .some(([, value]) => searchInObject(value, searchTerm, skipKeys))\n }\n\n return false\n}\n","import type { FC } from 'react'\nimport { Box, Divider, Typography, useTheme } from '@mui/material'\nimport { memo } from 'react'\n\nimport type { SERVICE_NAME } from '@/types/service-names.ts'\n\nimport { AwsServiceIcon } from '../aws-service-icon/aws-service-icon.tsx'\nimport { PillCell } from './pill-cell.tsx'\n\ninterface ServiceCellProps {\n height?: string\n resource?: string\n selected?: boolean\n service: SERVICE_NAME | (string & {})\n showIcon?: boolean\n width?: string\n}\n\nexport const ServiceCell: FC<ServiceCellProps> = memo(({\n height = '24px',\n resource,\n selected,\n service,\n showIcon = true,\n width = '32px',\n}) => {\n const theme = useTheme()\n const outlineColor = selected ? theme.palette.primary.light : theme.palette.text.secondary\n const outlineWidth = selected ? '2px' : undefined\n return (\n <Box sx={{ width: '100%' }}>\n <PillCell height={height} outlineColor={outlineColor} outlineWidth={outlineWidth}>\n {showIcon\n ? (\n <>\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexShrink: 0,\n height,\n justifyContent: 'center',\n overflow: 'hidden',\n padding: 0,\n width,\n }}\n >\n <AwsServiceIcon hideTooltip service={service} size=\"large\" />\n </Box>\n <Divider orientation=\"vertical\" />\n </>\n )\n : undefined}\n <Typography\n sx={{\n flexShrink: 0,\n fontWeight: 'bold',\n overflow: 'hidden',\n padding: '1px 8px',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n ...(showIcon\n ? {}\n : {\n borderBottomLeftRadius: '15px',\n borderTopLeftRadius: '15px',\n ...(!resource && {\n borderBottomRightRadius: '15px',\n borderTopRightRadius: '15px',\n }),\n }),\n }}\n variant=\"body2\"\n >\n {service}\n </Typography>\n {resource\n ? (\n <>\n <Box sx={{ height: '100%', paddingY: 0.5 }}>\n <Divider orientation=\"vertical\" />\n </Box>\n\n <Typography\n sx={{\n borderBottomRightRadius: '15px',\n borderTopRightRadius: '15px',\n overflow: 'hidden',\n padding: '1px 8px',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n variant=\"body2\"\n >\n {resource}\n </Typography>\n </>\n )\n : undefined}\n </PillCell>\n </Box>\n )\n})\n\nServiceCell.displayName = 'ServiceCell'\n","import type { FC, ReactElement } from 'react'\nimport { Tooltip } from '@mui/material'\nimport { memo } from 'react'\n\nimport { WrapInComponent } from '@/utils/wrap-in-component.tsx'\nimport type { AnyServiceName } from './icons/index.tsx'\n\nimport { AwsServiceIconBase } from './icons/index.tsx'\n\nexport { supportedServiceNames } from './icons/index.tsx'\n\nconst sizes = { large: [32, 32], medium: [22, 22], small: [11, 11] }\n\ninterface AwsServiceIconProps {\n hideTooltip?: boolean\n service: AnyServiceName\n size?: 'large' | 'medium' | 'small'\n title?: string\n}\n\nexport const AwsServiceIcon: FC<AwsServiceIconProps> = memo(({ hideTooltip, service, size = 'medium', title }) => {\n const [width, height] = sizes[size]\n\n return (\n <WrapInComponent\n wrap={!hideTooltip}\n wrapperFn={(child: ReactElement) => (\n <Tooltip placement=\"top\" title={title ?? service}>\n {child}\n </Tooltip>\n )}\n >\n <AwsServiceIconBase height={height} service={service} style={{ display: 'block' }} width={width} />\n </WrapInComponent>\n )\n})\n","import type { FC, ReactElement } from 'react'\nimport { memo } from 'react'\n\ninterface WrapInComponentProps {\n children: ReactElement\n wrap: boolean\n wrapperFn: (children: ReactElement) => ReactElement\n}\n\nexport const WrapInComponent: FC<WrapInComponentProps> = memo(({ children, wrap, wrapperFn }) => {\n if (wrap) {\n return wrapperFn(children)\n }\n return children\n})\n","import type { FC, SVGProps } from 'react'\nimport { memo } from 'react'\n\nimport { SERVICE_NAME } from '@/types/service-names.ts'\n\nimport account from './account.svg'\nimport acmPca from './acm-pca.svg'\nimport acm from './acm.svg'\nimport amplify from './amplify.svg'\nimport apigateway from './apigateway.svg'\nimport apigatewaymanagementapi from './apigatewaymanagementapi.svg'\nimport apigatewayv2 from './apigatewayv2.svg'\nimport appconfig from './appconfig.svg'\nimport applicationautoscaling from './application-autoscaling.svg'\nimport appsync from './appsync.svg'\nimport athena from './athena.svg'\nimport autoscaling from './autoscaling.svg'\nimport backup from './backup.svg'\nimport batch from './batch.svg'\nimport bedrock from './bedrock.svg'\nimport ce from './ce.svg'\nimport cloudcontrol from './cloudcontrol.svg'\nimport cloudformation from './cloudformation.svg'\nimport cloudfront from './cloudfront.svg'\nimport cloudtrail from './cloudtrail.svg'\nimport cloudwatch from './cloudwatch.svg'\nimport codeartifact from './codeartifact.svg'\nimport codebuild from './codebuild.svg'\nimport codecommit from './codecommit.svg'\nimport codeconnections from './codeconnections.svg'\nimport codedeploy from './codedeploy.svg'\nimport codepipeline from './codepipeline.svg'\nimport codestarConnections from './codestar-connections.svg'\nimport cognitoidentity from './cognito-identity.svg'\nimport cognitoidp from './cognito-idp.svg'\nimport config from './config.svg'\nimport dms from './dms.svg'\nimport docdb from './docdb.svg'\nimport dynamodb from './dynamodb.svg'\nimport dynamodbstreams from './dynamodbstreams.svg'\nimport ec2 from './ec2.svg'\nimport ecr from './ecr.svg'\nimport ecs from './ecs.svg'\nimport efs from './efs.svg'\nimport eks from './eks.svg'\nimport elasticache from './elasticache.svg'\nimport elasticbeanstalk from './elasticbeanstalk.svg'\nimport elasticsearch from './elasticsearch.svg'\nimport elastictranscoder from './elastictranscoder.svg'\nimport elb from './elb.svg'\nimport elbv2 from './elbv2.svg'\nimport emrserverless from './emr-serverless.svg'\nimport emr from './emr.svg'\nimport events from './events.svg'\nimport firehose from './firehose.svg'\nimport fis from './fis.svg'\nimport glacier from './glacier.svg'\nimport glue from './glue.svg'\nimport iam from './iam.svg'\nimport identitystore from './identitystore.svg'\nimport infrastructure from './infrastructure.svg'\nimport iotdata from './iot-data.svg'\nimport iot from './iot.svg'\nimport iotanalytics from './iotanalytics.svg'\nimport iotwireless from './iotwireless.svg'\nimport kafka from './kafka.svg'\nimport kinesis from './kinesis.svg'\nimport kinesisanalytics from './kinesisanalytics.svg'\nimport kinesisanalyticsv2 from './kinesisanalyticsv2.svg'\nimport kms from './kms.svg'\nimport lakeformation from './lakeformation.svg'\nimport lambda from './lambda.svg'\nimport logs from './logs.svg'\nimport managedblockchain from './managedblockchain.svg'\nimport mediaconvert from './mediaconvert.svg'\nimport mediastoredata from './mediastore-data.svg'\nimport mediastore from './mediastore.svg'\nimport memorydb from './memorydb.svg'\nimport mq from './mq.svg'\nimport mwaa from './mwaa.svg'\nimport neptune from './neptune.svg'\nimport opensearch from './opensearch.svg'\nimport organizations from './organizations.svg'\nimport pinpoint from './pinpoint.svg'\nimport pipes from './pipes.svg'\nimport qldbsession from './qldb-session.svg'\nimport qldb from './qldb.svg'\nimport ram from './ram.svg'\nimport rdsdata from './rds-data.svg'\nimport rds from './rds.svg'\nimport redshiftdata from './redshift-data.svg'\nimport redshift from './redshift.svg'\nimport resourcegroups from './resource-groups.svg'\nimport resourcegroupstaggingapi from './resourcegroupstaggingapi.svg'\nimport route53 from './route53.svg'\nimport route53resolver from './route53resolver.svg'\nimport s3 from './s3.svg'\nimport s3control from './s3control.svg'\nimport sagemakerruntime from './sagemaker-runtime.svg'\nimport sagemaker from './sagemaker.svg'\nimport scheduler from './scheduler.svg'\nimport secretsmanager from './secretsmanager.svg'\nimport serverlessrepo from './serverlessrepo.svg'\nimport servicediscovery from './servicediscovery.svg'\nimport ses from './ses.svg'\nimport sesv2 from './sesv2.svg'\nimport shield from './shield.svg'\nimport sns from './sns.svg'\nimport sqs from './sqs.svg'\nimport ssm from './ssm.svg'\nimport ssoadmin from './sso-admin.svg'\nimport stepfunctions from './stepfunctions.svg'\nimport sts from './sts.svg'\nimport support from './support.svg'\nimport swf from './swf.svg'\nimport textract from './textract.svg'\nimport timestreamquery from './timestream-query.svg'\nimport timestreamwrite from './timestream-write.svg'\nimport transcribe from './transcribe.svg'\nimport transfer from './transfer.svg'\nimport verifiedpermissions from './verifiedpermissions.svg'\nimport wafv2 from './wafv2.svg'\nimport xray from './xray.svg'\n\nexport type AnyServiceName = SERVICE_NAME | (string & {})\n\nexport type IconComponent = FC<React.SVGProps<SVGSVGElement>>\n\nconst ICONS_MAP = {\n [SERVICE_NAME.ACCOUNT]: account,\n [SERVICE_NAME.ACM]: acm,\n [SERVICE_NAME.ACMPCA]: acmPca,\n [SERVICE_NAME.AMPLIFY]: amplify,\n [SERVICE_NAME.APIGATEWAY]: apigateway,\n [SERVICE_NAME.APIGATEWAYMANAGEMENTAPI]: apigatewaymanagementapi,\n [SERVICE_NAME.APIGATEWAYV2]: apigatewayv2,\n [SERVICE_NAME.APPCONFIG]: appconfig,\n [SERVICE_NAME.APPCONFIGDATA]: appconfig,\n [SERVICE_NAME.APPLICATIONAUTOSCALING]: applicationautoscaling,\n [SERVICE_NAME.APPSYNC]: appsync,\n [SERVICE_NAME.ATHENA]: athena,\n [SERVICE_NAME.AUTOSCALING]: autoscaling,\n [SERVICE_NAME.BACKUP]: backup,\n [SERVICE_NAME.BATCH]: batch,\n [SERVICE_NAME.BEDROCK]: bedrock,\n [SERVICE_NAME.BEDROCKRUNTIME]: bedrock,\n [SERVICE_NAME.CE]: ce,\n [SERVICE_NAME.CLOUDCONTROL]: cloudcontrol,\n [SERVICE_NAME.CLOUDFORMATION]: cloudformation,\n [SERVICE_NAME.CLOUDFRONT]: cloudfront,\n [SERVICE_NAME.CLOUDTRAIL]: cloudtrail,\n [SERVICE_NAME.CLOUDWATCH]: cloudwatch,\n [SERVICE_NAME.CODEARTIFACT]: codeartifact,\n [SERVICE_NAME.CODEBUILD]: codebuild,\n [SERVICE_NAME.CODECOMMIT]: codecommit,\n [SERVICE_NAME.CODECONNECTIONS]: codeconnections,\n [SERVICE_NAME.CODEDEPLOY]: codedeploy,\n [SERVICE_NAME.CODEPIPELINE]: codepipeline,\n [SERVICE_NAME.CODESTARCONNECTIONS]: codestarConnections,\n [SERVICE_NAME.COGNITOIDENTITY]: cognitoidentity,\n [SERVICE_NAME.COGNITOIDP]: cognitoidp,\n [SERVICE_NAME.CONFIG]: config,\n [SERVICE_NAME.DMS]: dms,\n [SERVICE_NAME.DOCDB]: docdb,\n [SERVICE_NAME.DYNAMODB]: dynamodb,\n [SERVICE_NAME.DYNAMODBSTREAMS]: dynamodbstreams,\n [SERVICE_NAME.EC2]: ec2,\n [SERVICE_NAME.ECR]: ecr,\n [SERVICE_NAME.ECS]: ecs,\n [SERVICE_NAME.EFS]: efs,\n [SERVICE_NAME.EKS]: eks,\n [SERVICE_NAME.ELASTICACHE]: elasticache,\n [SERVICE_NAME.ELASTICBEANSTALK]: elasticbeanstalk,\n [SERVICE_NAME.ELASTICTRANSCODER]: elastictranscoder,\n [SERVICE_NAME.ELB]: elb,\n [SERVICE_NAME.ELBV2]: elbv2,\n [SERVICE_NAME.EMR]: emr,\n [SERVICE_NAME.EMRSERVERLESS]: emrserverless,\n [SERVICE_NAME.ES]: elasticsearch,\n [SERVICE_NAME.EVENTS]: events,\n [SERVICE_NAME.FIREHOSE]: firehose,\n [SERVICE_NAME.FIS]: fis,\n [SERVICE_NAME.GLACIER]: glacier,\n [SERVICE_NAME.GLUE]: glue,\n [SERVICE_NAME.IAM]: iam,\n [SERVICE_NAME.IDENTITYSTORE]: identitystore,\n [SERVICE_NAME.INFRASTRUCTURE]: infrastructure,\n [SERVICE_NAME.IOT]: iot,\n [SERVICE_NAME.IOTANALYTICS]: iotanalytics,\n [SERVICE_NAME.IOTDATA]: iotdata,\n [SERVICE_NAME.IOTWIRELESS]: iotwireless,\n [SERVICE_NAME.KAFKA]: kafka,\n [SERVICE_NAME.KINESIS]: kinesis,\n [SERVICE_NAME.KINESISANALYTICS]: kinesisanalytics,\n [SERVICE_NAME.KINESISANALYTICSV2]: kinesisanalyticsv2,\n [SERVICE_NAME.KMS]: kms,\n [SERVICE_NAME.LAKEFORMATION]: lakeformation,\n [SERVICE_NAME.LAMBDA]: lambda,\n [SERVICE_NAME.LOGS]: logs,\n [SERVICE_NAME.MANAGEDBLOCKCHAIN]: managedblockchain,\n [SERVICE_NAME.MEDIACONVERT]: mediaconvert,\n [SERVICE_NAME.MEDIASTORE]: mediastore,\n [SERVICE_NAME.MEDIASTOREDATA]: mediastoredata,\n [SERVICE_NAME.MEMORYDB]: memorydb,\n [SERVICE_NAME.MQ]: mq,\n [SERVICE_NAME.MWAA]: mwaa,\n [SERVICE_NAME.NEPTUNE]: neptune,\n [SERVICE_NAME.OPENSEARCH]: opensearch,\n [SERVICE_NAME.ORGANIZATIONS]: organizations,\n [SERVICE_NAME.PINPOINT]: pinpoint,\n [SERVICE_NAME.PIPES]: pipes,\n [SERVICE_NAME.QLDB]: qldb,\n [SERVICE_NAME.QLDBSESSION]: qldbsession,\n [SERVICE_NAME.RAM]: ram,\n [SERVICE_NAME.RDS]: rds,\n [SERVICE_NAME.RDSDATA]: rdsdata,\n [SERVICE_NAME.REDSHIFT]: redshift,\n [SERVICE_NAME.REDSHIFTDATA]: redshiftdata,\n [SERVICE_NAME.RESOURCEGROUPS]: resourcegroups,\n [SERVICE_NAME.RESOURCEGROUPSTAGGINGAPI]: resourcegroupstaggingapi,\n [SERVICE_NAME.ROUTE53]: route53,\n [SERVICE_NAME.ROUTE53RESOLVER]: route53resolver,\n [SERVICE_NAME.S3]: s3,\n [SERVICE_NAME.S3CONTROL]: s3control,\n [SERVICE_NAME.SAGEMAKER]: sagemaker,\n [SERVICE_NAME.SAGEMAKERRUNTIME]: sagemakerruntime,\n [SERVICE_NAME.SCHEDULER]: scheduler,\n [SERVICE_NAME.SECRETSMANAGER]: secretsmanager,\n [SERVICE_NAME.SERVERLESSREPO]: serverlessrepo,\n [SERVICE_NAME.SERVICEDISCOVERY]: servicediscovery,\n [SERVICE_NAME.SES]: ses,\n [SERVICE_NAME.SESV2]: sesv2,\n [SERVICE_NAME.SHIELD]: shield,\n [SERVICE_NAME.SNS]: sns,\n [SERVICE_NAME.SQS]: sqs,\n [SERVICE_NAME.SSM]: ssm,\n [SERVICE_NAME.SSOADMIN]: ssoadmin,\n [SERVICE_NAME.STEPFUNCTIONS]: stepfunctions,\n [SERVICE_NAME.STS]: sts,\n [SERVICE_NAME.SUPPORT]: support,\n [SERVICE_NAME.SWF]: swf,\n [SERVICE_NAME.TEXTRACT]: textract,\n [SERVICE_NAME.TIMESTREAMQUERY]: timestreamquery,\n [SERVICE_NAME.TIMESTREAMWRITE]: timestreamwrite,\n [SERVICE_NAME.TRANSCRIBE]: transcribe,\n [SERVICE_NAME.TRANSFER]: transfer,\n [SERVICE_NAME.VERIFIEDPERMISSIONS]: verifiedpermissions,\n [SERVICE_NAME.WAFV2]: wafv2,\n [SERVICE_NAME.XRAY]: xray,\n} as const satisfies Partial<Record<string, IconComponent>>\n\nexport const AwsServiceIconBase: FC<SVGProps<SVGSVGElement> & { service: AnyServiceName }> = memo((props) => {\n const Icon = (ICONS_MAP as Record<string, IconComponent>)[props.service] ?? ICONS_MAP.infrastructure\n return <Icon {...props} />\n})\n\nexport const supportedServiceNames = Object.keys(ICONS_MAP) as (keyof typeof ICONS_MAP)[]\n","export const SERVICE_NAME = {\n ACCESSANALYZER: 'accessanalyzer',\n ACCOUNT: 'account',\n ACM: 'acm',\n ACMPCA: 'acm-pca',\n ALEXAFORBUSINESS: 'alexaforbusiness',\n AMP: 'amp',\n AMPLIFY: 'amplify',\n AMPLIFYBACKEND: 'amplifybackend',\n AMPLIFYUIBUILDER: 'amplifyuibuilder',\n APIGATEWAY: 'apigateway',\n APIGATEWAYMANAGEMENTAPI: 'apigatewaymanagementapi',\n APIGATEWAYV2: 'apigatewayv2',\n APPCONFIG: 'appconfig',\n APPCONFIGDATA: 'appconfigdata',\n APPFABRIC: 'appfabric',\n APPFLOW: 'appflow',\n APPINTEGRATIONS: 'appintegrations',\n APPLICATIONAUTOSCALING: 'application-autoscaling',\n APPLICATIONCOSTPROFILER: 'applicationcostprofiler',\n APPLICATIONINSIGHTS: 'application-insights',\n APPMESH: 'appmesh',\n APPRUNNER: 'apprunner',\n APPSTREAM: 'appstream',\n APPSYNC: 'appsync',\n ARCZONALSHIFT: 'arc-zonal-shift',\n ATHENA: 'athena',\n AUDITMANAGER: 'auditmanager',\n AUTOSCALING: 'autoscaling',\n AUTOSCALINGPLANS: 'autoscaling-plans',\n BACKUP: 'backup',\n BACKUPGATEWAY: 'backup-gateway',\n BACKUPSTORAGE: 'backupstorage',\n BATCH: 'batch',\n BEDROCK: 'bedrock',\n BEDROCKRUNTIME: 'bedrock-runtime',\n BILLINGCONDUCTOR: 'billingconductor',\n BRAKET: 'braket',\n BUDGETS: 'budgets',\n CE: 'ce',\n CHIME: 'chime',\n CHIMESDKIDENTITY: 'chime-sdk-identity',\n CHIMESDKMEDIAPIPELINES: 'chime-sdk-media-pipelines',\n CHIMESDKMEETINGS: 'chime-sdk-meetings',\n CHIMESDKMESSAGING: 'chime-sdk-messaging',\n CHIMESDKVOICE: 'chime-sdk-voice',\n CLEANROOMS: 'cleanrooms',\n CLOUD9: 'cloud9',\n CLOUDCONTROL: 'cloudcontrol',\n CLOUDDIRECTORY: 'clouddirectory',\n CLOUDFORMATION: 'cloudformation',\n CLOUDFRONT: 'cloudfront',\n CLOUDFRONTKEYVALUESTORE: 'cloudfront-keyvaluestore',\n CLOUDHSM: 'cloudhsm',\n CLOUDHSMV2: 'cloudhsmv2',\n CLOUDSEARCH: 'cloudsearch',\n CLOUDSEARCHDOMAIN: 'cloudsearchdomain',\n CLOUDTRAIL: 'cloudtrail',\n CLOUDTRAILDATA: 'cloudtrail-data',\n CLOUDWATCH: 'cloudwatch',\n CODEARTIFACT: 'codeartifact',\n CODEBUILD: 'codebuild',\n CODECATALYST: 'codecatalyst',\n CODECOMMIT: 'codecommit',\n CODECONNECTIONS: 'codeconnections',\n CODEDEPLOY: 'codedeploy',\n CODEGURUPROFILER: 'codeguruprofiler',\n CODEGURUREVIEWER: 'codeguru-reviewer',\n CODEGURUSECURITY: 'codeguru-security',\n CODEPIPELINE: 'codepipeline',\n CODESTAR: 'codestar',\n CODESTARCONNECTIONS: 'codestar-connections',\n CODESTARNOTIFICATIONS: 'codestar-notifications',\n COGNITOIDENTITY: 'cognito-identity',\n COGNITOIDP: 'cognito-idp',\n COGNITOSYNC: 'cognito-sync',\n COMPREHEND: 'comprehend',\n COMPREHENDMEDICAL: 'comprehendmedical',\n COMPUTEOPTIMIZER: 'compute-optimizer',\n CONFIG: 'config',\n CONNECT: 'connect',\n CONNECTCAMPAIGNS: 'connectcampaigns',\n CONNECTCASES: 'connectcases',\n CONNECTCONTACTLENS: 'connect-contact-lens',\n CONNECTPARTICIPANT: 'connectparticipant',\n CONTROLTOWER: 'controltower',\n CUR: 'cur',\n CUSTOMERPROFILES: 'customer-profiles',\n DATABREW: 'databrew',\n DATAEXCHANGE: 'dataexchange',\n DATAPIPELINE: 'datapipeline',\n DATASYNC: 'datasync',\n DATAZONE: 'datazone',\n DAX: 'dax',\n DETECTIVE: 'detective',\n DEVICEFARM: 'devicefarm',\n DEVOPSGURU: 'devops-guru',\n DIRECTCONNECT: 'directconnect',\n DISCOVERY: 'discovery',\n DLM: 'dlm',\n DMS: 'dms',\n DOCDB: 'docdb',\n DOCDBELASTIC: 'docdb-elastic',\n DRS: 'drs',\n DS: 'ds',\n DYNAMODB: 'dynamodb',\n DYNAMODBSTREAMS: 'dynamodbstreams',\n EBS: 'ebs',\n EC2: 'ec2',\n EC2INSTANCECONNECT: 'ec2-instance-connect',\n ECR: 'ecr',\n ECRPUBLIC: 'ecr-public',\n ECS: 'ecs',\n EFS: 'efs',\n EKS: 'eks',\n ELASTICACHE: 'elasticache',\n ELASTICBEANSTALK: 'elasticbeanstalk',\n ELASTICINFERENCE: 'elastic-inference',\n ELASTICTRANSCODER: 'elastictranscoder',\n ELB: 'elb',\n ELBV2: 'elbv2',\n EMR: 'emr',\n EMRCONTAINERS: 'emr-containers',\n EMRSERVERLESS: 'emr-serverless',\n ENTITYRESOLUTION: 'entityresolution',\n ES: 'es',\n EVENTS: 'events',\n EVIDENTLY: 'evidently',\n FINSPACE: 'finspace',\n FINSPACEDATA: 'finspace-data',\n FIREHOSE: 'firehose',\n FIS: 'fis',\n FMS: 'fms',\n FORECAST: 'forecast',\n FORECASTQUERY: 'forecastquery',\n FRAUDDETECTOR: 'frauddetector',\n FSX: 'fsx',\n GAMELIFT: 'gamelift',\n GLACIER: 'glacier',\n GLOBALACCELERATOR: 'globalaccelerator',\n GLUE: 'glue',\n GRAFANA: 'grafana',\n GREENGRASS: 'greengrass',\n GREENGRASSV2: 'greengrassv2',\n GROUNDSTATION: 'groundstation',\n GUARDDUTY: 'guardduty',\n HEALTH: 'health',\n HEALTHLAKE: 'healthlake',\n HONEYCODE: 'honeycode',\n IAM: 'iam',\n IDENTITYSTORE: 'identitystore',\n IMAGEBUILDER: 'imagebuilder',\n IMPORTEXPORT: 'importexport',\n INFRASTRUCTURE: 'infrastructure',\n INSPECTOR: 'inspector',\n INSPECTOR2: 'inspector2',\n INSPECTORSCAN: 'inspector-scan',\n INTERNETMONITOR: 'internetmonitor',\n IOT: 'iot',\n IOT1CLICKDEVICES: 'iot1click-devices',\n IOT1CLICKPROJECTS: 'iot1click-projects',\n IOTANALYTICS: 'iotanalytics',\n IOTDATA: 'iot-data',\n IOTDEVICEADVISOR: 'iotdeviceadvisor',\n IOTEVENTS: 'iotevents',\n IOTEVENTSDATA: 'iotevents-data',\n IOTFLEETHUB: 'iotfleethub',\n IOTFLEETWISE: 'iotfleetwise',\n IOTJOBSDATA: 'iot-jobs-data',\n IOTROBORUNNER: 'iot-roborunner',\n IOTSECURETUNNELING: 'iotsecuretunneling',\n IOTSITEWISE: 'iotsitewise',\n IOTTHINGSGRAPH: 'iotthingsgraph',\n IOTTWINMAKER: 'iottwinmaker',\n IOTWIRELESS: 'iotwireless',\n IVS: 'ivs',\n IVSCHAT: 'ivschat',\n IVSREALTIME: 'ivs-realtime',\n KAFKA: 'kafka',\n KAFKACONNECT: 'kafkaconnect',\n KENDRA: 'kendra',\n KENDRARANKING: 'kendra-ranking',\n KEYSPACES: 'keyspaces',\n KINESIS: 'kinesis',\n KINESISANALYTICS: 'kinesisanalytics',\n KINESISANALYTICSV2: 'kinesisanalyticsv2',\n KINESISVIDEO: 'kinesisvideo',\n KINESISVIDEOARCHIVEDMEDIA: 'kinesis-video-archived-media',\n KINESISVIDEOMEDIA: 'kinesis-video-media',\n KINESISVIDEOSIGNALING: 'kinesis-video-signaling',\n KINESISVIDEOWEBRTCSTORAGE: 'kinesis-video-webrtc-storage',\n KMS: 'kms',\n LAKEFORMATION: 'lakeformation',\n LAMBDA: 'lambda',\n LAUNCHWIZARD: 'launch-wizard',\n LEXMODELS: 'lex-models',\n LEXRUNTIME: 'lex-runtime',\n LEXV2MODELS: 'lexv2-models',\n LEXV2RUNTIME: 'lexv2-runtime',\n LICENSEMANAGER: 'license-manager',\n LICENSEMANAGERLINUXSUBSCRIPTIONS: 'license-manager-linux-subscriptions',\n LICENSEMANAGERUSERSUBSCRIPTIONS: 'license-manager-user-subscriptions',\n LIGHTSAIL: 'lightsail',\n LOCATION: 'location',\n LOGS: 'logs',\n LOOKOUTEQUIPMENT: 'lookoutequipment',\n LOOKOUTMETRICS: 'lookoutmetrics',\n LOOKOUTVISION: 'lookoutvision',\n M2: 'm2',\n MACHINELEARNING: 'machinelearning',\n MACIE2: 'macie2',\n MANAGEDBLOCKCHAIN: 'managedblockchain',\n MANAGEDBLOCKCHAINQUERY: 'managedblockchain-query',\n MARKETPLACECATALOG: 'marketplace-catalog',\n MARKETPLACECOMMERCEANALYTICS: 'marketplacecommerceanalytics',\n MARKETPLACEENTITLEMENT: 'marketplace-entitlement',\n MEDIACONNECT: 'mediaconnect',\n MEDIACONVERT: 'mediaconvert',\n MEDIALIVE: 'medialive',\n MEDIAPACKAGE: 'mediapackage',\n MEDIAPACKAGEV2: 'mediapackagev2',\n MEDIAPACKAGEVOD: 'mediapackage-vod',\n MEDIASTORE: 'mediastore',\n MEDIASTOREDATA: 'mediastore-data',\n MEDIATAILOR: 'mediatailor',\n MEDICALIMAGING: 'medical-imaging',\n MEMORYDB: 'memorydb',\n METERINGMARKETPLACE: 'meteringmarketplace',\n MGH: 'mgh',\n MGN: 'mgn',\n MIGRATIONHUBCONFIG: 'migrationhub-config',\n MIGRATIONHUBORCHESTRATOR: 'migrationhuborchestrator',\n MIGRATIONHUBREFACTORSPACES: 'migration-hub-refactor-spaces',\n MIGRATIONHUBSTRATEGY: 'migrationhubstrategy',\n MOBILE: 'mobile',\n MQ: 'mq',\n MTURK: 'mturk',\n MWAA: 'mwaa',\n NEPTUNE: 'neptune',\n NEPTUNEDATA: 'neptunedata',\n NETWORKFIREWALL: 'network-firewall',\n NETWORKMANAGER: 'networkmanager',\n NIMBLE: 'nimble',\n OAM: 'oam',\n OMICS: 'omics',\n OPENSEARCH: 'opensearch',\n OPENSEARCHSERVERLESS: 'opensearchserverless',\n OPSWORKS: 'opsworks',\n OPSWORKSCM: 'opsworkscm',\n ORGANIZATIONS: 'organizations',\n OSIS: 'osis',\n OUTPOSTS: 'outposts',\n PANORAMA: 'panorama',\n PAYMENTCRYPTOGRAPHY: 'payment-cryptography',\n PAYMENTCRYPTOGRAPHYDATA: 'payment-cryptography-data',\n PCACONNECTORAD: 'pca-connector-ad',\n PERSONALIZE: 'personalize',\n PERSONALIZEEVENTS: 'personalize-events',\n PERSONALIZERUNTIME: 'personalize-runtime',\n PI: 'pi',\n PINPOINT: 'pinpoint',\n PINPOINTEMAIL: 'pinpoint-email',\n PINPOINTSMSVOICE: 'pinpoint-sms-voice',\n PINPOINTSMSVOICEV2: 'pinpoint-sms-voice-v2',\n PIPES: 'pipes',\n POLLY: 'polly',\n PRICING: 'pricing',\n PRIVATENETWORKS: 'privatenetworks',\n PROTON: 'proton',\n QLDB: 'qldb',\n QLDBSESSION: 'qldb-session',\n QUICKSIGHT: 'quicksight',\n RAM: 'ram',\n RBIN: 'rbin',\n RDS: 'rds',\n RDSDATA: 'rds-data',\n REDSHIFT: 'redshift',\n REDSHIFTDATA: 'redshift-data',\n REDSHIFTSERVERLESS: 'redshift-serverless',\n REKOGNITION: 'rekognition',\n RESILIENCEHUB: 'resiliencehub',\n RESOURCEEXPLORER2: 'resource-explorer-2',\n RESOURCEGROUPS: 'resource-groups',\n RESOURCEGROUPSTAGGINGAPI: 'resourcegroupstaggingapi',\n ROBOMAKER: 'robomaker',\n ROLESANYWHERE: 'rolesanywhere',\n ROUTE53: 'route53',\n ROUTE53DOMAINS: 'route53domains',\n ROUTE53RECOVERYCLUSTER: 'route53-recovery-cluster',\n ROUTE53RECOVERYCONTROLCONFIG: 'route53-recovery-control-config',\n ROUTE53RECOVERYREADINESS: 'route53-recovery-readiness',\n ROUTE53RESOLVER: 'route53resolver',\n RUM: 'rum',\n S3: 's3',\n S3CONTROL: 's3control',\n S3OUTPOSTS: 's3outposts',\n SAGEMAKER: 'sagemaker',\n SAGEMAKERA2IRUNTIME: 'sagemaker-a2i-runtime',\n SAGEMAKEREDGE: 'sagemaker-edge',\n SAGEMAKERFEATURESTORERUNTIME: 'sagemaker-featurestore-runtime',\n SAGEMAKERGEOSPATIAL: 'sagemaker-geospatial',\n SAGEMAKERMETRICS: 'sagemaker-metrics',\n SAGEMAKERRUNTIME: 'sagemaker-runtime',\n SAVINGSPLANS: 'savingsplans',\n SCHEDULER: 'scheduler',\n SCHEMAS: 'schemas',\n SDB: 'sdb',\n SECRETSMANAGER: 'secretsmanager',\n SECURITYHUB: 'securityhub',\n SECURITYLAKE: 'securitylake',\n SERVERLESSREPO: 'serverlessrepo',\n SERVICECATALOG: 'servicecatalog',\n SERVICECATALOGAPPREGISTRY: 'servicecatalog-appregistry',\n SERVICEDISCOVERY: 'servicediscovery',\n SERVICEQUOTAS: 'service-quotas',\n SES: 'ses',\n SESV2: 'sesv2',\n SHIELD: 'shield',\n SIGNER: 'signer',\n SIMSPACEWEAVER: 'simspaceweaver',\n SMS: 'sms',\n SMSVOICE: 'sms-voice',\n SNOWBALL: 'snowball',\n SNOWDEVICEMANAGEMENT: 'snow-device-management',\n SNOWFLAKE: 'snowflake', // special service that is about our snowflake emulator\n SNS: 'sns',\n SQS: 'sqs',\n SSM: 'ssm',\n SSMCONTACTS: 'ssm-contacts',\n SSMINCIDENTS: 'ssm-incidents',\n SSMSAP: 'ssm-sap',\n SSO: 'sso',\n SSOADMIN: 'sso-admin',\n SSOOIDC: 'sso-oidc',\n STEPFUNCTIONS: 'stepfunctions',\n STORAGEGATEWAY: 'storagegateway',\n STS: 'sts',\n SUPPORT: 'support',\n SUPPORTAPP: 'support-app',\n SWF: 'swf',\n SYNTHETICS: 'synthetics',\n TEXTRACT: 'textract',\n TIMESTREAMQUERY: 'timestream-query',\n TIMESTREAMWRITE: 'timestream-write',\n TNB: 'tnb',\n TRANSCRIBE: 'transcribe',\n TRANSFER: 'transfer',\n TRANSLATE: 'translate',\n TRUSTEDADVISOR: 'trustedadvisor',\n VERIFIEDPERMISSIONS: 'verifiedpermissions',\n VOICEID: 'voice-id',\n VPCLATTICE: 'vpc-lattice',\n WAF: 'waf',\n WAFREGIONAL: 'waf-regional',\n WAFV2: 'wafv2',\n WELLARCHITECTED: 'wellarchitected',\n WISDOM: 'wisdom',\n WORKDOCS: 'workdocs',\n WORKLINK: 'worklink',\n WORKMAIL: 'workmail',\n WORKMAILMESSAGEFLOW: 'workmailmessageflow',\n WORKSPACES: 'workspaces',\n WORKSPACESWEB: 'workspaces-web',\n XRAY: 'xray',\n} as const\n\nexport type SERVICE_NAME = (typeof SERVICE_NAME)[keyof typeof SERVICE_NAME]\n","import * as React from \"react\";\nconst SvgAccount = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 40 40\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture-Group/32/AWS-Account_32\"}</title><g id=\"Icon-Architecture-Group/32/AWS-Account_32\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"#e7157b\" d=\"M0 0h40v40H0z\" /><path id=\"Fill-1\" fill=\"#fff\" d=\"M24.5 22c1.93 0 3.5 1.57 3.5 3.5S26.43 29 24.5 29 21 27.43 21 25.5s1.57-3.5 3.5-3.5m0 8c2.481 0 4.5-2.019 4.5-4.5S26.981 21 24.5 21a4.505 4.505 0 0 0-4.5 4.5c0 2.481 2.019 4.5 4.5 4.5m1.523-19.12L29.084 17h-6.121zM22.154 18h7.739a.502.502 0 0 0 .447-.724l-3.869-7.738c-.17-.338-.725-.338-.895 0l-3.869 7.738a.503.503 0 0 0 .447.724M11 23h7v-7h-7zm-.5 1h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5M8 32h24V8H8zM32.5 7h-25a.5.5 0 0 0-.5.5v25a.5.5 0 0 0 .5.5h25a.5.5 0 0 0 .5-.5v-25a.5.5 0 0 0-.5-.5\" /></g></svg>;\nexport default SvgAccount;","import * as React from \"react\";\nconst SvgAcmPca = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Private-Certificate-Authority_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-Private-Certificate-Authority_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"#dd344c\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Fill-8\" fill=\"#fff\" d=\"M67 17h-3v2h2v47h-5v2h6a1 1 0 0 0 1-1V18a1 1 0 0 0-1-1M19 64h-2v3a1 1 0 0 0 1 1h35v-2H19zm16.5-24a1 1 0 0 0 .707-.293l8-8-1.414-1.414-7.293 7.293-3.293-3.293-1.414 1.414 4 4A1 1 0 0 0 35.5 40M26 34.5C26 40.841 31.159 46 37.5 46S49 40.841 49 34.5 43.841 23 37.5 23 26 28.159 26 34.5m-2 0C24 27.056 30.056 21 37.5 21S51 27.056 51 34.5 44.944 48 37.5 48 24 41.944 24 34.5M14 17h46v-3H14zm46 43V19H14v41h34v2H13a1 1 0 0 1-1-1V13a1 1 0 0 1 1-1h48a1 1 0 0 1 1 1v48a1 1 0 0 1-1 1h-5v-2zm-33-3v-9h2v7.473l8.101-3.533a1 1 0 0 1 .798 0L46 55.473V48h2v9a1 1 0 0 1-1.399.917L37.5 53.948l-9.101 3.969A.999.999 0 0 1 27 57\" /></g></svg>;\nexport default SvgAcmPca;","import * as React from \"react\";\nconst SvgAcm = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 40 40\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/32/Arch_AWS-Certificate-Manager_32\"}</title><defs><linearGradient id=\"linearGradient-acm\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#bd0816\" /><stop offset=\"100%\" stopColor=\"#ff5252\" /></linearGradient></defs><g id=\"Icon-Architecture/32/Arch_AWS-Certificate-Manager_32\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"url(#linearGradient-acm)\"><path id=\"Rectangle\" d=\"M0 0h40v40H0z\" /></g><path id=\"AWS-Certificate-Manager_Icon_32_Squid\" fill=\"#fff\" d=\"M17.832 19.63c.133.12.19.3.152.476l-.513 2.362 2.27-1.391a.5.5 0 0 1 .52 0l2.252 1.388-.498-2.367a.5.5 0 0 1 .15-.47l2.014-1.84-2.665-.515a.5.5 0 0 1-.352-.27l-1.166-2.387-1.194 2.394a.5.5 0 0 1-.35.265l-2.657.518zm-1.58 3.765.701-3.22-2.562-2.312a.498.498 0 0 1 .237-.856l3.393-.66 1.534-3.075c.085-.17.286-.306.447-.276.19.001.362.11.445.28l1.5 3.068 3.39.656a.498.498 0 0 1 .241.854l-2.533 2.316.68 3.223a.498.498 0 0 1-.748.525L20 22.083l-3.002 1.84a.49.49 0 0 1-.548-.018.5.5 0 0 1-.198-.51m16.727-13.3-.003-2.101H6.994v2.101zM34 32.502a.496.496 0 0 1-.497.498h-3.566v-.994h3.07L32.98 11.09H6.994v20.917h18.968V33H6.497a.5.5 0 0 1-.352-.145.5.5 0 0 1-.145-.352V7.497C6 7.223 6.222 7 6.497 7H33.47c.276 0 .497.223.497.497zm-22.942-2.527h3.974v-.993h-3.974zm5.962.023h6.955v-.993H17.02zm-5.962-3h3.974v-.993h-3.974zm5.962 0h10.93v-.993H17.02z\" /></g></svg>;\nexport default SvgAcm;","import * as React from \"react\";\nconst SvgAmplify = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Amplify-Console_64\"}</title><defs><linearGradient id=\"linearGradient-amp\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#bd0816\" /><stop offset=\"100%\" stopColor=\"#ff5252\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Amplify-Console_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Mobile\" fill=\"url(#linearGradient-amp)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Amplify-Console_Icon_64_Squid\" fill=\"#fff\" d=\"M59.61 59.179 39.508 20h5.75l20.106 39.179zm8.279.543-21.13-41.178a1 1 0 0 0-.89-.544h-8a1 1 0 0 0-.89 1.457l21.13 41.179c.172.333.516.543.89.543h8a.998.998 0 0 0 .89-1.457m-20.29-.543L32.215 30.332l3.15-5.211 17.976 34.058zm-11.29-36.555a1 1 0 0 0-.854-.533 1 1 0 0 0-.885.482l-4.36 7.211a1 1 0 0 0-.028.988L46.117 60.65c.174.325.514.529.883.529h8a1 1 0 0 0 .884-1.467zM14.774 59.179 28.885 35.84l2.875 5.389-6.626 11.449A1.002 1.002 0 0 0 26 54.179h12.667l2.666 5zm25.376-6.471a1 1 0 0 0-.883-.529H27.734l6.035-10.429a1 1 0 0 0 .018-.971l-3.964-7.433a1 1 0 0 0-.856-.529.96.96 0 0 0-.882.482L12.144 59.661A1.003 1.003 0 0 0 13 61.179h30a1 1 0 0 0 .882-1.471z\" /></g></svg>;\nexport default SvgAmplify;","import * as React from \"react\";\nconst SvgApigateway = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_ Amazon-API-Gateway_64\"}</title><defs><linearGradient id=\"linearGradient-agw\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_-Amazon-API-Gateway_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-agw)\" d=\"M0 0h80v80H0z\" /><g id=\"Icon-Service/64/Amazon-API-Gateway_64\" fill=\"#fff\" transform=\"translate(8 8)\"><path id=\"Amazon-API-Gateway_Icon_64_Squid\" d=\"M26.065 47.632H29v-2.017h-2.935zm4.935 0h3v-2.017h-3zM19 6.63 6 13.082v40.111l13 4.397zm2 12.764v26.222h3v2.017h-3v11.36c0 .324-.155.629-.416.818a1 1 0 0 1-.902.138l-15-5.072A1.01 1.01 0 0 1 4 53.92V12.454c0-.384.217-.735.559-.905l15-7.445a.99.99 0 0 1 .969.049c.293.183.472.507.472.856v12.367h3v2.017zm15 28.24h3v-2.018h-3zm.065-28.24H39v-2.017h-2.935zm-5 0H34v-2.017h-2.935zm-5 0H29v-2.017h-2.935zM58 13.083 45 6.628v50.96l13-4.396zm2 40.837c0 .432-.274.817-.682.956l-15 5.072a.99.99 0 0 1-.902-.138 1.01 1.01 0 0 1-.416-.819V47.632h-1.935v-2.017H43V19.393h-1.935v-2.017H43V5.01c0-.35.179-.673.472-.856a.99.99 0 0 1 .969-.049l15 7.445c.342.17.559.521.559.905zM34.934 25.807l-1.868-.724-5 13.11 1.868.725zm6.773 6.402a1.013 1.013 0 0 0 0-1.426l-4-4.034-1.414 1.426 3.293 3.32-3.293 3.322 1.414 1.426zm-15.414 4.034-4-4.034a1.013 1.013 0 0 1 0-1.426l4-4.034 1.414 1.426-3.293 3.32 3.293 3.322z\" /></g></g></svg>;\nexport default SvgApigateway;","import * as React from \"react\";\nconst SvgApigatewaymanagementapi = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_ Amazon-API-Gateway_64\"}</title><defs><linearGradient id=\"linearGradient-agw\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_-Amazon-API-Gateway_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-agw)\" d=\"M0 0h80v80H0z\" /><g id=\"Icon-Service/64/Amazon-API-Gateway_64\" fill=\"#fff\" transform=\"translate(8 8)\"><path id=\"Amazon-API-Gateway_Icon_64_Squid\" d=\"M26.065 47.632H29v-2.017h-2.935zm4.935 0h3v-2.017h-3zM19 6.63 6 13.082v40.111l13 4.397zm2 12.764v26.222h3v2.017h-3v11.36c0 .324-.155.629-.416.818a1 1 0 0 1-.902.138l-15-5.072A1.01 1.01 0 0 1 4 53.92V12.454c0-.384.217-.735.559-.905l15-7.445a.99.99 0 0 1 .969.049c.293.183.472.507.472.856v12.367h3v2.017zm15 28.24h3v-2.018h-3zm.065-28.24H39v-2.017h-2.935zm-5 0H34v-2.017h-2.935zm-5 0H29v-2.017h-2.935zM58 13.083 45 6.628v50.96l13-4.396zm2 40.837c0 .432-.274.817-.682.956l-15 5.072a.99.99 0 0 1-.902-.138 1.01 1.01 0 0 1-.416-.819V47.632h-1.935v-2.017H43V19.393h-1.935v-2.017H43V5.01c0-.35.179-.673.472-.856a.99.99 0 0 1 .969-.049l15 7.445c.342.17.559.521.559.905zM34.934 25.807l-1.868-.724-5 13.11 1.868.725zm6.773 6.402a1.013 1.013 0 0 0 0-1.426l-4-4.034-1.414 1.426 3.293 3.32-3.293 3.322 1.414 1.426zm-15.414 4.034-4-4.034a1.013 1.013 0 0 1 0-1.426l4-4.034 1.414 1.426-3.293 3.32 3.293 3.322z\" /></g></g></svg>;\nexport default SvgApigatewaymanagementapi;","import * as React from \"react\";\nconst SvgApigatewayv2 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_ Amazon-API-Gateway_64\"}</title><defs><linearGradient id=\"linearGradient-agw\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_-Amazon-API-Gateway_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-agw)\" d=\"M0 0h80v80H0z\" /><g id=\"Icon-Service/64/Amazon-API-Gateway_64\" fill=\"#fff\" transform=\"translate(8 8)\"><path id=\"Amazon-API-Gateway_Icon_64_Squid\" d=\"M26.065 47.632H29v-2.017h-2.935zm4.935 0h3v-2.017h-3zM19 6.63 6 13.082v40.111l13 4.397zm2 12.764v26.222h3v2.017h-3v11.36c0 .324-.155.629-.416.818a1 1 0 0 1-.902.138l-15-5.072A1.01 1.01 0 0 1 4 53.92V12.454c0-.384.217-.735.559-.905l15-7.445a.99.99 0 0 1 .969.049c.293.183.472.507.472.856v12.367h3v2.017zm15 28.24h3v-2.018h-3zm.065-28.24H39v-2.017h-2.935zm-5 0H34v-2.017h-2.935zm-5 0H29v-2.017h-2.935zM58 13.083 45 6.628v50.96l13-4.396zm2 40.837c0 .432-.274.817-.682.956l-15 5.072a.99.99 0 0 1-.902-.138 1.01 1.01 0 0 1-.416-.819V47.632h-1.935v-2.017H43V19.393h-1.935v-2.017H43V5.01c0-.35.179-.673.472-.856a.99.99 0 0 1 .969-.049l15 7.445c.342.17.559.521.559.905zM34.934 25.807l-1.868-.724-5 13.11 1.868.725zm6.773 6.402a1.013 1.013 0 0 0 0-1.426l-4-4.034-1.414 1.426 3.293 3.32-3.293 3.322 1.414 1.426zm-15.414 4.034-4-4.034a1.013 1.013 0 0 1 0-1.426l4-4.034 1.414 1.426-3.293 3.32 3.293 3.322z\" /></g></g></svg>;\nexport default SvgApigatewayv2;","import * as React from \"react\";\nconst SvgAppconfig = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-App-Config_64\"}</title><defs><linearGradient id=\"linearGradient-1\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-App-Config_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Management-Governance\" fill=\"url(#linearGradient-1)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-App-Config_Icon_64_Squid\" fill=\"#fff\" d=\"M50.871 37.366c0 4.687-3.813 8.5-8.5 8.5s-8.5-3.813-8.5-8.5 3.813-8.5 8.5-8.5 8.5 3.813 8.5 8.5m2 0c0-5.79-4.71-10.5-10.5-10.5s-10.5 4.71-10.5 10.5 4.71 10.5 10.5 10.5 10.5-4.71 10.5-10.5M47.91 62.418a1 1 0 0 0 .272-.744l-.183-3.201a21.7 21.7 0 0 0 5.266-2.182l2.135 2.394c.183.205.443.326.718.334a.94.94 0 0 0 .735-.293l6.849-6.848a1 1 0 0 0-.041-1.453l-2.402-2.142a21.7 21.7 0 0 0 2.178-5.26l3.212.184a.997.997 0 0 0 1.058-.998v-9.685a1.005 1.005 0 0 0-1.057-.999l-3.216.183a21.7 21.7 0 0 0-2.179-5.255l2.406-2.146a1 1 0 0 0 .041-1.453l-6.849-6.848a.96.96 0 0 0-.735-.293 1 1 0 0 0-.718.334l-2.153 2.413a21.6 21.6 0 0 0-5.248-2.176l.183-3.227a1 1 0 0 0-.272-.743 1 1 0 0 0-.727-.314h-9.684a1 1 0 0 0-.998 1.057l.182 3.225a21.7 21.7 0 0 0-5.251 2.174l-2.15-2.409a1 1 0 0 0-.718-.334.98.98 0 0 0-.735.293l-6.849 6.848a1.002 1.002 0 0 0 .041 1.453l2.412 2.151a21.7 21.7 0 0 0-2.182 5.25l-3.219-.183a1 1 0 0 0-1.057.999v9.685a1 1 0 0 0 1.059.998l3.951-.231-.117-1.997-2.893.17v-7.567l2.991.17c.488.024.923-.301 1.032-.777a19.7 19.7 0 0 1 2.565-6.176 1 1 0 0 0-.179-1.281l-2.241-1.999 5.352-5.351 1.997 2.239a1 1 0 0 0 1.279.179 19.7 19.7 0 0 1 6.178-2.556 1 1 0 0 0 .778-1.033L38.558 14h7.567l-.17 2.999a1 1 0 0 0 .777 1.033 19.6 19.6 0 0 1 6.174 2.559c.411.258.954.185 1.28-.18l2.001-2.243 5.352 5.351-2.235 1.994a1 1 0 0 0-.18 1.28 19.7 19.7 0 0 1 2.562 6.181 1.01 1.01 0 0 0 1.033.778l2.988-.17v7.568l-2.984-.171a1.01 1.01 0 0 0-1.034.778 19.7 19.7 0 0 1-2.561 6.185 1 1 0 0 0 .18 1.28l2.231 1.99-5.351 5.352-1.984-2.224a1 1 0 0 0-1.28-.18 19.7 19.7 0 0 1-6.192 2.565 1 1 0 0 0-.777 1.033l.17 2.973h-7.534l.136-1.546-1.992-.176-.232 2.634a1 1 0 0 0 .996 1.088h9.684a1 1 0 0 0 .727-.313m-10.809-7.864-1.375-1.452-12.511 11.854 1.375 1.452zm-11.855-7.9-1.371-1.456L12.68 55.735l1.371 1.456zM13.414 67.706 12 66.292l19.756-19.756 1.414 1.414z\" /></g></svg>;\nexport default SvgAppconfig;","import * as React from \"react\";\nconst SvgApplicationAutoscaling = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Auto-Scaling_16\"}</title><defs><linearGradient id=\"linearGradient-asc\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Auto-Scaling_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Management-Governance\" fill=\"url(#linearGradient-asc)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Auto-Scaling_Icon_16_Squid\" fill=\"#fff\" d=\"M10.987 13.484h3v-3h-3zm3.5-4a.5.5 0 0 1 .5.5v4c0 .277-.223.5-.5.5h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5zM20 11.46h-1.949l1.337-1.644-.776-.63-2 2.46a.5.5 0 0 0-.005.623l2 2.541.786-.618-1.363-1.732H20zM6.388 9.185l-.776.63 1.337 1.644H5v1h1.97l-1.363 1.732.786.618 2-2.54a.5.5 0 0 0-.005-.625zm6.599 8.278V15.5h-1v1.956l-1.674-1.346-.626.78 2.487 2a.5.5 0 0 0 .625.001l2.513-2-.624-.782zM10.313 7.89l-.626-.78 2.487-2a.5.5 0 0 1 .624-.001l2.513 1.988-.622.784-1.702-1.347V8.5h-1V6.543z\" /></g></svg>;\nexport default SvgApplicationAutoscaling;","import * as React from \"react\";\nconst SvgAppsync = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-AppSync_64\"}</title><defs><linearGradient id=\"linearGradient-app\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-AppSync_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Application-Integration\" fill=\"url(#linearGradient-app)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><g id=\"Icon-Service/64/AWS-AppSync\" fill=\"#fff\" transform=\"translate(8 8)\"><path id=\"AWS-AppSync-Icon_64_Squid\" d=\"m58.52 19.98-5.506-1.39c5.464 9.526 4.596 22.01-2.388 30.012C45.854 54.071 38.772 57 31.652 57c-4.143 0-8.299-.992-12.021-3.051l.952-1.758c9.329 5.163 21.606 3.05 28.556-4.914 6.46-7.4 7.225-18.982 2.1-27.795l-1.429 5.78-1.922-.486 1.982-8.014a.987.987 0 0 1 1.201-.728L59 18.037zM12.758 43.588 14.19 37.8l1.922.486L14.13 46.3a.99.99 0 0 1-1.201.73L5 45.025l.48-1.944 5.497 1.389c-5.421-9.366-4.536-20.968 2.482-29.01 7.658-8.772 20.658-11.02 30.911-5.345l-.952 1.757c-9.449-5.228-21.423-3.162-28.472 4.914-6.475 7.42-7.261 18.156-2.188 26.8m10.638-7.867c1.267 0 2.298 1.042 2.298 2.323s-1.031 2.322-2.298 2.322-2.298-1.042-2.298-2.322 1.03-2.323 2.298-2.323m7.468-8.87c.364.101.74.173 1.136.173.372 0 .726-.063 1.07-.154l3.698 7.984a4.3 4.3 0 0 0-1.286 2.188h-7.934a4.3 4.3 0 0 0-1.253-2.16zM32 20.374c1.268 0 2.298 1.041 2.298 2.322S33.268 25.02 32 25.02c-1.267 0-2.297-1.042-2.297-2.323s1.03-2.322 2.297-2.322m9.932 17.668c0 1.28-1.03 2.322-2.298 2.322-1.267 0-2.298-1.042-2.298-2.322s1.03-2.323 2.298-2.323c1.267 0 2.298 1.042 2.298 2.323M23.396 42.37c2.017 0 3.703-1.423 4.152-3.324h7.934c.45 1.901 2.135 3.324 4.152 3.324 2.36 0 4.28-1.94 4.28-4.326s-1.92-4.327-4.28-4.327c-.392 0-.765.072-1.125.172l-3.688-7.963a4.32 4.32 0 0 0 1.46-3.228c0-2.386-1.921-4.326-4.281-4.326s-4.28 1.94-4.28 4.326a4.32 4.32 0 0 0 1.408 3.184l-4.563 8.02a4.2 4.2 0 0 0-1.169-.185c-2.36 0-4.28 1.94-4.28 4.327 0 2.385 1.92 4.326 4.28 4.326\" /></g></g></svg>;\nexport default SvgAppsync;","import * as React from \"react\";\nconst SvgAthena = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Athena_64\"}</title><defs><linearGradient id=\"linearGradient-ath\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Athena_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-ath)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Athena_Icon_64_Squid\" fill=\"#fff\" d=\"M38.295 27.227c4.492 0 6.953 1.006 7.401 1.51-.448.506-2.909 1.512-7.4 1.512-4.493 0-6.954-1.006-7.402-1.511.448-.505 2.909-1.511 7.401-1.511m-.511 8.055a.509.509 0 0 1 .222-.96c.08 0 .154.022.223.058zm5.783 8.309c-.074.06-.245.177-.596.318a8 8 0 0 1-1.103.337c-1.115.262-2.487.406-3.863.406-3.008 0-5.104-.65-5.556-1.053L31.116 31.15c2.044.836 5.054 1.113 7.18 1.113 2.088 0 5.033-.269 7.076-1.073l-.797 5.475c-1.502-.567-3.376-1.389-5.151-2.253a1.484 1.484 0 0 0-1.418-1.088c-.818 0-1.483.676-1.483 1.505 0 .831.665 1.506 1.483 1.506.194 0 .378-.04.547-.109 2.481 1.225 4.33 2.011 5.722 2.496zM28.872 28.847l1.607 15.003c.113 2.784 7.22 2.817 7.526 2.817 1.522 0 3.052-.164 4.31-.458.515-.12.981-.264 1.385-.426 1.174-.471 1.789-1.114 1.832-1.909l.669-4.598c.455.094.827.135 1.124.135.934 0 1.18-.383 1.35-.647.179-.278.23-.62.147-.963-.19-.79-1.305-1.83-2.05-2.447l.941-6.469-.009-.001c.004-.05.02-.096.02-.146 0-2.784-5.927-3.526-9.429-3.526s-9.43.742-9.43 3.526c0 .037.014.07.016.108zm8.964-8.787c8.65 0 15.689 7.144 15.689 15.925 0 8.78-7.038 15.924-15.69 15.924s-15.69-7.143-15.69-15.924 7.038-15.925 15.69-15.925m-24.85 21.775v2.015h8.932v-.12c2.856 6.02 8.908 10.194 15.918 10.194 9.744 0 17.674-8.047 17.674-17.94 0-9.892-7.93-17.94-17.674-17.94-7.583 0-14.045 4.88-16.55 11.701h-8.3v2.015h7.69a18 18 0 0 0-.506 4.03H11v2.015h9.252c.14 1.4.454 2.743.893 4.03zm54.094 24.2c-1.201 1.221-3.283 1.228-4.483.011L51.933 55.221a24 24 0 0 0 4.56-4.545l10.599 10.81c.596.606.925 1.414.923 2.273a3.21 3.21 0 0 1-.935 2.276m1.417-5.972L57.662 49.01a24.1 24.1 0 0 0 3.803-13.025c0-13.226-10.6-23.985-23.63-23.985-9.362 0-17.852 5.62-21.631 14.317l1.816.812c3.461-7.966 11.239-13.114 19.816-13.114 11.935 0 21.644 9.855 21.644 21.97 0 12.113-9.71 21.97-21.644 21.97-7.974 0-15.279-4.43-19.067-11.561l-1.747.957c4.134 7.783 12.11 12.618 20.814 12.618a23.2 23.2 0 0 0 12.424-3.595l10.934 11.098A5.07 5.07 0 0 0 64.828 69c1.38 0 2.679-.547 3.653-1.537a5.23 5.23 0 0 0 1.519-3.7 5.22 5.22 0 0 0-1.503-3.7\" /></g></svg>;\nexport default SvgAthena;","import * as React from \"react\";\nconst SvgAutoscaling = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Auto-Scaling_16\"}</title><defs><linearGradient id=\"linearGradient-asc\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Auto-Scaling_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Management-Governance\" fill=\"url(#linearGradient-asc)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Auto-Scaling_Icon_16_Squid\" fill=\"#fff\" d=\"M10.987 13.484h3v-3h-3zm3.5-4a.5.5 0 0 1 .5.5v4c0 .277-.223.5-.5.5h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5zM20 11.46h-1.949l1.337-1.644-.776-.63-2 2.46a.5.5 0 0 0-.005.623l2 2.541.786-.618-1.363-1.732H20zM6.388 9.185l-.776.63 1.337 1.644H5v1h1.97l-1.363 1.732.786.618 2-2.54a.5.5 0 0 0-.005-.625zm6.599 8.278V15.5h-1v1.956l-1.674-1.346-.626.78 2.487 2a.5.5 0 0 0 .625.001l2.513-2-.624-.782zM10.313 7.89l-.626-.78 2.487-2a.5.5 0 0 1 .624-.001l2.513 1.988-.622.784-1.702-1.347V8.5h-1V6.543z\" /></g></svg>;\nexport default SvgAutoscaling;","import * as React from \"react\";\nconst SvgBackup = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Backup_64\"}</title><defs><linearGradient id=\"linearGradient-bak\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Backup_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Storage\" fill=\"url(#linearGradient-bak)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Backup_Icon_64_Squid\" fill=\"#fff\" d=\"M52.241 40.363a11.4 11.4 0 0 1-2.156 8.522 11.41 11.41 0 0 1-7.551 4.502q-.845.123-1.683.122a11.4 11.4 0 0 1-6.839-2.278 11.4 11.4 0 0 1-4.624-9.139l2-.014a9.43 9.43 0 0 0 3.819 7.549 9.4 9.4 0 0 0 7.038 1.781 9.42 9.42 0 0 0 6.236-3.718 9.42 9.42 0 0 0 1.781-7.038 9.43 9.43 0 0 0-3.717-6.237c-3.563-2.655-8.796-2.272-12.213.581l1.667-.002.002 2-4 .006H32a.997.997 0 0 1-1-1v-3.987h2v1.5a12.4 12.4 0 0 1 5.968-2.733c3.157-.511 6.354.229 8.772 2.032a11.4 11.4 0 0 1 4.501 7.551M54 58a5 5 0 0 0-1.362.19l-2.837-3.79-1.602 1.199 2.634 3.516A4.78 4.78 0 0 0 49.095 62H30.917c-.2-1.261-.794-2.264-1.679-2.956l2.565-3.448-1.606-1.193-2.808 3.774A6 6 0 0 0 26 58.005c-.43 0-.832.049-1.217.125l-5.819-19.447a4.26 4.26 0 0 0 2.104-1.542l4.567 1.79.73-1.862-4.507-1.767c.084-.409.142-.837.142-1.302 0-1.096-.264-2.045-.733-2.819l15.084-10.558c.671.675 1.574 1.118 2.649 1.288V27h2v-5.086c1.091-.165 1.996-.6 2.665-1.273L58.694 31.3c-.439.757-.694 1.664-.694 2.7 0 .42.056.843.16 1.259l-4.531 1.812.742 1.857 4.64-1.856a4.66 4.66 0 0 0 2.606 1.749l-7.314 19.204C54.2 58.02 54.105 58 54 58m0 8c-1.963 0-3-1.038-3-3 0-1.878 1.525-3 3-3 1.934 0 3 1.065 3 3 0 1.962-1.037 3-3 3m-28 0c-1.906 0-3-1.094-3-3 0-1.931 1.065-2.995 3-2.995 2.479 0 3 1.629 3 2.995 0 1.934-1.066 3-3 3M14 34c0-1.935 1.065-3 3-3 1.934 0 3 1.065 3 3 0 1.962-1.037 3-3 3-1.99 0-3-1.01-3-3m26-20c1.963 0 3 1.037 3 3 0 1.959-1.037 2.994-3 2.994-1.935 0-3-1.063-3-2.994 0-1.935 1.065-3 3-3m23 17c1.934 0 3 1.065 3 3 0 1.934-1.066 3-3 3-1.948 0-3-1.546-3-3 0-1.907 1.094-3 3-3m5 3c0-3.038-1.963-5-5-5-1.14 0-2.134.295-2.932.822L44.695 18.92A6 6 0 0 0 45 17c0-3.084-1.916-5-5-5-3.037 0-5 1.962-5 5 0 .699.115 1.334.312 1.908L19.837 29.741C19.059 29.265 18.103 29 17 29c-3.037 0-5 1.962-5 5 0 3.073 1.904 4.985 4.97 4.997l5.959 19.912C21.714 59.766 21 61.184 21 63c0 3.037 1.963 5 5 5 2.687 0 4.527-1.541 4.917-4h18.166c.389 2.459 2.229 4 4.917 4 3.037 0 5-1.963 5-5 0-2.183-1.026-3.796-2.723-4.539l7.435-19.52C66.333 38.651 68 36.789 68 34\" /></g></svg>;\nexport default SvgBackup;","import * as React from \"react\";\nconst SvgBatch = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Batch_64\"}</title><defs><linearGradient id=\"linearGradient-bat\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Batch_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Compute\" fill=\"url(#linearGradient-bat)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Batch_Icon_64_Squid\" fill=\"#fff\" d=\"M40.226 58.897c1.239 0 2.245.997 2.245 2.227a2.237 2.237 0 0 1-2.245 2.227 2.237 2.237 0 0 1-2.245-2.227 2.237 2.237 0 0 1 2.245-2.227M21.3 40.876a2.237 2.237 0 0 1-2.245 2.227 2.237 2.237 0 0 1-2.245-2.227 2.237 2.237 0 0 1 2.245-2.227c1.24 0 2.245.998 2.245 2.227M61.38 66c-2.582 0-4.604-1.934-4.604-4.402 0-2.518 2.066-4.567 4.604-4.567 2.54 0 4.605 2.049 4.605 4.567 0 2.468-2.022 4.402-4.605 4.402m-4.604-25c0-2.518 2.066-4.567 4.604-4.567 2.54 0 4.605 2.049 4.605 4.567s-2.066 4.567-4.605 4.567c-2.538 0-4.604-2.049-4.604-4.567m-16.55 4.567c-2.539 0-4.603-2.049-4.603-4.567s2.064-4.567 4.604-4.567S44.83 38.482 44.83 41s-2.065 4.567-4.604 4.567M45.266 61c0 2.851-2.166 5-5.04 5s-5.04-2.149-5.04-5 2.166-5 5.04-5 5.04 2.149 5.04 5M34.177 21c0-3.14 2.882-6 6.049-6 3.166 0 6.048 2.86 6.048 6s-2.882 6-6.048 6-6.049-2.86-6.049-6m-15.12 25c-2.875 0-5.04-2.149-5.04-5 0-2.894 2.26-5.248 5.04-5.248 2.779 0 5.04 2.354 5.04 5.248 0 2.851-2.167 5-5.04 5m4.588 15.564c0 2.487-2.022 4.436-4.605 4.436-2.581 0-4.604-1.949-4.604-4.436 0-2.519 2.066-4.567 4.604-4.567 2.54 0 4.605 2.048 4.605 4.567m38.742-6.449v-7.633C65.56 46.999 68 44.28 68 41c0-3.621-2.97-6.567-6.621-6.567-3.306 0-6.047 2.42-6.534 5.567H46.76c-.436-2.82-2.683-5.049-5.526-5.482v-5.595c3.86-.526 7.056-3.999 7.056-7.923 0-4.262-3.768-8-8.064-8s-8.065 3.738-8.065 8c0 3.924 3.197 7.397 7.057 7.923v5.595c-2.843.433-5.09 2.662-5.526 5.482h-7.654c-.478-3.523-3.422-6.248-6.982-6.248C15.166 33.752 12 37.004 12 41c0 3.584 2.587 6.451 6.048 6.924v7.155c-3.179.477-5.628 3.199-5.628 6.485 0 3.609 2.909 6.436 6.62 6.436 3.713 0 6.621-2.827 6.621-6.436 0-3.275-2.431-5.99-5.596-6.48v-7.16c3.13-.428 5.54-2.817 5.971-5.924h7.656c.436 2.82 2.683 5.049 5.526 5.482v6.594c-3.462.473-6.049 3.34-6.049 6.924 0 3.925 3.1 7 7.057 7 3.956 0 7.056-3.075 7.056-7 0-3.584-2.586-6.451-6.048-6.924v-6.594c2.843-.433 5.09-2.662 5.526-5.482h8.085c.437 2.82 2.683 5.049 5.526 5.482v7.633c-3.171.484-5.612 3.203-5.612 6.483 0 3.59 2.908 6.402 6.62 6.402S68 65.188 68 61.598c0-3.28-2.44-5.999-5.613-6.483\" /></g></svg>;\nexport default SvgBatch;","import * as React from \"react\";\nconst SvgBedrock = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Bedrock_64\"}</title><g id=\"Icon-Architecture/64/Arch_Amazon-Bedrock_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Machine-Learning\" fill=\"#01a88d\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><g id=\"Icon-Service/64/Amazon-Bedrock_64\" fill=\"#fff\" transform=\"translate(12 12)\"><path id=\"Fill-1\" d=\"M52 27c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2M20.113 53.908l-3.248-1.894 6.665-4.166-1.06-1.696-7.557 4.723L9 47.425v-8.89l5.555-3.703-1.11-1.664-5.486 3.657L2 33.42v-4.84l6.496-3.712-.992-1.736L2 26.277V22.58l6-3.428 6 3.428v3.854l-4.515 2.709 1.03 1.714L15 28.166l4.485 2.69 1.03-1.713L16 26.433v-3.898l5.555-3.703c.278-.186.445-.498.445-.832v-7h-2v6.465l-5.041 3.36L9 17.42V8.574l5-2.916V14h2V4.49l4.113-2.398L28 4.72v28.713l-14.515 8.709 1.03 1.714L28 35.766v15.513zM50 38c0 1.103-.897 2-2 2s-2-.897-2-2 .897-2 2-2 2 .897 2 2M40 48c0 1.103-.897 2-2 2s-2-.897-2-2 .897-2 2-2 2 .897 2 2M39 8c0-1.103.897-2 2-2s2 .897 2 2-.897 2-2 2-2-.897-2-2m13 13c-1.859 0-3.411 1.28-3.858 3H30v-5h11a1 1 0 0 0 1-1v-6.142c1.72-.447 3-2 3-3.858 0-2.206-1.794-4-4-4s-4 1.794-4 4c0 1.858 1.28 3.41 3 3.858V17H30V4a1 1 0 0 0-.684-.95l-9-3a1 1 0 0 0-.82.086l-12 7A1 1 0 0 0 7 8v9.42L.504 21.132A1 1 0 0 0 0 22v12c0 .359.192.69.504.868L7 38.58V48a1 1 0 0 0 .496.864l12 7a1 1 0 0 0 .82.085l9-3a1 1 0 0 0 .684-.95V40h7v4.143c-1.72.447-3 2-3 3.858 0 2.206 1.794 4 4 4s4-1.794 4-4c0-1.858-1.28-3.411-3-3.858V39a1 1 0 0 0-1-1h-8v-5h12.5l2.138 2.85A3.97 3.97 0 0 0 44 38c0 2.206 1.794 4 4 4s4-1.794 4-4-1.794-4-4-4a3.94 3.94 0 0 0-1.881.492L43.8 31.4a1 1 0 0 0-.8-.4H30v-5h18.142c.447 1.72 1.999 3 3.858 3 2.206 0 4-1.794 4-4s-1.794-4-4-4\" /></g></g></svg>;\nexport default SvgBedrock;","import * as React from \"react\";\nconst SvgCe = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Cost-Explorer_16\"}</title><defs><linearGradient id=\"linearGradient-ace\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Cost-Explorer_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/AWS-Cost-Management\" fill=\"url(#linearGradient-ace)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Cost-Explorer_Icon_16_Squid\" fill=\"#fff\" d=\"M18 17.989a.387.387 0 0 1-.548 0l-1.431-1.431q.308-.24.547-.548l1.431 1.431a.39.39 0 0 1 .001.548M11.983 14.1a2.13 2.13 0 0 1 2.127-2.128 2.13 2.13 0 0 1 2.127 2.128 2.13 2.13 0 0 1-2.127 2.127 2.13 2.13 0 0 1-2.127-2.127m6.724 2.634-1.645-1.645c.105-.312.175-.642.175-.989a3.13 3.13 0 0 0-3.127-3.128 3.13 3.13 0 0 0-3.127 3.128 3.13 3.13 0 0 0 3.127 3.127c.348 0 .677-.07.991-.175l1.643 1.644c.262.262.61.406.981.407h.001a1.386 1.386 0 0 0 .981-2.369M5.579 9.047c.286 0 .578.294.578.581s-.292.579-.578.579c-.287 0-.579-.292-.579-.579s.292-.581.579-.581m2.997 2.025c.287 0 .579.292.579.579 0 .286-.292.579-.579.579-.286 0-.578-.293-.578-.579 0-.287.292-.579.578-.579M12.59 7.05c.287 0 .579.292.579.579 0 .286-.292.579-.579.579s-.579-.293-.579-.579c0-.287.292-.579.579-.579M16.61 5c.287 0 .579.293.579.579 0 .287-.292.579-.579.579-.286 0-.578-.292-.578-.579 0-.286.292-.579.578-.579M6.079 11.112q.14-.051.268-.126l.666.529c-.004.045-.015.09-.015.136 0 .841.737 1.579 1.578 1.579s1.579-.738 1.579-1.579c0-.214-.049-.42-.133-.61l1.963-1.964c.188.084.393.131.605.131.841 0 1.579-.738 1.579-1.579q-.001-.147-.031-.287l1.367-.659c.29.29.684.475 1.105.475.841 0 1.579-.738 1.579-1.579S17.451 4 16.61 4c-.84 0-1.578.738-1.578 1.579 0 .072.013.141.023.211l-1.42.684a1.57 1.57 0 0 0-1.045-.424c-.841 0-1.579.738-1.579 1.579 0 .28.088.546.228.78l-1.887 1.888a1.5 1.5 0 0 0-.776-.225c-.435 0-.841.201-1.133.509l-.422-.336a1.5 1.5 0 0 0 .136-.617c0-.668-.467-1.264-1.078-1.485V4.1h-1v4.043C4.467 8.364 4 8.96 4 9.628s.467 1.263 1.079 1.484V18.1h6.031v-1H6.079z\" /></g></svg>;\nexport default SvgCe;","import * as React from \"react\";\nconst SvgCloudcontrol = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Cloud-Control-API_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-Cloud-Control-API_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Developer-Tools\" fill=\"#c925d1\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><g id=\"Icon-Service/64/AWS-Cloud-Control-API_64\" fill=\"#fff\" transform=\"translate(12 18.15)\"><path id=\"Fill-1\" d=\"M2.053 28.764a7.1 7.1 0 0 1 1.712-5.556 6.94 6.94 0 0 1 5.186-2.34h24.506l-5.293 5.292 1.414 1.415 7-7a1 1 0 0 0 0-1.415l-7-7-1.414 1.415 5.293 5.293H8.951a8.94 8.94 0 0 0-6.683 3.014 9.1 9.1 0 0 0-2.2 7.123c.544 4.483 4.506 7.863 9.216 7.863h1.667v-2H9.284c-3.7 0-6.809-2.625-7.23-6.104m53.945-2.644c0 9.897-9.949 10.738-10.049 10.745l-27.368.002 5.293 5.293-1.414 1.415-7-7a1 1 0 0 1 0-1.415l7-7 1.414 1.415-5.293 5.293h27.295c.26-.023 8.122-.726 8.122-8.748 0-1.464-.274-2.784-.814-3.922-.696-1.465-1.84-2.659-3.399-3.548a11.2 11.2 0 0 0-1.876-.846 12.3 12.3 0 0 0-1.973-.512 1 1 0 0 1-.82-1.135l.005-.034a9 9 0 0 0-.256-2.125c-.534-2.09-1.902-3.498-3.754-3.859-1.794-.352-3.669.395-4.777 1.897a1 1 0 0 1-1.748-.261c-.823-2.333-2.013-4.294-3.539-5.828-1.873-1.885-7.016-5.938-14.27-2.855-4.195 1.781-7.48 6.914-7.48 11.683h-2c0-5.603 3.738-11.418 8.698-13.524 5.815-2.468 11.971-1.24 16.47 3.285 1.398 1.406 2.544 3.113 3.42 5.09 1.551-1.28 3.615-1.84 5.608-1.45 2.604.508 4.588 2.5 5.31 5.328.158.623.258 1.288.298 1.985q.741.173 1.467.426c.783.273 1.526.61 2.208.998 1.922 1.096 3.34 2.585 4.214 4.427.67 1.408 1.008 3.017 1.008 4.78\" /></g></g></svg>;\nexport default SvgCloudcontrol;","import * as React from \"react\";\nconst SvgCloudformation = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-CloudFormation_64\"}</title><defs><linearGradient id=\"linearGradient-clf\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-CloudFormation_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Management-Governance\" fill=\"url(#linearGradient-clf)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-CloudFormation_Icon_64_Squid\" fill=\"#fff\" d=\"M53 39.963h5V37.96h-5zM28 51.982h5v-2.003h-5zm-10 0h7v-2.003h-7zm0-6.01h12V43.97H18zm0-12.018h9v-2.003h-9zm0 6.01h33V37.96H18zm19 22.033H14V27.945h23v8.012h2v-9.014c0-.553-.448-1.001-1-1.001H13a1 1 0 0 0-1 1.001v36.055A1 1 0 0 0 13 64h25c.552 0 1-.449 1-1.002v-20.03h-2zm31-25.038c0 6.472-5.827 8.723-8.908 9.01L43 45.971V43.97h16c.195-.023 7-.757 7-7.01 0-5.695-5.137-6.85-6.166-7.025a1 1 0 0 1-.825-1.126c-.055-3.218-2.028-4.223-2.883-4.508-1.596-.53-3.375-.023-4.316 1.24a1 1 0 0 1-1.742-.262c-.621-1.742-1.522-2.87-2.775-4.125-3.134-3.114-7.388-3.975-11.368-2.3-2.088.88-3.913 2.875-5.003 5.474l-1.844-.777c1.292-3.076 3.506-5.461 6.072-6.543 4.755-2.002 9.821-.981 13.554 2.727 1.07 1.073 1.956 2.117 2.646 3.47 1.493-1.106 3.507-1.437 5.407-.805 2.432.81 3.97 2.922 4.218 5.73 3.406.86 7.025 3.583 7.025 8.83\" /></g></svg>;\nexport default SvgCloudformation;","import * as React from \"react\";\nconst SvgCloudfront = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-CloudFront_64\"}</title><defs><linearGradient id=\"linearGradient-cfr\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-CloudFront_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Networking-Content-Delivery\" fill=\"url(#linearGradient-cfr)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-CloudFront_Icon_64_Squid\" fill=\"#fff\" d=\"M55.122 52.123c0-1.654-1.346-3-3-3s-3 1.346-3 3 1.346 3 3 3 3-1.346 3-3m2 0c0 2.757-2.243 5-5 5s-5-2.243-5-5 2.243-5 5-5 5 2.243 5 5m-26.73-14.431c0-1.654-1.346-3-3-3-1.655 0-3 1.346-3 3s1.345 3 3 3c1.654 0 3-1.346 3-3m2 0c0 2.757-2.244 5-5 5-2.757 0-5-2.243-5-5s2.243-5 5-5c2.756 0 5 2.243 5 5m7.338-15.685c0 1.654 1.346 3 3 3 1.655 0 3-1.346 3-3 0-1.655-1.345-3-3-3-1.654 0-3 1.345-3 3m-2 0c0-2.757 2.244-5 5-5 2.757 0 5 2.243 5 5s-2.243 5-5 5c-2.756 0-5-2.243-5-5M66 40c0-9.273-4.972-17.852-12.988-22.491-1.437.29-2.827.687-4.561 1.314l-.68-1.881c.905-.326 1.715-.59 2.495-.816A25.95 25.95 0 0 0 40 14c-1.689 0-3.351.175-4.975.492a32 32 0 0 1 3.232 2.142l-1.209 1.593c-1.428-1.082-2.908-1.999-4.851-3.017-9.819 3.088-16.891 11.748-18.014 21.918a35 35 0 0 1 6.231-.698l.049 1.999c-2.3.057-4.276.301-6.436.776-.009.265-.027.533-.027.795a25.94 25.94 0 0 0 11.327 21.447c-1.253-3.731-1.877-7.257-1.877-10.701 0-1.964.338-3.577.695-5.284.083-.395.167-.797.249-1.214l1.963.387q-.127.635-.254 1.238c-.35 1.672-.653 3.116-.653 4.873 0 3.908.858 7.949 2.604 12.337A25.7 25.7 0 0 0 40 66c2.756 0 5.446-.44 8.012-1.286a33.5 33.5 0 0 0 2.378-6.015l1.921.557a36 36 0 0 1-1.602 4.421 25.4 25.4 0 0 0 4.574-2.672 36 36 0 0 0-1.124-2.506l1.789-.895c.348.696.667 1.408.972 2.124C62.705 54.775 66 47.66 66 40m2 0c0 8.727-3.966 16.799-10.879 22.149a27.5 27.5 0 0 1-5.532 3.323c-.833.378-1.681.728-2.553 1.022A27.5 27.5 0 0 1 40 68c-4.6 0-9.168-1.146-13.212-3.314A27.95 27.95 0 0 1 12 40c0-.686.018-1.208.059-1.691.681-11.684 8.697-21.797 19.942-25.143A27.7 27.7 0 0 1 40 12a27.87 27.87 0 0 1 13.684 3.579A28.03 28.03 0 0 1 68 40M37.314 25.463 36 23.956c-2.242 1.956-3.986 4.033-6.023 7.17l1.678 1.089c1.928-2.971 3.568-4.927 5.659-6.752m-3.039 12.964-.65 1.891c4.593 1.577 8.6 4.093 12.609 7.918l1.381-1.447c-4.226-4.031-8.465-6.688-13.34-8.362m13.371-11.759c3.752 5.722 5.865 12.003 6.279 18.67l-1.996.124c-.393-6.316-2.396-12.27-5.954-17.697z\" /></g></svg>;\nexport default SvgCloudfront;","import * as React from \"react\";\nconst SvgCloudtrail = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Cloud-Trail_64\"}</title><defs><linearGradient id=\"linearGradient-ctr\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Cloud-Trail_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Management-Governance\" fill=\"url(#linearGradient-ctr)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Cloud-Trail_Icon_64_Squid\" fill=\"#fff\" d=\"M25 52.996h4v-2.002h-4zm34.971-14.833c-.225-3.037-1.71-5.273-4.069-6.063-1.899-.633-3.991-.186-5.584 1.113-.966-1.905-2.418-3.771-3.616-4.953-4.296-4.24-9.034-5.322-14.086-3.215C28.106 26.922 24 33.087 24 37.981v.19c-2.707.915-4.891 2.903-5.926 5.438l1.852.757c1.319-3.23 4.406-4.244 5.321-4.477.443-.113.753-.512.753-.97v-.938c0-4.045 3.657-9.536 7.385-11.088 4.295-1.79 8.193-.882 11.913 2.792 1.582 1.56 3.129 3.876 3.762 5.633a.999.999 0 0 0 1.739.262c1.105-1.47 2.897-2.106 4.47-1.58 1.735.58 2.731 2.397 2.731 4.982a1 1 0 0 0 .836.987c.733.122 7.164 1.383 7.164 8.022 0 6.877-6.719 7.005-7 7.007H36V57h23.002C62.114 56.994 68 55.104 68 47.991c0-6.207-4.721-9.002-8.029-9.828M31 52.996h14v-2.002H31zM27 57h6v-2.002h-6zm-15 0h3v-2.002h-3zm3-8.008h9V46.99h-9zm-2 4.004h10v-2.002H13zm14-4.004h7V46.99h-7zM17 57h8v-2.002h-8z\" /></g></svg>;\nexport default SvgCloudtrail;","import * as React from \"react\";\nconst SvgCloudwatch = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-CloudWatch_64\"}</title><defs><linearGradient id=\"linearGradient-cwl\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-CloudWatch_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Management-Governance\" fill=\"url(#linearGradient-cwl)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-CloudWatch_Icon_64_Squid\" fill=\"#fff\" d=\"M55.06 46.777c0-3.909-3.202-7.09-7.138-7.09s-7.136 3.181-7.136 7.09c0 3.91 3.2 7.09 7.136 7.09s7.137-3.18 7.137-7.09m2.01 0c0 5.011-4.103 9.087-9.147 9.087-5.043 0-9.147-4.076-9.147-9.087 0-5.01 4.104-9.086 9.147-9.086s9.148 4.076 9.148 9.086m8.44 13.697L58.5 54.203a13 13 0 0 1-1.947 2.16l6.998 6.27a1.474 1.474 0 0 0 2.066-.107 1.453 1.453 0 0 0-.108-2.052m-17.588-2.812c6.043 0 10.958-4.883 10.958-10.885s-4.915-10.884-10.958-10.884c-6.041 0-10.957 4.882-10.957 10.884s4.916 10.885 10.957 10.885m19.19 6.2A3.48 3.48 0 0 1 64.529 65a3.48 3.48 0 0 1-2.322-.883L54.931 57.6a12.94 12.94 0 0 1-7.009 2.06c-7.15 0-12.967-5.779-12.967-12.882s5.817-12.881 12.967-12.881 12.969 5.779 12.969 12.881c0 2.038-.492 3.96-1.344 5.674l7.309 6.54a3.444 3.444 0 0 1 .256 4.872M21.28 29.393c0 .519.032 1.036.094 1.536a.994.994 0 0 1-.823 1.106c-2.472.634-6.54 2.553-6.54 8.31 0 4.348 2.413 6.748 4.439 7.996.691.433 1.51.664 2.373.673l12.122.011-.002 1.997-12.131-.01c-1.246-.014-2.428-.351-3.428-.977C15.377 48.797 12 45.89 12 40.345c0-6.683 4.6-9.153 7.3-10.026q-.03-.462-.03-.926c0-5.46 3.728-11.123 8.672-13.171 5.782-2.407 11.908-1.214 16.384 3.189 1.388 1.364 2.529 3.02 3.404 4.937a6.5 6.5 0 0 1 4.154-1.502c3.002 0 6.382 2.264 6.984 7.215 2.812.644 8.753 2.894 8.753 10.362 0 2.981-.941 5.444-2.798 7.319l-1.433-1.401c1.473-1.488 2.22-3.479 2.22-5.918 0-6.532-5.504-8.157-7.873-8.551a1 1 0 0 1-.823-1.157c-.329-4.055-2.753-5.872-5.03-5.872-1.437 0-2.784.695-3.697 1.907a1.006 1.006 0 0 1-1.75-.258c-.823-2.266-2.01-4.171-3.525-5.661-3.88-3.816-9.184-4.85-14.195-2.766-4.17 1.727-7.437 6.702-7.437 11.328\" /></g></svg>;\nexport default SvgCloudwatch;","import * as React from \"react\";\nconst SvgCodeartifact = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-CodeArtifact_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-CodeArtifact_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Developer-Tools\" fill=\"#c925d1\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><g id=\"Icon-Service/64/AWS-CodeArtifact_64\" fill=\"#fff\" transform=\"translate(13 12)\"><path id=\"AWS-CodeArtifact_Icon_64_Squid\" d=\"m23.848 34.128 5.925-13.235 1.826.818-5.925 13.234zm8.295-4.031 3.559-2.596-3.135-3.18 1.424-1.404 3.949 4.005a.999.999 0 0 1-.122 1.51l-4.495 3.28zm-8.839-5.69-3.61 2.635 3.144 3.18-1.422 1.406-3.962-4.005a1.002 1.002 0 0 1 .122-1.511l4.548-3.32zM22.152 1.721 2 13.636v23.235H0V13.066a1 1 0 0 1 .492-.861L21.134 0zM55 18.871v24.064a1 1 0 0 1-.501.867L33.873 55.678l-.998-1.733L53 42.357V18.871zM43 36.664l-15.08 8.575L13 36.496V19.172l14.91-8.573L43 19.347zm2 .582V18.771a1 1 0 0 0-.498-.866L28.414 8.579a1 1 0 0 0-1-.002l-15.912 9.15a1 1 0 0 0-.502.867v18.475c0 .355.189.683.494.863l15.913 9.325a1 1 0 0 0 1 .006l16.087-9.148a1 1 0 0 0 .506-.869\" /></g></g></svg>;\nexport default SvgCodeartifact;","import * as React from \"react\";\nconst SvgCodebuild = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-CodeBuild_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-CodeBuild_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Developer-Tools\" fill=\"#c925d1\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-CodeBuild_Icon_64_Squid\" fill=\"#fff\" d=\"m65.44 22-5.954-5.451L53.526 22zm-8.238-6.062-12.078.018 6.451 5.127zM51.755 33.5 42.248 37h18.287zM37.798 57h26.798V39H37.798zm11.725-35-6.586-5.234L36.396 22zm-15.214-.885 6.44-5.152-12.837.019zM32.225 22l-6.572-5.274L19.08 22h13.145m-4.352 2h-8.03l8.03 7.965zm0 11.083-9.425 8.582 9.425 9.224zm0 21.054-9.925 9.702V66h9.925zm-9.925-10.174v17.09l8.736-8.54zm0-4.539 8.672-7.896-8.672-8.6zm-.993-20.276 6.43-5.159-6.43.01zM14.97 14h-1.985v10h1.985V14m53.963 9.36a.99.99 0 0 1-.926.64H52.686v8l13.278 5.074-.001.002a1 1 0 0 1 .618.924v20c0 .552-.444 1-.992 1H36.805a.997.997 0 0 1-.992-1V38c0-.428.27-.787.646-.929l-.003-.007L50.701 32v-8H29.858v43c0 .552-.444 1-.993 1h-11.91a.997.997 0 0 1-.992-1V26h-3.97A.997.997 0 0 1 11 25V13c0-.552.445-1 .993-1h3.97c.548 0 .992.448.992 1v.999L59.633 14l9.042 8.26c.303.278.406.715.258 1.1M48.34 55.308l5.776-13.225-1.816-.806-5.777 13.225zm5.426-4.42 1.283 1.527 4.288-3.658a1.007 1.007 0 0 0 .064-1.465l-3.579-3.659-1.413 1.405 2.826 2.89zM40.87 47.984a1 1 0 0 1 .08-1.541l4.87-3.631 1.182 1.607L43.1 47.33l3.275 3.024-1.342 1.475z\" /></g></svg>;\nexport default SvgCodebuild;","import * as React from \"react\";\nconst SvgCodecommit = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-CodeCommit_64\"}</title><defs><linearGradient id=\"linearGradient-com\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-CodeCommit_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Developer-Tools\" fill=\"url(#linearGradient-com)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-CodeCommit_Icon_64_Squid\" fill=\"#fff\" d=\"M26.628 28.105h-2.017v-6.982c0-.558.36-.99.926-.99l7.144-.007v1.994H27.95l4.862 4.819-1.445 1.434-4.806-4.728zm28.07 10.867 1.869.827-6.541 14.446-1.868-.827zm1.311 10.493 4.003-2.89-3.526-3.535 1.458-1.422 4.36 4.373a1.002 1.002 0 0 1-.126 1.527l-4.963 3.58zm-9.043-8.802 1.205 1.633-4.061 2.932 3.538 3.536-1.454 1.424-4.374-4.373a1 1 0 0 1 .124-1.528zM69 24.13v42.858c0 .56-.458 1.012-1.024 1.012h-31.26c-.272 0-.53-.107-.723-.297a.96.96 0 0 1-.285-.7V55.034h2.018v10.971h29.256V25.113H37.726v-1.995h30.25c.566 0 1.024.453 1.024 1.012M33.182 34.588c0-1.927 1.585-3.495 3.535-3.495s3.535 1.568 3.535 3.495-1.585 3.495-3.535 3.495-3.535-1.568-3.535-3.495M17.549 66.009c-1.95 0-3.535-1.568-3.535-3.495s1.585-3.494 3.535-3.494 3.535 1.567 3.535 3.494-1.585 3.495-3.535 3.495m-3.535-23.442c0-1.927 1.585-3.495 3.535-3.495 1.982 0 3.535 1.535 3.535 3.495 0 1.927-1.585 3.495-3.535 3.495s-3.535-1.568-3.535-3.495m.004-25.081c0-1.925 1.584-3.491 3.53-3.491 1.948 0 3.532 1.566 3.532 3.49s-1.584 3.491-3.531 3.491-3.531-1.566-3.531-3.49m23.708 29.762v-7.276c2.57-.477 4.535-2.708 4.535-5.384 0-3.022-2.487-5.482-5.544-5.482s-5.545 2.46-5.545 5.482c0 2.676 1.966 4.907 4.536 5.384v7.276c0 1.163-.786 2.218-1.98 2.686l-10.451 4.1c-1.673.657-2.903 1.948-3.434 3.496-.433-.195-.801-.336-1.285-.416v-9.146c2.623-.433 4.535-2.687 4.535-5.401 0-2.764-1.878-4.972-4.535-5.393V22.889c2.626-.431 4.54-2.688 4.54-5.403 0-3.025-2.49-5.486-5.55-5.486S12 14.46 12 17.486c0 2.64 2.022 4.85 4.54 5.369v14.347c-2.515.518-4.536 2.727-4.536 5.365s2.02 4.846 4.536 5.365v9.217c-2.515.52-4.536 2.727-4.536 5.365 0 3.022 2.488 5.482 5.545 5.482s5.544-2.46 5.544-5.482a5.43 5.43 0 0 0-1.458-3.693c.167-1.27 1.066-2.384 2.397-2.905l10.45-4.1c1.98-.777 3.244-2.57 3.244-4.568\" /></g></svg>;\nexport default SvgCodecommit;","import * as React from \"react\";\nconst SvgCodeconnections = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-CodeStar_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-CodeStar_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Developer-Tools\" fill=\"#c925d1\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-CodeStar_Icon_64_Squid\" fill=\"#fff\" d=\"M62.95 34.806a4.116 4.116 0 0 0-2.07-7.683 4.1 4.1 0 0 0-2.055.553 4.1 4.1 0 0 0-1.924 2.5 4.08 4.08 0 0 0 .412 3.123 4.136 4.136 0 0 0 5.637 1.507m2.56 4.21.994 1.719-4.83 2.781-1.204-6.203c-1.96-.137-3.824-1.2-4.879-3.022a6.05 6.05 0 0 1-.611-4.63 6.07 6.07 0 0 1 2.85-3.703 6.08 6.08 0 0 1 4.64-.61 6.07 6.07 0 0 1 3.712 2.843 6.1 6.1 0 0 1-2.238 8.333 6 6 0 0 1-1.483.612l.634 3.27zm-6.95 12.018a4.1 4.1 0 0 0-3.13-.412 4.1 4.1 0 0 0-2.505 1.919c-.778 1.343-.69 2.938.061 4.182l.855.984-.02.017c.19.161.391.313.614.44.955.55 2.067.696 3.13.412a4.116 4.116 0 0 0 .995-7.542m3.232 6.615a6.07 6.07 0 0 1-3.712 2.843 6.086 6.086 0 0 1-4.64-.61 6 6 0 0 1-1.134-.85l-1.428 1.236 2.415 1.389-.995 1.72-4.833-2.784 3.636-3.143a6.08 6.08 0 0 1 .102-5.901 6.07 6.07 0 0 1 3.712-2.842 6.08 6.08 0 0 1 4.64.609 6.06 6.06 0 0 1 2.848 3.704 6.05 6.05 0 0 1-.61 4.629m-21.652 4.25a4.128 4.128 0 0 0-8.253 0 4.127 4.127 0 0 0 8.253 0m1.989 0c0 3.364-2.743 6.101-6.116 6.101-3.371 0-6.114-2.737-6.114-6.101 0-.473.058-.932.162-1.374l-2.564-.886v2.99H25.51v-5.777l5.313 1.838a6.112 6.112 0 0 1 11.307 3.209m-19.37-15.927a4.1 4.1 0 0 0-2.504-1.919 4.1 4.1 0 0 0-3.13.412 4.1 4.1 0 0 0-1.923 2.5 4.07 4.07 0 0 0 .413 3.123 4.1 4.1 0 0 0 2.504 1.918 4.1 4.1 0 0 0 3.131-.411 4.115 4.115 0 0 0 1.51-5.623m-.514 7.34a6.08 6.08 0 0 1-4.64.61 6.07 6.07 0 0 1-3.713-2.842 6.05 6.05 0 0 1-.61-4.63 6.06 6.06 0 0 1 2.848-3.704c.286-.165.584-.298.887-.414L16.4 39.16l-2.404 1.388L13 38.831l4.821-2.784 1.143 5.885c.6-.022 1.209.046 1.805.204a6.07 6.07 0 0 1 3.714 2.844c1.685 2.912.68 6.651-2.238 8.333m1.932-30.746a4.131 4.131 0 0 0-5.636 1.507 4.08 4.08 0 0 0-.414 3.124 4.1 4.1 0 0 0 1.924 2.5c.954.55 2.065.697 3.13.41a4.116 4.116 0 0 0 .995-7.542m3.187.448a6.093 6.093 0 0 1-3.668 9.01 6.097 6.097 0 0 1-4.64-.61 6.07 6.07 0 0 1-2.85-3.703 6.05 6.05 0 0 1 .612-4.63c1.686-2.913 5.434-3.915 8.353-2.233.33.19.631.41.912.648l2.537-2.199-2.407-1.39.996-1.718 4.816 2.783zm20.092-4.912a4.128 4.128 0 0 0-8.254 0 4.127 4.127 0 0 0 4.127 4.117 4.126 4.126 0 0 0 4.127-4.117m6.377 4.597-5.097-1.754a6.12 6.12 0 0 1-5.407 3.258c-3.373 0-6.116-2.737-6.116-6.1 0-3.365 2.743-6.103 6.116-6.103s6.116 2.738 6.116 6.102c0 .327-.033.646-.084.96l2.484.855v-2.545h1.988zm-9.829 9.927-1.821-.797-7.006 15.92 1.822.798zm7.56 7.595-5.741-5.594-1.388 1.42 4.08 3.975-4.563 3.416 1.195 1.586zm-18.109 4.045-5.74-5.593 6.417-4.804 1.194 1.587-4.562 3.415 4.079 3.976z\" /></g></svg>;\nexport default SvgCodeconnections;","import * as React from \"react\";\nconst SvgCodedeploy = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-CodeDeploy_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-CodeDeploy_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Developer-Tools\" fill=\"#c925d1\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-CodeDeploy_Icon_64_Squid\" fill=\"#fff\" d=\"M28 66.982h26.001v-17.15h-26zm27.001-19.168h-28c-.554 0-1 .452-1 1.009v19.168c0 .557.446 1.009 1 1.009h28c.553 0 1-.452 1-1.009V48.823c0-.557-.447-1.009-1-1.009M37.096 65.2l6.056-13.872 1.83.814-6.056 13.872zm11.441-6.688-3.406-3.344 1.394-1.447 4.246 4.169a1.016 1.016 0 0 1-.099 1.531L45.925 63l-1.197-1.615zm-17.147-.352a1.012 1.012 0 0 1 .098-1.53l4.748-3.58 1.198 1.614-3.81 2.873 3.407 3.346-1.394 1.446zM66.044 35.05c-1.92-1.872-4.472-2.903-7.19-2.903-3.542 0-6.435 1.26-8.228 3.36-.44-9.668-2.65-17.446-5.81-21.15 11.31 1.709 19.895 10.065 21.794 21.251a59 59 0 0 0-.566-.558m-17.978.347-.358-.347c-1.919-1.872-4.477-2.903-7.201-2.903-3.465 0-6.285 1.166-8.08 3.152.66-12.71 4.556-21.274 8.089-21.281h.017c3.591.022 7.554 8.884 8.11 21.95a40 40 0 0 0-.577-.57m-17.679.674a38 38 0 0 0-.845-.845l-.18-.176c-1.92-1.872-4.477-2.903-7.202-2.903-3.093 0-5.701.937-7.505 2.573 2.377-10.716 10.78-18.675 21.564-20.358-3.218 3.778-5.453 11.783-5.832 21.71M40.527 12C24.857 12 12.602 23.942 12 39.78c-.014.378.198.72.507.91l10.242 6.734 1.092-1.691-9.688-6.36c.51-2.16 2.087-3.785 4.353-4.608 1.076-.39 2.307-.6 3.653-.6 2.203 0 4.267.829 5.811 2.336l.181.176c1.38 1.344 2.196 3.799 2.196 3.808.007.061 1.37 5.155 1.37 5.155l1.929-.528-1.299-4.836.008-.123c.485-4.416 4.528-5.989 8.15-5.989 2.204 0 4.267.83 5.811 2.337 0 0 2.18 1.675 2.34 3.647l.01.134-1.312 4.827 1.93.534 1.364-5.03q.01-.057.016-.124c.271-3.854 3.482-6.325 8.19-6.325 2.195 0 4.254.83 5.798 2.337 1.2 1.17 2.046 2.056 2.28 2.927l-8.638 6.068 1.143 1.656 9.135-6.418c.249-.197.428-.905.427-.943C68.72 23.948 56.497 12.01 40.527 12\" /></g></svg>;\nexport default SvgCodedeploy;","import * as React from \"react\";\nconst SvgCodepipeline = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-CodePipeline_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-CodePipeline_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Developer-Tools\" fill=\"#c925d1\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-CodePipeline_Icon_64_Squid\" fill=\"#fff\" d=\"M30 31h5v-2h-5zm6.667 30.166-1.85-.759 7.592-18.522 1.85.759zm8.904-5.386 5.497-4.822-5.493-4.761 1.311-1.512 6.359 5.513a1.002 1.002 0 0 1 .004 1.508l-6.359 5.578zm-20.062-4.732a1 1 0 0 1 .338-.755l6.337-5.602 1.324 1.499-5.479 4.843 5.449 4.697-1.307 1.515-6.316-5.446a1 1 0 0 1-.346-.751M62.535 35h-44.07A3.47 3.47 0 0 1 15 31.536V31h12v-2H15V18.464A3.47 3.47 0 0 1 18.465 15h44.07A3.47 3.47 0 0 1 66 18.464V29H38v2h28v.536A3.47 3.47 0 0 1 62.535 35M22 66h36V37H22zm40.535-53h-44.07A5.47 5.47 0 0 0 13 18.464v13.072A5.47 5.47 0 0 0 18.465 37H20v30a1 1 0 0 0 1 1h38a1 1 0 0 0 1-1V37h2.535A5.47 5.47 0 0 0 68 31.536V18.464A5.47 5.47 0 0 0 62.535 13\" /></g></svg>;\nexport default SvgCodepipeline;","import * as React from \"react\";\nconst SvgCodestarConnections = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-CodeStar_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-CodeStar_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Developer-Tools\" fill=\"#c925d1\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-CodeStar_Icon_64_Squid\" fill=\"#fff\" d=\"M62.95 34.806a4.116 4.116 0 0 0-2.07-7.683 4.1 4.1 0 0 0-2.055.553 4.1 4.1 0 0 0-1.924 2.5 4.08 4.08 0 0 0 .412 3.123 4.136 4.136 0 0 0 5.637 1.507m2.56 4.21.994 1.719-4.83 2.781-1.204-6.203c-1.96-.137-3.824-1.2-4.879-3.022a6.05 6.05 0 0 1-.611-4.63 6.07 6.07 0 0 1 2.85-3.703 6.08 6.08 0 0 1 4.64-.61 6.07 6.07 0 0 1 3.712 2.843 6.1 6.1 0 0 1-2.238 8.333 6 6 0 0 1-1.483.612l.634 3.27zm-6.95 12.018a4.1 4.1 0 0 0-3.13-.412 4.1 4.1 0 0 0-2.505 1.919c-.778 1.343-.69 2.938.061 4.182l.855.984-.02.017c.19.161.391.313.614.44.955.55 2.067.696 3.13.412a4.116 4.116 0 0 0 .995-7.542m3.232 6.615a6.07 6.07 0 0 1-3.712 2.843 6.086 6.086 0 0 1-4.64-.61 6 6 0 0 1-1.134-.85l-1.428 1.236 2.415 1.389-.995 1.72-4.833-2.784 3.636-3.143a6.08 6.08 0 0 1 .102-5.901 6.07 6.07 0 0 1 3.712-2.842 6.08 6.08 0 0 1 4.64.609 6.06 6.06 0 0 1 2.848 3.704 6.05 6.05 0 0 1-.61 4.629m-21.652 4.25a4.128 4.128 0 0 0-8.253 0 4.127 4.127 0 0 0 8.253 0m1.989 0c0 3.364-2.743 6.101-6.116 6.101-3.371 0-6.114-2.737-6.114-6.101 0-.473.058-.932.162-1.374l-2.564-.886v2.99H25.51v-5.777l5.313 1.838a6.112 6.112 0 0 1 11.307 3.209m-19.37-15.927a4.1 4.1 0 0 0-2.504-1.919 4.1 4.1 0 0 0-3.13.412 4.1 4.1 0 0 0-1.923 2.5 4.07 4.07 0 0 0 .413 3.123 4.1 4.1 0 0 0 2.504 1.918 4.1 4.1 0 0 0 3.131-.411 4.115 4.115 0 0 0 1.51-5.623m-.514 7.34a6.08 6.08 0 0 1-4.64.61 6.07 6.07 0 0 1-3.713-2.842 6.05 6.05 0 0 1-.61-4.63 6.06 6.06 0 0 1 2.848-3.704c.286-.165.584-.298.887-.414L16.4 39.16l-2.404 1.388L13 38.831l4.821-2.784 1.143 5.885c.6-.022 1.209.046 1.805.204a6.07 6.07 0 0 1 3.714 2.844c1.685 2.912.68 6.651-2.238 8.333m1.932-30.746a4.131 4.131 0 0 0-5.636 1.507 4.08 4.08 0 0 0-.414 3.124 4.1 4.1 0 0 0 1.924 2.5c.954.55 2.065.697 3.13.41a4.116 4.116 0 0 0 .995-7.542m3.187.448a6.093 6.093 0 0 1-3.668 9.01 6.097 6.097 0 0 1-4.64-.61 6.07 6.07 0 0 1-2.85-3.703 6.05 6.05 0 0 1 .612-4.63c1.686-2.913 5.434-3.915 8.353-2.233.33.19.631.41.912.648l2.537-2.199-2.407-1.39.996-1.718 4.816 2.783zm20.092-4.912a4.128 4.128 0 0 0-8.254 0 4.127 4.127 0 0 0 4.127 4.117 4.126 4.126 0 0 0 4.127-4.117m6.377 4.597-5.097-1.754a6.12 6.12 0 0 1-5.407 3.258c-3.373 0-6.116-2.737-6.116-6.1 0-3.365 2.743-6.103 6.116-6.103s6.116 2.738 6.116 6.102c0 .327-.033.646-.084.96l2.484.855v-2.545h1.988zm-9.829 9.927-1.821-.797-7.006 15.92 1.822.798zm7.56 7.595-5.741-5.594-1.388 1.42 4.08 3.975-4.563 3.416 1.195 1.586zm-18.109 4.045-5.74-5.593 6.417-4.804 1.194 1.587-4.562 3.415 4.079 3.976z\" /></g></svg>;\nexport default SvgCodestarConnections;","import * as React from \"react\";\nconst SvgCognitoIdentity = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Cognito_64\"}</title><defs><linearGradient id=\"linearGradient-cgn\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#bd0816\" /><stop offset=\"100%\" stopColor=\"#ff5252\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Cognito_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"url(#linearGradient-cgn)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Cognito_Icon_64_Squid\" fill=\"#fff\" d=\"M16.964 35.808h12.905v-1.983H16.964zM61.376 50.23l1.403 1.402-7.372 7.36a.994.994 0 0 1-1.403 0l-3.71-3.702L51.7 53.89l3.006 3.001zm4.568 5.463a9.44 9.44 0 0 1-2.197 5.015 9.55 9.55 0 0 1-3.143 2.406 9.37 9.37 0 0 1-5.158.833 9.4 9.4 0 0 1-4.706-1.966 9.43 9.43 0 0 1-3.518-8.573 9.47 9.47 0 0 1 5.058-7.282 9.34 9.34 0 0 1 5.441-.972 9.43 9.43 0 0 1 7.26 5.088 9.45 9.45 0 0 1 .963 5.45m.806-6.35a11.406 11.406 0 0 0-15.381-4.978 11.45 11.45 0 0 0-6.118 8.805 11.4 11.4 0 0 0 4.254 10.364A11.38 11.38 0 0 0 56.592 66c1.68 0 3.338-.37 4.864-1.094a11.5 11.5 0 0 0 3.801-2.91 11.4 11.4 0 0 0 2.659-6.064 11.4 11.4 0 0 0-1.166-6.588m-39.86-7.588h3.972v-1.983H26.89zm-9.926 0h7.941v-1.983h-7.941zm-.858-25.773h44.402c1.17 0 2.12 1.156 2.12 2.578v7.334H59.65V20.94a.99.99 0 0 0-.993-.991H35.825a.99.99 0 0 0-.993.99v4.957H13.985v-7.334c0-1.398.972-2.578 2.12-2.578m31.15 9.625c2.305 0 4.18 1.853 4.18 4.131a4.11 4.11 0 0 1-2.163 3.608 4.25 4.25 0 0 1-4.043 0 4.11 4.11 0 0 1-2.154-3.608c0-2.278 1.874-4.131 4.18-4.131m-33.27 21.5v-19.23h20.846v16.851c0 .549.444.992.993.992h10.378v-1.983h-8.291a9.02 9.02 0 0 1 6.522-8.488c1.755.82 3.85.828 5.633-.001a9.1 9.1 0 0 1 5.226 4.005l1.699-1.027a11.1 11.1 0 0 0-5.147-4.432 6.05 6.05 0 0 0 1.577-4.056c0-3.37-2.767-6.114-6.166-6.114s-6.166 2.743-6.166 6.114c0 1.518.578 2.944 1.564 4.045a11 11 0 0 0-5.836 5.789V21.93h20.847v15.86h1.985v-9.912h2.978l.001 14.869h1.986l-.001-24.186c0-2.515-1.842-4.561-4.106-4.561H16.106C13.84 14 12 16.046 12 18.56v28.548c0 2.515 1.841 4.56 4.106 4.56h26.668v-1.982H16.106c-1.149 0-2.12-1.18-2.12-2.578\" /></g></svg>;\nexport default SvgCognitoIdentity;","import * as React from \"react\";\nconst SvgCognitoIdp = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Cognito_64\"}</title><defs><linearGradient id=\"linearGradient-cgn\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#bd0816\" /><stop offset=\"100%\" stopColor=\"#ff5252\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Cognito_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"url(#linearGradient-cgn)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Cognito_Icon_64_Squid\" fill=\"#fff\" d=\"M16.964 35.808h12.905v-1.983H16.964zM61.376 50.23l1.403 1.402-7.372 7.36a.994.994 0 0 1-1.403 0l-3.71-3.702L51.7 53.89l3.006 3.001zm4.568 5.463a9.44 9.44 0 0 1-2.197 5.015 9.55 9.55 0 0 1-3.143 2.406 9.37 9.37 0 0 1-5.158.833 9.4 9.4 0 0 1-4.706-1.966 9.43 9.43 0 0 1-3.518-8.573 9.47 9.47 0 0 1 5.058-7.282 9.34 9.34 0 0 1 5.441-.972 9.43 9.43 0 0 1 7.26 5.088 9.45 9.45 0 0 1 .963 5.45m.806-6.35a11.406 11.406 0 0 0-15.381-4.978 11.45 11.45 0 0 0-6.118 8.805 11.4 11.4 0 0 0 4.254 10.364A11.38 11.38 0 0 0 56.592 66c1.68 0 3.338-.37 4.864-1.094a11.5 11.5 0 0 0 3.801-2.91 11.4 11.4 0 0 0 2.659-6.064 11.4 11.4 0 0 0-1.166-6.588m-39.86-7.588h3.972v-1.983H26.89zm-9.926 0h7.941v-1.983h-7.941zm-.858-25.773h44.402c1.17 0 2.12 1.156 2.12 2.578v7.334H59.65V20.94a.99.99 0 0 0-.993-.991H35.825a.99.99 0 0 0-.993.99v4.957H13.985v-7.334c0-1.398.972-2.578 2.12-2.578m31.15 9.625c2.305 0 4.18 1.853 4.18 4.131a4.11 4.11 0 0 1-2.163 3.608 4.25 4.25 0 0 1-4.043 0 4.11 4.11 0 0 1-2.154-3.608c0-2.278 1.874-4.131 4.18-4.131m-33.27 21.5v-19.23h20.846v16.851c0 .549.444.992.993.992h10.378v-1.983h-8.291a9.02 9.02 0 0 1 6.522-8.488c1.755.82 3.85.828 5.633-.001a9.1 9.1 0 0 1 5.226 4.005l1.699-1.027a11.1 11.1 0 0 0-5.147-4.432 6.05 6.05 0 0 0 1.577-4.056c0-3.37-2.767-6.114-6.166-6.114s-6.166 2.743-6.166 6.114c0 1.518.578 2.944 1.564 4.045a11 11 0 0 0-5.836 5.789V21.93h20.847v15.86h1.985v-9.912h2.978l.001 14.869h1.986l-.001-24.186c0-2.515-1.842-4.561-4.106-4.561H16.106C13.84 14 12 16.046 12 18.56v28.548c0 2.515 1.841 4.56 4.106 4.56h26.668v-1.982H16.106c-1.149 0-2.12-1.18-2.12-2.578\" /></g></svg>;\nexport default SvgCognitoIdp;","import * as React from \"react\";\nconst SvgConfig = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Config_16\"}</title><defs><linearGradient id=\"linearGradient-cf\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Config_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Management-Governance\" fill=\"url(#linearGradient-cf)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Config_Icon_16_Squid\" fill=\"#fff\" d=\"M16.059 15.04a.547.547 0 1 0-1.076.198.547.547 0 0 0 1.076-.198m.984-.178a1.548 1.548 0 0 1-1.521 1.822A1.55 1.55 0 0 1 14 15.414a1.54 1.54 0 0 1 .251-1.157c.236-.339.589-.567.996-.64a1.55 1.55 0 0 1 1.796 1.245m1.546.908-.003-1.297-.899-.103a.5.5 0 0 1-.348-.203l-.338-.463a.5.5 0 0 1-.086-.392l.176-.889-1.235-.399-.372.816a.5.5 0 0 1-.304.269l-.562.179a.5.5 0 0 1-.396-.04l-.778-.436-.761 1.052.663.608a.5.5 0 0 1 .162.365l.004.58a.5.5 0 0 1-.16.371l-.664.615.766 1.048.786-.445a.5.5 0 0 1 .402-.04l.551.18c.132.044.239.14.298.266l.378.818 1.233-.404-.178-.873a.5.5 0 0 1 .083-.39l.343-.481a.5.5 0 0 1 .348-.206zm1.001.443a.5.5 0 0 1-.44.497l-1.114.133-.088.124.222 1.096a.5.5 0 0 1-.335.575l-2.078.681a.5.5 0 0 1-.609-.265l-.474-1.025-.135-.044-.981.555a.5.5 0 0 1-.649-.14l-1.29-1.766a.5.5 0 0 1 .063-.662l.828-.768v-.143l-.831-.761a.5.5 0 0 1-.067-.662l1.282-1.772a.5.5 0 0 1 .649-.143l.978.546.145-.046.465-1.019a.495.495 0 0 1 .609-.268l2.081.672a.5.5 0 0 1 .337.572l-.219 1.111.08.111 1.123.128a.5.5 0 0 1 .443.495zm-3.601-6.26V7.984H17v-1h-1.011V5.953h-1v1.031h-.957v1h.957v1.969zm-3.94 2V9.996H13v-1h-.951V5.953h-1v3.043h-1.017v1h1.017v1.957zm-4.023 3V8.91H9v-1h-.974V5.953h-1V7.91h-.994v1h.994v6.043zM5 15.984h5v1H4.5a.5.5 0 0 1-.5-.5V4.5a.5.5 0 0 1 .5-.5h14.047a.5.5 0 0 1 .5.5v5.453h-1V5H5z\" /></g></svg>;\nexport default SvgConfig;","import * as React from \"react\";\nconst SvgDms = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Database-Migration-Service_64\"}</title><defs><linearGradient id=\"linearGradient-dms\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#055f4e\" /><stop offset=\"100%\" stopColor=\"#56c0a7\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Database-Migration-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-dms)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Database-Migration-Service_Icon_64_Squid\" fill=\"#fff\" d=\"M44 67h2v-7h-2zm-9-.14h2V60h-2zM53 65h2v-6h-2zm-27 0h2v-6h-2zm14-30c-7.511 0-12-2.034-12-4v-7.641C30.32 25.022 34.533 26 40 26c4.983 0 10.225-.894 13-2.8V31c0 1.932-5.223 4-13 4m0 10c-7.511 0-12-2.034-12-4v-6.641C30.32 36.022 34.533 37 40 37c4.983 0 10.225-.894 13-2.8V41c0 1.932-5.223 4-13 4m0 10c-7.794 0-12-2.061-12-4v-6.641C30.32 46.022 34.533 47 40 47c4.983 0 10.225-.894 13-2.8V51c0 1.932-5.223 4-13 4m0-39c7.661 0 13 2.108 13 4s-5.339 4-13 4c-7.511 0-12-2.034-12-4s4.489-4 12-4m0-2c-8.505 0-14 2.355-14 6v31c0 3.645 5.495 6 14 6 7.225 0 15-1.877 15-6V20c0-4.123-7.775-6-15-6\" /></g></svg>;\nexport default SvgDms;","import * as React from \"react\";\nconst SvgDocdb = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_Amazon-DocumentDB_16\"}</title><defs><linearGradient id=\"linearGradient-dcdb\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_Amazon-DocumentDB_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Database\" fill=\"url(#linearGradient-dcdb)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"Amazon-DocumentDB_Icon_16_Squid\" fill=\"#fff\" d=\"M9.5 5.032c2.747 0 4.5.917 4.5 1.549s-1.753 1.548-4.5 1.548S5 7.212 5 6.581c0-.632 1.753-1.549 4.5-1.549m0 7.742c1.019 0 2.007-.122 2.859-.352l-.254-.999c-.77.21-1.67.319-2.605.319-2.747 0-4.5-.917-4.5-1.548V8.107c1.061.69 2.813 1.054 4.5 1.054s3.439-.363 4.5-1.054v1.054h1V6.577C14.994 4.903 12.164 4 9.5 4c-2.605 0-5.364.866-5.488 2.47H4v11.174C4 19.191 6.552 20 9.073 20c1.167 0 2.298-.172 3.182-.485l-.324-.978c-.784.278-1.798.43-2.858.43-2.636 0-4.073-.874-4.073-1.323V15.85c1.061.69 2.813 1.054 4.5 1.054 1.019 0 2.007-.122 2.859-.352l-.254-.999c-.77.21-1.67.319-2.605.319-2.747 0-4.5-.917-4.5-1.548V11.72c1.061.69 2.813 1.054 4.5 1.054m9.5-.516h-1v-1.032h.1l.9.884zm0 6.194h-5v-7.226h3v1.548c0 .285.224.516.5.516H19zm.845-6.936-1.2-1.18a.5.5 0 0 0-.345-.142h-4.8c-.276 0-.5.23-.5.516v8.258c0 .285.224.516.5.516h6c.276 0 .5-.231.5-.516V11.89a.52.52 0 0 0-.155-.374\" /></g></svg>;\nexport default SvgDocdb;","import * as React from \"react\";\nconst SvgDynamodb = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-DynamoDB_64\"}</title><defs><linearGradient id=\"linearGradient-ddb\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-DynamoDB_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-ddb)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-DynamoDB_Icon_64_Squid\" fill=\"#fff\" d=\"M52.086 54.85c-3.338 2.699-10.341 4.125-17.042 4.125S21.337 57.548 18 54.85v5.436h.001c0 2.71 6.999 5.731 17.043 5.731 10.036 0 17.031-3.017 17.042-5.726zm.001-10.328 2-.01v.01c0 1.208-.605 2.336-1.783 3.369 1.428 1.256 1.783 2.489 1.783 3.367l-.001.017v9.01c0 5.01-9.811 7.715-19.042 7.715-9.209 0-18.994-2.693-19.041-7.68q-.002-.008-.003-.016v-9.05l.002-.007c.003-.878.359-2.106 1.785-3.36-1.417-1.251-1.777-2.472-1.786-3.343h.001l-.002-.01v-9.05l.002-.01c.003-.877.36-2.105 1.786-3.357-1.418-1.252-1.778-2.474-1.787-3.344h.001L16 28.76v-9.048l.002-.01C16.019 14.7 25.82 12 35.044 12c5.211 0 10.217.828 13.734 2.272l-.765 1.833c-3.283-1.348-8.01-2.121-12.969-2.121-10.044 0-17.043 3.02-17.043 5.733S25 25.45 35.044 25.45c.271.003.536 0 .804-.01l.084 1.982c-.296.012-.592.012-.888.012-6.702 0-13.707-1.427-17.044-4.126v5.432h.001v.023c.01 1.04 1.077 1.949 1.971 2.526 2.69 1.715 7.51 2.886 12.885 3.13l-.091 1.981c-5.445-.247-10.213-1.377-13.282-3.108-.756.565-1.483 1.33-1.483 2.197 0 2.711 6.999 5.732 17.043 5.732.985 0 1.963-.032 2.908-.098l.139 1.979c-.99.068-2.016.103-3.047.103-6.702 0-13.707-1.427-17.044-4.126v5.432h.001c.01 1.064 1.077 1.971 1.971 2.55 3.076 1.962 8.852 3.184 15.072 3.184h.44v1.984h-.44c-6.319 0-12.062-1.174-15.574-3.156-.752.564-1.469 1.325-1.469 2.185 0 2.712 6.999 5.734 17.043 5.734 10.036 0 17.031-3.018 17.042-5.727v-.011c-.002-.862-.722-1.623-1.476-2.187-.488.277-1.011.543-1.606.788l-.766-1.833c.726-.298 1.356-.62 1.873-.96.902-.588 1.976-1.507 1.976-2.54m8.566-14.505h-5.604a1 1 0 0 1-.827-.435.98.98 0 0 1-.103-.922l3.409-8.522H44.619l-6 11.902h6.382c.319 0 .619.152.808.407a.99.99 0 0 1 .145.886L40.258 51.09zm3.069-.305L38.723 55.54a1.006 1.006 0 0 1-1.233.165.99.99 0 0 1-.442-1.153l6.586-20.528h-6.633c-.347 0-.668-.178-.851-.47a.98.98 0 0 1-.043-.965l7-13.886a1 1 0 0 1 .894-.549h15c.33 0 .642.164.827.435a.98.98 0 0 1 .103.923l-3.41 8.521H63c.4 0 .763.238.92.603a.99.99 0 0 1-.198 1.076M19.455 60.674c1.417.799 3.201 1.47 5.302 1.994l.488-1.924c-1.899-.473-3.559-1.094-4.802-1.794zM24.757 46.8l.488-1.924c-1.899-.474-3.559-1.095-4.802-1.795l-.988 1.725c1.417.798 3.2 1.47 5.302 1.994m-5.302-17.863.988-1.725c1.241.7 2.902 1.32 4.802 1.795l-.488 1.923c-2.104-.525-3.887-1.196-5.302-1.993\" /></g></svg>;\nexport default SvgDynamodb;","import * as React from \"react\";\nconst SvgDynamodbstreams = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-DynamoDB_64\"}</title><defs><linearGradient id=\"linearGradient-ddb\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-DynamoDB_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-ddb)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-DynamoDB_Icon_64_Squid\" fill=\"#fff\" d=\"M52.086 54.85c-3.338 2.699-10.341 4.125-17.042 4.125S21.337 57.548 18 54.85v5.436h.001c0 2.71 6.999 5.731 17.043 5.731 10.036 0 17.031-3.017 17.042-5.726zm.001-10.328 2-.01v.01c0 1.208-.605 2.336-1.783 3.369 1.428 1.256 1.783 2.489 1.783 3.367l-.001.017v9.01c0 5.01-9.811 7.715-19.042 7.715-9.209 0-18.994-2.693-19.041-7.68q-.002-.008-.003-.016v-9.05l.002-.007c.003-.878.359-2.106 1.785-3.36-1.417-1.251-1.777-2.472-1.786-3.343h.001l-.002-.01v-9.05l.002-.01c.003-.877.36-2.105 1.786-3.357-1.418-1.252-1.778-2.474-1.787-3.344h.001L16 28.76v-9.048l.002-.01C16.019 14.7 25.82 12 35.044 12c5.211 0 10.217.828 13.734 2.272l-.765 1.833c-3.283-1.348-8.01-2.121-12.969-2.121-10.044 0-17.043 3.02-17.043 5.733S25 25.45 35.044 25.45c.271.003.536 0 .804-.01l.084 1.982c-.296.012-.592.012-.888.012-6.702 0-13.707-1.427-17.044-4.126v5.432h.001v.023c.01 1.04 1.077 1.949 1.971 2.526 2.69 1.715 7.51 2.886 12.885 3.13l-.091 1.981c-5.445-.247-10.213-1.377-13.282-3.108-.756.565-1.483 1.33-1.483 2.197 0 2.711 6.999 5.732 17.043 5.732.985 0 1.963-.032 2.908-.098l.139 1.979c-.99.068-2.016.103-3.047.103-6.702 0-13.707-1.427-17.044-4.126v5.432h.001c.01 1.064 1.077 1.971 1.971 2.55 3.076 1.962 8.852 3.184 15.072 3.184h.44v1.984h-.44c-6.319 0-12.062-1.174-15.574-3.156-.752.564-1.469 1.325-1.469 2.185 0 2.712 6.999 5.734 17.043 5.734 10.036 0 17.031-3.018 17.042-5.727v-.011c-.002-.862-.722-1.623-1.476-2.187-.488.277-1.011.543-1.606.788l-.766-1.833c.726-.298 1.356-.62 1.873-.96.902-.588 1.976-1.507 1.976-2.54m8.566-14.505h-5.604a1 1 0 0 1-.827-.435.98.98 0 0 1-.103-.922l3.409-8.522H44.619l-6 11.902h6.382c.319 0 .619.152.808.407a.99.99 0 0 1 .145.886L40.258 51.09zm3.069-.305L38.723 55.54a1.006 1.006 0 0 1-1.233.165.99.99 0 0 1-.442-1.153l6.586-20.528h-6.633c-.347 0-.668-.178-.851-.47a.98.98 0 0 1-.043-.965l7-13.886a1 1 0 0 1 .894-.549h15c.33 0 .642.164.827.435a.98.98 0 0 1 .103.923l-3.41 8.521H63c.4 0 .763.238.92.603a.99.99 0 0 1-.198 1.076M19.455 60.674c1.417.799 3.201 1.47 5.302 1.994l.488-1.924c-1.899-.473-3.559-1.094-4.802-1.794zM24.757 46.8l.488-1.924c-1.899-.474-3.559-1.095-4.802-1.795l-.988 1.725c1.417.798 3.2 1.47 5.302 1.994m-5.302-17.863.988-1.725c1.241.7 2.902 1.32 4.802 1.795l-.488 1.923c-2.104-.525-3.887-1.196-5.302-1.993\" /></g></svg>;\nexport default SvgDynamodbstreams;","import * as React from \"react\";\nconst SvgEc2 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-EC2_64\"}</title><defs><linearGradient id=\"linearGradient-ec2\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-EC2_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Compute\" fill=\"url(#linearGradient-ec2)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-EC2_Icon_64_Squid\" fill=\"#fff\" d=\"M27 53h25V28H27zm27-25h4v2h-4v4h4v2h-4v3h4v2h-4v4h4v2h-4v4h4v2h-4v.136A1.866 1.866 0 0 1 52.136 55H52v4h-2v-4h-4v4h-2v-4h-3v4h-2v-4h-4v4h-2v-4h-4v4h-2v-4h-.136A1.866 1.866 0 0 1 25 53.136V53h-3v-2h3v-4h-3v-2h3v-4h-3v-2h3v-3h-3v-2h3v-4h-3v-2h3v-.136c0-1.028.836-1.864 1.864-1.864H27v-4h2v4h4v-4h2v4h4v-4h2v4h3v-4h2v4h4v-4h2v4h.136c1.028 0 1.864.836 1.864 1.864zM41 65.876a.125.125 0 0 1-.124.124H14.124a.125.125 0 0 1-.124-.124V39.124c0-.068.056-.124.124-.124H20v-2h-5.876A2.127 2.127 0 0 0 12 39.124v26.752c0 1.171.953 2.124 2.124 2.124h26.752A2.127 2.127 0 0 0 43 65.876V61h-2zm27-51.752v26.752A2.127 2.127 0 0 1 65.876 43H60v-2h5.876a.125.125 0 0 0 .124-.124V14.124a.125.125 0 0 0-.124-.124H39.124a.125.125 0 0 0-.124.124V20h-2v-5.876c0-1.171.953-2.124 2.124-2.124h26.752c1.171 0 2.124.953 2.124 2.124\" /></g></svg>;\nexport default SvgEc2;","import * as React from \"react\";\nconst SvgEcr = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Elastic-Container-Registry_64\"}</title><defs><linearGradient id=\"linearGradient-ecr\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Elastic-Container-Registry_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Containers\" fill=\"url(#linearGradient-ecr)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Elastic-Container-Registry_Icon_64_Squid\" fill=\"#fff\" d=\"M38.788 37.578a1.62 1.62 0 0 0-.802 1.396V66.72L16.999 54.984V27.708l23.558-13.65 20.928 10.37zM63.92 24.402c0-.574-.307-1.11-.86-1.427l-21.714-10.76a1.6 1.6 0 0 0-1.606 0L15.802 26.085A1.62 1.62 0 0 0 15 27.48v27.736c0 .573.308 1.108.817 1.404l21.757 12.165a1.607 1.607 0 0 0 2.41-1.396V39.201l23.134-13.403c.495-.287.802-.821.802-1.396m.05 30.645L44.98 66.661v-10.4l9.901-6.388.068-.449c.018-.117.025-.117.025-.658l.03-12.406L64 31.148zm1.227-25.975a1.6 1.6 0 0 0-1.608 0l-9.575 5.546c-.3.164-1.006.548-1.006 1.34l-.032 12.76-9.125 5.888c-.545.325-.869.84-.869 1.383v11.32c0 .566.305 1.082.816 1.378.267.154.564.232.86.232.29 0 .581-.074.844-.227l19.666-12.028c.494-.288.8-.822.8-1.393L66 30.466c0-.573-.308-1.108-.803-1.394\" /></g></svg>;\nexport default SvgEcr;","import * as React from \"react\";\nconst SvgEcs = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Elastic-Container-Service_64\"}</title><defs><linearGradient id=\"linearGradient-ecs\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Elastic-Container-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Containers\" fill=\"url(#linearGradient-ecs)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Elastic-Container-Service_Icon_64_Squid\" fill=\"#fff\" d=\"m64 48.234-8-4.801V32a1 1 0 0 0-.496-.864L44 24.426v-9.674l20 11.819zm1.509-23.095-22-13a1 1 0 0 0-1.005-.008c-.311.178-.504.51-.504.869v12c0 .355.189.684.496.864L54 32.574V44a1 1 0 0 0 .486.857l10 6A.997.997 0 0 0 66 50V26a1 1 0 0 0-.491-.861M40.445 66.863 17 54.399V26.571l20-11.819v9.699l-10.537 6.705A1 1 0 0 0 26 32v17a1 1 0 0 0 .538.887l13.453 7c.289.15.633.151.921.001l13.052-6.744 8.032 4.82zm24.07-12.721-10-6a1 1 0 0 0-.974-.03l-13.086 6.761L28 48.393V32.549l10.537-6.705c.288-.184.463-.502.463-.844V13a1 1 0 0 0-1.509-.861l-22 13A1 1 0 0 0 15 26v29c0 .369.204.709.53.883l24.454 13a1 1 0 0 0 .953-.008l23.547-13a1.002 1.002 0 0 0 .031-1.733\" /></g></svg>;\nexport default SvgEcs;","import * as React from \"react\";\nconst SvgEfs = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_Amazon-Elastic-File-System_16\"}</title><defs><linearGradient id=\"linearGradient-efs\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_Amazon-Elastic-File-System_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Storage\" fill=\"url(#linearGradient-efs)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"Amazon-Elastic-File-System_Icon_16_Squid\" fill=\"#fff\" d=\"m19 18.293-1.646-1.646-.708.707L18.293 19H17v1h2.5a.5.5 0 0 0 .5-.5V17h-1zM6.646 16.647 5 18.293V17H4v2.5a.5.5 0 0 0 .5.5H7v-1H5.707l1.647-1.646zM19.5 4H17v1h1.293l-1.647 1.647.708.707L19 5.707V7h1V4.5a.5.5 0 0 0-.5-.5M5 5.707l1.646 1.647.708-.707L5.707 5H7V4H4.5a.5.5 0 0 0-.5.5V7h1zm10 6.41c0-.029-.024-.055-.038-.069-.039-.036-.09-.059-.108-.049L11.487 12a.5.5 0 0 1-.5-.5v-.007l-.536.005-.004.022c0 .275-.222.48-.499.48H9.25c-.147-.011-.248.031-.271.054L8.998 16H15zm.644-.8c.23.215.356.498.356.8V16.5a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5V12c0-.258.105-.499.297-.677.287-.268.695-.342.987-.322h.271c.094-.25.272-.501.601-.501h1.167c.314.057.48.279.567.5h2.93c.276-.026.59.099.824.317m.487-.345a.5.5 0 0 1-.397-.46c-.047-.802-.468-1.087-.816-1.087a.74.74 0 0 0-.59.312.501.501 0 0 1-.871-.131 3 3 0 0 0-.705-1.148c-.368-.367-1.384-1.153-2.808-.555-.803.338-1.458 1.348-1.458 2.252q.002.157.021.308a.5.5 0 0 1-.376.546c-.564.14-1.235.526-1.235 1.572l.004.128c.021.367.182.723.454.995l-.708.707a2.55 2.55 0 0 1-.745-1.653l-.005-.177c0-1.137.586-2.014 1.59-2.413v-.013c0-1.314.891-2.678 2.073-3.174 1.377-.577 2.834-.289 3.897.767q.385.38.657.881c.883-.475 2.289-.118 2.575 1.454 1.263.377 1.953 1.259 1.953 2.512 0 1.125-.518 1.948-1.457 2.319l-.368-.931c.563-.221.825-.663.825-1.388 0-.323 0-1.305-1.51-1.623\" /></g></svg>;\nexport default SvgEfs;","import * as React from \"react\";\nconst SvgEks = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Elastic-Container-Kubernetes_64\"}</title><defs><linearGradient id=\"linearGradient-eks\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Elastic-Container-Kubernetes_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Containers\" fill=\"url(#linearGradient-eks)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Elastic-Container-Kubernetes_Icon_64_Squid\" fill=\"#fff\" d=\"m46.842 32.199-6.829 7.921 7.428 8.664h-2.772L38 41v8h-2V32h2v7l6.181-6.801zM64 48.234l-8-4.801V32a1 1 0 0 0-.496-.864L44 24.426v-9.674l20 11.819zm1.509-23.095-22-13a1 1 0 0 0-1.005-.008c-.311.178-.504.51-.504.869v12c0 .355.189.684.496.864L54 32.574V44a1 1 0 0 0 .486.857l10 6A.997.997 0 0 0 66 50V26a1 1 0 0 0-.491-.861M40.445 66.863 17 54.399V26.571l20-11.819v9.699l-10.537 6.705A1 1 0 0 0 26 32v17a1 1 0 0 0 .538.887l13.453 7c.289.15.633.151.921.001l13.052-6.744 8.032 4.82zm24.07-12.721-10-6a1 1 0 0 0-.974-.03l-13.086 6.761L28 48.393V32.549l10.537-6.705c.288-.184.463-.502.463-.844V13a1 1 0 0 0-1.509-.861l-22 13A1 1 0 0 0 15 26v29c0 .369.204.709.53.883l24.454 13a1 1 0 0 0 .953-.008l23.547-13a1.002 1.002 0 0 0 .031-1.733\" /></g></svg>;\nexport default SvgEks;","import * as React from \"react\";\nconst SvgElasticache = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-ElastiCache_64\"}</title><defs><linearGradient id=\"linearGradient-elc\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-ElastiCache_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-elc)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-ElastiCache_Icon_64_Squid\" fill=\"#fff\" d=\"M51 61.555v-5.852c-2.534 1.637-7.096 2.41-11.444 2.41-4.74 0-8.435-.827-10.556-2.245v5.687C29 63.25 32.948 65 39.556 65 46.3 65 51 63.185 51 61.555M39.556 49.22c-4.74 0-8.435-.826-10.556-2.244v5.71c.031 1.688 3.973 3.427 10.556 3.427 6.723 0 11.413-1.804 11.444-3.43V46.81c-2.534 1.638-7.096 2.41-11.444 2.41M51 43.79v-6.76c-2.534 1.636-7.096 2.41-11.444 2.41-4.74 0-8.435-.827-10.556-2.245v6.6c.031 1.687 3.973 3.425 10.556 3.425 6.723 0 11.413-1.804 11.444-3.43m-22.003-9.797.001.009H29v.01c.031 1.688 3.973 3.427 10.556 3.427 7.342 0 11.413-2.022 11.444-3.43v-.007h.002l.001-.01c0-1.407-4.076-3.445-11.447-3.445-6.61 0-10.559 1.752-10.559 3.446M53 34.018v9.756h.003q-.001.013-.003.025v8.868h.003q-.001.013-.003.025v8.863C53 65.297 46.031 67 39.556 67 31.929 67 27 64.863 27 61.555v-8.857q-.002-.016-.003-.031H27v-8.862q-.002-.015-.003-.031H27v-9.75q-.002-.016-.003-.031c0-3.308 4.93-5.447 12.559-5.447 6.476 0 13.447 1.705 13.447 5.447q-.001.012-.003.025M67 21.12a1 1 0 0 0 1-1V15A1 1 0 0 0 67 14H13a1 1 0 0 0-1 1v5.12a1 1 0 0 0 1 1 2.21 2.21 0 0 1 2.214 2.2A2.21 2.21 0 0 1 13 25.522a1 1 0 0 0-1 1v20.482a1 1 0 0 0 1 1h10v-2h-5v-3h5v-2h-6a1 1 0 0 0-1 1v4h-2V27.401a4.21 4.21 0 0 0 3.214-4.08A4.21 4.21 0 0 0 14 19.239V16h52v3.24a4.21 4.21 0 0 0-3.214 4.08A4.21 4.21 0 0 0 66 27.402v18.602h-2v-4a1 1 0 0 0-1-1h-6v2h5v3h-5v2h10a1 1 0 0 0 1-1V26.521a1 1 0 0 0-1-1 2.21 2.21 0 0 1-2.214-2.2c0-1.213.993-2.2 2.214-2.2M28 28v-8a1 1 0 0 0-1-1h-6a1 1 0 0 0-1 1v17.001a1 1 0 0 0 1 1h3v-2h-2V21.001h4v7zm30 8.001h-1v2h2a1 1 0 0 0 1-1V20.001a1 1 0 0 0-1-1h-6a1 1 0 0 0-1 1v8h2v-7h4zm-8-9V20a1 1 0 0 0-1-1h-7a1 1 0 0 0-1 1v6h2v-5h5v6zm-13-1V21h-5v6h-2v-7a1 1 0 0 1 1-1h7a1 1 0 0 1 1 1v6z\" /></g></svg>;\nexport default SvgElasticache;","import * as React from \"react\";\nconst SvgElasticbeanstalk = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Elastic-Beanstalk_16\"}</title><defs><linearGradient id=\"linearGradient-ebs\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Elastic-Beanstalk_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Compute\" fill=\"url(#linearGradient-ebs)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Elastic-Beanstalk_Icon_16_Squid\" fill=\"#fff\" d=\"M14.999 13.643a.494.494 0 0 0-.5-.487c-.275 0-.5.218-.5.487s.225.487.5.487.5-.218.5-.487M11 9.747c0 .269.225.487.5.487s.5-.218.5-.487a.494.494 0 0 0-.5-.487c-.275 0-.5.218-.5.487m-2.998 2.922c0 .269.225.487.5.487s.5-.218.5-.487a.494.494 0 0 0-.5-.487c-.275 0-.5.218-.5.487m7.996.974c0 .634-.419 1.17-1 1.371v1.55a.494.494 0 0 1-.5.488H12V19h-1v-2.922H8.502a.494.494 0 0 1-.5-.487v-1.55c-.58-.202-1-.738-1-1.372 0-.806.673-1.461 1.5-1.461.826 0 1.499.655 1.499 1.46 0 .635-.419 1.17-1 1.372v1.064h2v-3.986c-.581-.201-1-.737-1-1.371 0-.806.673-1.461 1.5-1.461.826 0 1.499.655 1.499 1.46 0 .635-.42 1.17-1 1.372v4.96h1.999v-1.064c-.58-.201-1-.737-1-1.371 0-.806.673-1.461 1.5-1.461.826 0 1.499.655 1.499 1.46M20 12.06c0 1.746-1.103 2.88-2.95 3.03l-.083-.97c.927-.076 2.033-.495 2.033-2.06 0-1.122-.685-1.825-2.036-2.09a.49.49 0 0 1-.401-.448c-.064-1.063-.675-1.439-1.179-1.439-.337 0-.653.157-.867.432a.51.51 0 0 1-.472.187.5.5 0 0 1-.395-.314 3.8 3.8 0 0 0-.931-1.44c-.491-.465-1.84-1.462-3.741-.702-1.09.433-1.944 1.683-1.944 2.848q0 .194.024.385a.49.49 0 0 1-.375.533C6.054 10.16 5 10.627 5 12.038l.004.127c.058 1.02.928 1.847 2.024 1.953l-.097.97c-1.584-.153-2.84-1.374-2.923-2.841L4 12.037c0-1.354.753-2.395 2.036-2.852l-.001-.092c0-1.558 1.102-3.17 2.565-3.75 1.699-.677 3.499-.34 4.813.903q.526.496.885 1.164a2.1 2.1 0 0 1 1.086-.302c.902 0 1.906.625 2.135 1.989C19.122 9.521 20 10.562 20 12.059\" /></g></svg>;\nexport default SvgElasticbeanstalk;","import * as React from \"react\";\nconst SvgElasticsearch = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Elasticsearch-Service_64\"}</title><defs><linearGradient id=\"linearGradient-es\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Elasticsearch-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-es)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Elasticsearch-Service_Icon_64_Squid\" fill=\"#fff\" d=\"M44.26 51.33c-4.417 0-8.01-3.593-8.01-8.009s3.593-8.01 8.01-8.01 8.01 3.593 8.01 8.01-3.593 8.009-8.01 8.009m0-18.019c-5.52 0-10.01 4.49-10.01 10.01S38.74 53.33 44.26 53.33s10.01-4.49 10.01-10.009-4.49-10.01-10.01-10.01m20.288 28.035a1.774 1.774 0 0 1-2.496.131l-8.34-7.523a14.4 14.4 0 0 0 2.337-2.641l8.367 7.538c.723.652.781 1.773.132 2.495M32.011 43.321c0-6.755 5.495-12.25 12.249-12.25s12.249 5.495 12.249 12.25c0 6.754-5.495 12.249-12.249 12.249s-12.249-5.495-12.249-12.249m25.052 6.214a14.14 14.14 0 0 0 1.446-6.214c0-7.858-6.392-14.25-14.249-14.25s-14.249 6.392-14.249 14.25S36.403 57.57 44.26 57.57c2.899 0 5.596-.875 7.849-2.368l8.605 7.762a3.75 3.75 0 0 0 2.518.962 3.77 3.77 0 0 0 2.802-1.241 3.777 3.777 0 0 0-.278-5.319zM67 20v34h-2V21h-8v11h-2V20a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1M51 61h2v5a1 1 0 0 1-1 1H42a1 1 0 0 1-1-1v-6h2v5h8zm-8-35h-2V14a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v14h-2V15h-8zm-6 33h2v7a1 1 0 0 1-1 1H28a1 1 0 0 1-1-1V51h2v14h8zm-8-23h-2V23a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v4h-2v-3h-8zM15 65h8V31h-8zm9-36H14a1 1 0 0 0-1 1v36a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V30a1 1 0 0 0-1-1\" /></g></svg>;\nexport default SvgElasticsearch;","import * as React from \"react\";\nconst SvgElastictranscoder = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Elastic-Transcoder_64\"}</title><g id=\"Icon-Architecture/64/Arch_Amazon-Elastic-Transcoder_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Media-Services\" fill=\"#ed7100\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Elastic-Transcoder_Icon_64_Squid\" fill=\"#fff\" d=\"M14.797 33.529q-.014-.277-.014-.57c0-5.74 3.783-7.927 6.094-8.727a13 13 0 0 1-.018-.696c0-4.755 3.157-9.687 7.343-11.475 4.9-2.093 10.096-1.052 13.891 2.786 1.13 1.142 2.063 2.517 2.787 4.1 1.404-1.1 3.212-1.483 4.939-.972 2.429.715 4.063 2.94 4.456 6.013 1.397.349 3.713 1.202 5.372 3.19a12 12 0 0 0-1.112-.057c-.59 0-1.164.06-1.73.147-1.328-.933-2.804-1.312-3.646-1.458a1.007 1.007 0 0 1-.823-1.123c-.194-2.483-1.34-4.266-3.077-4.778-1.436-.422-2.98.14-3.929 1.437-.22.3-.59.452-.952.398a1 1 0 0 1-.795-.661c-.676-1.927-1.653-3.546-2.906-4.813-1.537-1.553-5.749-4.89-11.695-2.352-3.434 1.466-6.123 5.69-6.123 9.618 0 .431.024.862.074 1.283q.01.07.01.143c0 .485-.34.894-.799.989-2.025.533-5.361 2.15-5.361 7.007q0 .24.012.47a6.94 6.94 0 0 0 1.331 3.774h-2.337a8.95 8.95 0 0 1-.992-3.673M56.958 61.53v-4.556l4.197 2.279zm-.526-7.131a1 1 0 0 0-.987.022c-.302.181-.487.51-.487.866v7.932a1.01 1.01 0 0 0 1 1.008 1 1 0 0 0 .474-.121l7.306-3.966a1.01 1.01 0 0 0 0-1.775zm2.103 12.585c-4.116 0-7.466-3.376-7.466-7.526s3.35-7.526 7.466-7.526S66 55.308 66 59.458s-3.349 7.526-7.465 7.526M14 58.373h19V41.235H14zm44.535-27.22c4.116 0 7.465 3.377 7.465 7.526 0 4.15-3.349 7.527-7.465 7.527s-7.466-3.376-7.466-7.527 3.35-7.525 7.466-7.525m0 18.763c-4.772 0-8.72 3.582-9.363 8.217L35 52.449v-4.654l14.687-5.756c1.352 3.607 4.803 6.183 8.848 6.183 5.219 0 9.465-4.28 9.465-9.543 0-5.261-4.246-9.541-9.465-9.541s-9.466 4.28-9.466 9.541c0 .476.046.939.113 1.395L35 45.631v-5.404c0-.557-.447-1.008-1-1.008H13c-.553 0-1 .451-1 1.008V59.38c0 .556.447 1.008 1 1.008h21c.553 0 1-.452 1-1.008v-4.763l14.11 5.66c.416 4.88 4.48 8.722 9.425 8.722C63.754 69 68 64.72 68 59.458s-4.246-9.542-9.465-9.542m-1.577-13.34 4.197 2.279-4.197 2.278zm-1.513 7.11a1 1 0 0 0 .987.023l7.306-3.966a1.01 1.01 0 0 0 0-1.775L56.432 34a1 1 0 0 0-.987.022 1.01 1.01 0 0 0-.487.866v7.932c0 .354.185.684.487.866M21 46.982l5.762 3.226L21 52.789zm-1.545 8.204a1 1 0 0 0 .951.077l9-4.033c.347-.155.577-.495.593-.877a1.01 1.01 0 0 0-.514-.925l-9-5.04a.99.99 0 0 0-.992.011 1.01 1.01 0 0 0-.493.87v9.072c0 .34.171.66.455.845\" /></g></svg>;\nexport default SvgElastictranscoder;","import * as React from \"react\";\nconst SvgElb = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 40 40\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/32/Arch_Elastic-Load-Balancing_32\"}</title><defs><linearGradient id=\"linearGradient-elb\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/32/Arch_Elastic-Load-Balancing_32\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/32/Networking-Content-Delivery\" fill=\"url(#linearGradient-elb)\"><path id=\"Rectangle\" d=\"M0 0h40v40H0z\" /></g><path id=\"Elastic-Load-Balancing_Icon_32_Squid\" fill=\"#fff\" d=\"M15 27c-3.859 0-7-3.14-7-7s3.141-7 7-7 7 3.14 7 7-3.141 7-7 7m14 1c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2m0-20c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2m1 10.5c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2M22.931 21h4.12A3 3 0 0 0 30 23.5c1.654 0 3-1.346 3-3s-1.346-3-3-3a3 3 0 0 0-2.949 2.5H23c0-1.489-.416-2.88-1.128-4.075l4.827-4.023A2.98 2.98 0 0 0 29 13c1.654 0 3-1.346 3-3s-1.346-3-3-3-3 1.346-3 3c0 .361.074.702.191 1.022l-4.885 4.072A7.99 7.99 0 0 0 15 12c-4.411 0-8 3.589-8 8s3.589 8 8 8a7.99 7.99 0 0 0 6.306-3.094l4.885 4.072c-.117.32-.191.661-.191 1.022 0 1.654 1.346 3 3 3s3-1.346 3-3-1.346-3-3-3c-.929 0-1.75.433-2.301 1.098l-4.827-4.023A7.9 7.9 0 0 0 22.931 21\" /></g></svg>;\nexport default SvgElb;","import * as React from \"react\";\nconst SvgElbv2 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 40 40\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/32/Arch_Elastic-Load-Balancing_32\"}</title><defs><linearGradient id=\"linearGradient-elb\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/32/Arch_Elastic-Load-Balancing_32\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/32/Networking-Content-Delivery\" fill=\"url(#linearGradient-elb)\"><path id=\"Rectangle\" d=\"M0 0h40v40H0z\" /></g><path id=\"Elastic-Load-Balancing_Icon_32_Squid\" fill=\"#fff\" d=\"M15 27c-3.859 0-7-3.14-7-7s3.141-7 7-7 7 3.14 7 7-3.141 7-7 7m14 1c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2m0-20c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2m1 10.5c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2M22.931 21h4.12A3 3 0 0 0 30 23.5c1.654 0 3-1.346 3-3s-1.346-3-3-3a3 3 0 0 0-2.949 2.5H23c0-1.489-.416-2.88-1.128-4.075l4.827-4.023A2.98 2.98 0 0 0 29 13c1.654 0 3-1.346 3-3s-1.346-3-3-3-3 1.346-3 3c0 .361.074.702.191 1.022l-4.885 4.072A7.99 7.99 0 0 0 15 12c-4.411 0-8 3.589-8 8s3.589 8 8 8a7.99 7.99 0 0 0 6.306-3.094l4.885 4.072c-.117.32-.191.661-.191 1.022 0 1.654 1.346 3 3 3s3-1.346 3-3-1.346-3-3-3c-.929 0-1.75.433-2.301 1.098l-4.827-4.023A7.9 7.9 0 0 0 22.931 21\" /></g></svg>;\nexport default SvgElbv2;","import * as React from \"react\";\nconst SvgEmrServerless = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-EMR_64\"}</title><defs><linearGradient id=\"linearGradient-emr\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-EMR_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-emr)\" transform=\"translate(.504)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-EMR_Icon_64_Squid\" fill=\"#fff\" d=\"M64.815 47.688a4.04 4.04 0 0 0-2.868-1.187 4.04 4.04 0 0 0-2.869 1.187 4.04 4.04 0 0 0-1.189 2.872 4.059 4.059 0 0 0 6.926 2.872 4.07 4.07 0 0 0 0-5.744m-8.528.722a6 6 0 0 1 1.323-2.078l-2.153-4.104-2.682 5.072zm-6.402.075-11.798-3.73a12.9 12.9 0 0 1-2.897 4.434c-.164.163-.34.308-.51.46l5.203 7.228a6 6 0 0 1 3.338-1.003c.869 0 1.706.187 2.476.532zm-2.607 13.451a4.04 4.04 0 0 0-1.188-2.871 4.03 4.03 0 0 0-2.869-1.189 4.03 4.03 0 0 0-2.867 1.189 4.04 4.04 0 0 0-1.19 2.871c0 1.085.424 2.105 1.19 2.872a4.03 4.03 0 0 0 2.867 1.19 4.03 4.03 0 0 0 2.869-1.19 4.04 4.04 0 0 0 1.188-2.872M33.776 47.772c4.29-4.294 4.29-11.28 0-15.575a10.97 10.97 0 0 0-7.78-3.22 10.96 10.96 0 0 0-7.78 3.22c-4.29 4.294-4.29 11.28 0 15.575s11.27 4.295 15.56 0m.888-17.467c.175.157.357.307.526.476a12.95 12.95 0 0 1 2.82 4.237l11.754-3.633-4.084-7.782a6 6 0 0 1-2.459.524 6 6 0 0 1-3.353-1.013zm4.5-12.24c0 1.084.424 2.103 1.19 2.87a4.03 4.03 0 0 0 2.867 1.19 4.03 4.03 0 0 0 2.869-1.19 4.04 4.04 0 0 0 1.188-2.87 4.04 4.04 0 0 0-1.188-2.873 4.03 4.03 0 0 0-2.869-1.19 4.03 4.03 0 0 0-2.867 1.19 4.04 4.04 0 0 0-1.19 2.873m-.5 24.772 12.172 3.849 3.494-6.605-3.62-6.893-12.094 3.739c.466 1.941.484 3.963.049 5.91m13.992-10.25 2.807 5.348 2.632-4.98c-.142-.119-.297-.218-.43-.352a6 6 0 0 1-.965-1.266zm5.233-4.272a4.059 4.059 0 0 0 6.926 2.873 4.07 4.07 0 0 0 0-5.744 4.04 4.04 0 0 0-2.868-1.187 4.04 4.04 0 0 0-2.869 1.187 4.04 4.04 0 0 0-1.189 2.87m8.34 17.957a6.077 6.077 0 0 1 0 8.575 6.03 6.03 0 0 1-4.282 1.774 6.03 6.03 0 0 1-4.283-1.774 6.03 6.03 0 0 1-1.775-4.287c0-.058.007-.115.009-.173l-4.074-1.288-4.455 8.427c.044.042.091.08.135.123a6.03 6.03 0 0 1 1.775 4.287c0 1.62-.63 3.143-1.775 4.288A6.01 6.01 0 0 1 43.221 68a6 6 0 0 1-4.281-1.776 6.02 6.02 0 0 1-1.776-4.288c0-1.347.443-2.624 1.25-3.676l-5.311-7.377a13 13 0 0 1-7.108 2.112c-3.33 0-6.659-1.269-9.193-3.806-5.07-5.075-5.07-13.333 0-18.408 4.415-4.422 11.245-4.988 16.283-1.705l5.318-7.35a6 6 0 0 1-1.239-3.661 6.03 6.03 0 0 1 1.776-4.289A6 6 0 0 1 43.22 12c1.618 0 3.14.63 4.283 1.776a6.03 6.03 0 0 1 1.775 4.289c0 1.619-.63 3.142-1.775 4.286-.047.048-.1.09-.149.137l4.354 8.295 4.29-1.326a6.025 6.025 0 0 1 1.665-5.429 6.057 6.057 0 0 1 8.566 0 6.077 6.077 0 0 1 0 8.575 6.04 6.04 0 0 1-4.283 1.773 6.1 6.1 0 0 1-2.128-.398l-3.23 6.106 2.665 5.075c2.268-1.13 5.088-.775 6.976 1.113m-39.233-7.289h5v2.003h-5v5.006h-2v-5.006h-5.002v-2.003h5.001v-5.006h2z\" /></g></svg>;\nexport default SvgEmrServerless;","import * as React from \"react\";\nconst SvgEmr = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-EMR_64\"}</title><defs><linearGradient id=\"linearGradient-emr\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-EMR_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-emr)\" transform=\"translate(.504)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-EMR_Icon_64_Squid\" fill=\"#fff\" d=\"M64.815 47.688a4.04 4.04 0 0 0-2.868-1.187 4.04 4.04 0 0 0-2.869 1.187 4.04 4.04 0 0 0-1.189 2.872 4.059 4.059 0 0 0 6.926 2.872 4.07 4.07 0 0 0 0-5.744m-8.528.722a6 6 0 0 1 1.323-2.078l-2.153-4.104-2.682 5.072zm-6.402.075-11.798-3.73a12.9 12.9 0 0 1-2.897 4.434c-.164.163-.34.308-.51.46l5.203 7.228a6 6 0 0 1 3.338-1.003c.869 0 1.706.187 2.476.532zm-2.607 13.451a4.04 4.04 0 0 0-1.188-2.871 4.03 4.03 0 0 0-2.869-1.189 4.03 4.03 0 0 0-2.867 1.189 4.04 4.04 0 0 0-1.19 2.871c0 1.085.424 2.105 1.19 2.872a4.03 4.03 0 0 0 2.867 1.19 4.03 4.03 0 0 0 2.869-1.19 4.04 4.04 0 0 0 1.188-2.872M33.776 47.772c4.29-4.294 4.29-11.28 0-15.575a10.97 10.97 0 0 0-7.78-3.22 10.96 10.96 0 0 0-7.78 3.22c-4.29 4.294-4.29 11.28 0 15.575s11.27 4.295 15.56 0m.888-17.467c.175.157.357.307.526.476a12.95 12.95 0 0 1 2.82 4.237l11.754-3.633-4.084-7.782a6 6 0 0 1-2.459.524 6 6 0 0 1-3.353-1.013zm4.5-12.24c0 1.084.424 2.103 1.19 2.87a4.03 4.03 0 0 0 2.867 1.19 4.03 4.03 0 0 0 2.869-1.19 4.04 4.04 0 0 0 1.188-2.87 4.04 4.04 0 0 0-1.188-2.873 4.03 4.03 0 0 0-2.869-1.19 4.03 4.03 0 0 0-2.867 1.19 4.04 4.04 0 0 0-1.19 2.873m-.5 24.772 12.172 3.849 3.494-6.605-3.62-6.893-12.094 3.739c.466 1.941.484 3.963.049 5.91m13.992-10.25 2.807 5.348 2.632-4.98c-.142-.119-.297-.218-.43-.352a6 6 0 0 1-.965-1.266zm5.233-4.272a4.059 4.059 0 0 0 6.926 2.873 4.07 4.07 0 0 0 0-5.744 4.04 4.04 0 0 0-2.868-1.187 4.04 4.04 0 0 0-2.869 1.187 4.04 4.04 0 0 0-1.189 2.87m8.34 17.957a6.077 6.077 0 0 1 0 8.575 6.03 6.03 0 0 1-4.282 1.774 6.03 6.03 0 0 1-4.283-1.774 6.03 6.03 0 0 1-1.775-4.287c0-.058.007-.115.009-.173l-4.074-1.288-4.455 8.427c.044.042.091.08.135.123a6.03 6.03 0 0 1 1.775 4.287c0 1.62-.63 3.143-1.775 4.288A6.01 6.01 0 0 1 43.221 68a6 6 0 0 1-4.281-1.776 6.02 6.02 0 0 1-1.776-4.288c0-1.347.443-2.624 1.25-3.676l-5.311-7.377a13 13 0 0 1-7.108 2.112c-3.33 0-6.659-1.269-9.193-3.806-5.07-5.075-5.07-13.333 0-18.408 4.415-4.422 11.245-4.988 16.283-1.705l5.318-7.35a6 6 0 0 1-1.239-3.661 6.03 6.03 0 0 1 1.776-4.289A6 6 0 0 1 43.22 12c1.618 0 3.14.63 4.283 1.776a6.03 6.03 0 0 1 1.775 4.289c0 1.619-.63 3.142-1.775 4.286-.047.048-.1.09-.149.137l4.354 8.295 4.29-1.326a6.025 6.025 0 0 1 1.665-5.429 6.057 6.057 0 0 1 8.566 0 6.077 6.077 0 0 1 0 8.575 6.04 6.04 0 0 1-4.283 1.773 6.1 6.1 0 0 1-2.128-.398l-3.23 6.106 2.665 5.075c2.268-1.13 5.088-.775 6.976 1.113m-39.233-7.289h5v2.003h-5v5.006h-2v-5.006h-5.002v-2.003h5.001v-5.006h2z\" /></g></svg>;\nexport default SvgEmr;","import * as React from \"react\";\nconst SvgEvents = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-EventBridge_64\"}</title><defs><linearGradient id=\"linearGradient-ebr\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-EventBridge_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Application-Integration\" fill=\"url(#linearGradient-ebr)\" transform=\"translate(0 1)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-EventBridge_Icon_64_Squid\" fill=\"#fff\" d=\"M53.657 67c-2.143 0-3.887-1.753-3.887-3.909s1.744-3.909 3.887-3.909 3.887 1.753 3.887 3.909S55.8 67 53.657 67m-8.524-17H34.798l-5.168-9 5.168-9h10.335l5.167 9zM27.62 22.818c-2.143 0-3.887-1.753-3.887-3.909S25.478 15 27.62 15c2.144 0 3.888 1.753 3.888 3.909s-1.744 3.909-3.888 3.909m26.036 34.364c-.738 0-1.442.143-2.093.394L47.34 50.41l-.223.133L52.31 41.5c.177-.31.177-.69 0-1l-5.741-10a.99.99 0 0 0-.862-.5H35.258l.04-.024-3.871-6.572a5.9 5.9 0 0 0 2.071-4.495c0-3.258-2.636-5.909-5.877-5.909s-5.876 2.651-5.876 5.909 2.636 5.909 5.876 5.909c.739 0 1.443-.143 2.094-.394l3.615 6.133-5.71 9.943c-.177.31-.177.69 0 1l5.743 10c.178.31.506.5.861.5h11.482q.125-.002.241-.032l3.905 6.628a5.9 5.9 0 0 0-2.071 4.495c0 3.258 2.635 5.909 5.876 5.909 3.24 0 5.876-2.651 5.876-5.909s-2.635-5.909-5.876-5.909m5.927-24.078c-2.143 0-3.886-1.753-3.886-3.909s1.743-3.909 3.886-3.909 3.888 1.753 3.888 3.909-1.745 3.909-3.888 3.909m7.283 7.396-3.775-6.575a5.91 5.91 0 0 0 2.368-4.73c0-3.258-2.635-5.909-5.876-5.909-.824 0-1.61.173-2.323.484l-3.077-5.361a1 1 0 0 0-.861-.5H40.995v2h11.754l2.847 4.96a5.9 5.9 0 0 0-1.887 4.326c0 3.258 2.636 5.909 5.875 5.909.604 0 1.188-.093 1.737-.264L64.858 41l-4.966 8.648 1.722 1 5.253-9.148c.177-.31.177-.69 0-1M21.229 56.247c-2.144 0-3.888-1.754-3.888-3.909 0-2.156 1.744-3.909 3.888-3.909 2.143 0 3.887 1.753 3.887 3.909s-1.744 3.909-3.887 3.909m3.248 1.011a5.92 5.92 0 0 0 2.628-4.92c0-3.258-2.636-5.909-5.876-5.909-.939 0-1.823.228-2.61.623L15.143 41l5.759-10.029-1.723-1L13.133 40.5c-.177.31-.177.69 0 1l3.872 6.74a5.9 5.9 0 0 0-1.653 4.098c0 3.258 2.636 5.909 5.877 5.909.488 0 .96-.067 1.415-.181l3.172 5.525c.178.309.506.5.861.5h12.33v-2H27.25z\" /></g></svg>;\nexport default SvgEvents;","import * as React from \"react\";\nconst SvgFirehose = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Kinesis-Firehose_64\"}</title><defs><linearGradient id=\"linearGradient-fho\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Kinesis-Firehose_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-fho)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><g id=\"Icon-Service/64/Amazon-Kinesis-Data-Firehose\" fill=\"#fff\" transform=\"translate(8 8)\"><path id=\"Amazon-Kinesis-Data-Firehose_Icon_64_Squid\" d=\"m58.625 36.072-.742 1.856C54.685 36.649 50.784 36 46.288 36v-2c4.752 0 8.902.697 12.337 2.072m-.687-1.123C55.032 33.984 49.152 33 46.288 33v-2c2.896 0 8.751-.983 11.604-1.947l.64 1.894c-1.094.371-2.572.737-4.16 1.057 1.607.319 3.104.684 4.197 1.047zm.673-7.015C55.03 29.305 50.884 30 46.288 30v-2c4.351 0 8.256-.651 11.608-1.934zm-16.356 7.285-10 2.5V26.281l10 2.5zm-12 4.781h-3V24h3v16m13.242-12.97-11.242-2.811V23a1 1 0 0 0-1-1h-5a1 1 0 0 0-1 1v.93c-15.202-1.109-17-7.311-17-11.93V7h-2v5c0 8.469 6.23 13.023 19 13.927v1.036c-7.763-.311-13.337-1.536-17.469-3.836l-.973 1.747c4.429 2.467 10.313 3.77 18.442 4.09v2.014c-5.648-.134-13.299-.508-18.745-1.945L6 30.967c1.633.431 3.449.767 5.342 1.033-1.893.267-3.709.603-5.342 1.033l.51 1.934c5.447-1.437 13.098-1.811 18.745-1.944v2.014c-8.084.316-13.965 1.619-18.439 4.088l.967 1.751c4.175-2.304 9.762-3.52 17.472-3.829v1.021c-16.495 1.214-19 9.834-19 14.932l-.002.392c-.017 3.224-.007 3.582.008 3.715l1.991-.185c-.011-.182-.01-1.366.001-3.519L8.255 53c0-7.62 5.883-12.067 17-12.92V41a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1v-1.219l11.242-2.811a1 1 0 0 0 .758-.97v-8a1 1 0 0 0-.758-.97\" /></g></g></svg>;\nexport default SvgFirehose;","import * as React from \"react\";\nconst SvgFis = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Valkyrie_16\"}</title><defs><linearGradient id=\"linearGradient-fis\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Valkyrie_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-fis)\" d=\"M0 0h24v24H0z\" /><g id=\"Icon-Service/16/AWS-Valkyrie_16\" fill=\"#fff\" transform=\"translate(4 4)\"><path id=\"Fill-1\" d=\"M6.489 4.986a.5.5 0 1 0-.002-1.002.5.5 0 0 0 .002 1.002m0 1c-.827 0-1.5-.673-1.5-1.5s.673-1.5 1.5-1.5 1.5.673 1.5 1.5-.673 1.5-1.5 1.5M9.782 8.9l.707-.707.707.707.707-.707-.707-.707.707-.707-.707-.707-.707.707-.707-.707-.707.707.707.707-.707.707zm-3.793.086h-1v5a.5.5 0 0 0 1 0zm2 0h-1v5c0 .827-.673 1.5-1.5 1.5s-1.5-.673-1.5-1.5v-5h-1v-1h5zm7.776-1.166c0 2.332-1.919 3.09-2.933 3.165l-4.843.001v-1h4.806c.167-.016 1.97-.221 1.97-2.166 0-1.663-1.41-2.086-2.016-2.19a.5.5 0 0 1-.408-.574c-.002-.675-.29-1.186-.792-1.351a1.08 1.08 0 0 0-1.205.399.5.5 0 0 1-.874-.131c-.213-.606-.521-1.113-.915-1.508-.479-.483-1.796-1.521-3.653-.733-1.052.447-1.907 1.787-1.907 2.986l.027.436a.5.5 0 0 1-.375.515C2.032 5.827 1 6.314 1 7.798c0 1.124.606 1.743 1.115 2.064a.7.7 0 0 0 .445.124h.429v1h-.43c-.382 0-.666-.081-.977-.278C.991 10.335 0 9.461 0 7.798c0-1.411.74-2.496 2.001-2.973l-.005-.076C1.995 3.101 3.077 1.421 4.511.812 6.19.098 7.968.454 9.264 1.759q.513.516.863 1.207a2.06 2.06 0 0 1 1.734-.211c.823.271 1.352.998 1.458 1.979 1.246.342 2.446 1.298 2.446 3.086\" /></g></g></svg>;\nexport default SvgFis;","import * as React from \"react\";\nconst SvgGlacier = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Glacier_64\"}</title><defs><linearGradient id=\"linearGradient-glc\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Glacier_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-glc)\" d=\"M0 0h80v80H0z\" /><g id=\"Icon-Service/64/Amazon-Glacier_64\" fill=\"#fff\" transform=\"translate(8 8)\"><path id=\"Amazon-Glacier_Icon_64_Squid\" d=\"M7.066 12.912C7.91 15.867 17.648 19 30.5 19c12.83 0 22.558-3.122 23.43-6.073l.063-.45C53.92 11.16 46.364 6 30.5 6 14.633 6 7.08 11.161 7.006 12.478zM53.22 32.19l-.383 2.703c3.36.827 3.963.322 3.97.317 0-.024-.046-.9-3.587-3.02M37.68 57.56l.251 1.983a59 59 0 0 1-7.436.458c-7.633 0-19.719-1.69-19.853-6.223L5.093 13.253a3.4 3.4 0 0 1-.082-.596l-.003-.02h.001C5.007 12.59 5 12.546 5 12.5 5 9.034 14.933 4 30.5 4S56 9.034 56 12.5c0 .047-.009.093-.01.14l-.002.01a3.4 3.4 0 0 1-.09.642L53.52 30.054c3.347 1.91 4.99 3.402 5.248 4.786a1.95 1.95 0 0 1-.435 1.66c-.486.577-1.286.865-2.468.865-.88 0-1.979-.163-3.313-.482l-.128.904-1.98-.28.163-1.152c-6.165-1.82-14.622-5.674-18.68-7.595a2.38 2.38 0 0 1-1.527.562A2.406 2.406 0 0 1 28 26.92a2.406 2.406 0 0 1 2.402-2.403 2.406 2.406 0 0 1 2.403 2.403q-.002.021-.004.042c3.45 1.63 11.973 5.54 18.092 7.391l2.55-17.979C49.021 19.4 39.554 21 30.5 21c-9.07 0-18.553-1.606-22.962-4.64l5.093 37.205q.01.068.01.136c0 1.516 6.778 4.3 17.853 4.3 2.453 0 4.871-.15 7.184-.443m18.287-7.69 2.371 2.37-1.415 1.414L54.27 51h-4.753l2.26 3.917 3.811 1.073-.542 1.924-3.174-.893-.867 3.238-1.932-.518 1.007-3.76-2.354-4.084-2.323 4.017.977 3.84-1.937.492-.814-3.195-3.237.867-.517-1.932 3.76-1.007L45.934 51h-4.689l-2.729 2.662-1.396-1.432 2.361-2.303-2.37-2.37 1.414-1.414L41.382 49h4.671l-2.384-4.123-3.807-1.07.541-1.926 3.175.893.867-3.237 1.932.518-1.009 3.767 2.357 4.076 2.32-4.023-.976-3.833 1.937-.493.815 3.196 3.236-.867.518 1.931-3.766 1.01L49.4 49h4.594l2.938-2.866 1.397 1.432z\" /></g></g></svg>;\nexport default SvgGlacier;","import * as React from \"react\";\nconst SvgGlue = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Glue_64\"}</title><defs><linearGradient id=\"linearGradient-glu\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Glue_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-glu)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Glue_Icon_64_Squid\" fill=\"#fff\" d=\"M33 23h2v-2h-2zm-2 1v-4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1m10-7h2v-2h-2zm-2 1v-4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1m4 9h2v-2h-2zm-1-4h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1m-2 10.5c-1.761 0-8.146-.075-12.299-1.096l10.145 16.062c.1.16.154.345.154.534v2.277c1.404.407 2.701.411 4 .016V49c0-.189.054-.374.154-.534l10.145-16.062C48.146 33.425 41.761 33.5 40 33.5m-15.746-2.808a1.32 1.32 0 0 1-.254-.755c0-2.845 9.384-3.371 14.978-3.432l.021 2c-6.872.075-11.071.859-12.551 1.443 1.57.656 6.195 1.552 13.552 1.552 7.338 0 11.957-.891 13.539-1.546-.646-.261-1.984-.647-4.66-.974l.242-1.985c6.062.74 6.879 1.902 6.879 2.942 0 .273-.095.523-.254.755L44 49.29V52a1 1 0 0 1-.627.928 8.8 8.8 0 0 1-3.307.656c-1.11 0-2.242-.215-3.412-.646A1 1 0 0 1 36 52v-2.71zm22.67 28.925a1 1 0 0 1-.217 1.09l-6 6a.997.997 0 0 1-1.414 0l-6-6A1 1 0 0 1 34 59h3v-3h2v4a1 1 0 0 1-1 1h-1.586L40 64.586 43.586 61H42a1 1 0 0 1-1-1v-4h2v3h3a1 1 0 0 1 .924.617\" /></g></svg>;\nexport default SvgGlue;","import * as React from \"react\";\nconst SvgIam = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Identity-and-Access-Management_64\"}</title><defs><linearGradient id=\"linearGradient-iam\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#bd0816\" /><stop offset=\"100%\" stopColor=\"#ff5252\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Identity-and-Access-Management_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"url(#linearGradient-iam)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Identity-and-Access-Management_Icon_64_Squid\" fill=\"#fff\" d=\"M14 59h52V21H14zm54-39v40a1 1 0 0 1-1 1H13a1 1 0 0 1-1-1V20a1 1 0 0 1 1-1h54a1 1 0 0 1 1 1M44 48h15v-2H44zm13-6h5v-2h-5zm-13 0h8v-2h-8zm-15 4a1.001 1.001 0 0 0-2 0 1.001 1.001 0 0 0 2 0m2 0a3 3 0 0 1-2 2.816V51h-2v-2.185A2.995 2.995 0 0 1 25 46c0-1.654 1.346-3 3-3s3 1.346 3 3m-12 7.993L36.994 54l.002-4H33v-2h3.996l.002-3H33v-2h3.999L37 40.007 19.006 40zm3-15.992 12 .005V31c.001-2.303-2.803-4.323-6-4.325h-.004c-3.192 0-5.992 2.021-5.994 4.325zm-5 16.991L17.006 39a1 1 0 0 1 1-1l1.994.001.002-7.001c.002-3.488 3.588-6.325 7.994-6.325H28c4.412.002 8.001 2.84 8 6.325v7.007l2 .001a1 1 0 0 1 1 1L38.994 55a1 1 0 0 1-1 1L18 55.992a1 1 0 0 1-1-1M60 36h2v-2h-2zm-16 0h11v-2H44z\" /></g></svg>;\nexport default SvgIam;","import * as React from \"react\";\nconst SvgIdentitystore = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-IAM-Identity-Center_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-IAM-Identity-Center_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"#dd344c\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-IAM-Identity-Center_Icon_64_Squid\" fill=\"#fff\" d=\"M67.438 62.325 52.56 47.447a1 1 0 0 1-.181-1.167c2.078-4.003 1.28-9.048-1.94-12.268a10.45 10.45 0 0 0-8.691-3c-3.23.392-6.078 2.256-7.812 5.117-2.038 3.359-1.947 7.668.23 10.979 3.021 4.595 8.91 6.184 13.698 3.7.387-.2.858-.127 1.168.182l2.468 2.468a1 1 0 0 1 .292.707v3.243h3.243c.264 0 .519.105.707.292l1.415 1.414c.187.188.293.442.293.708v3.242h3.242c.266 0 .519.106.707.293l1.855 1.856 3.942.263zm2.029-.305-.353 4.596a1 1 0 0 1-.996.923q-.034 0-.068-.002l-5.303-.354a1 1 0 0 1-.641-.29l-1.828-1.83H56.45a1 1 0 0 1-1-1v-3.827l-.829-.828h-3.829a1 1 0 0 1-1-1v-3.83l-1.672-1.672c-5.574 2.486-12.179.544-15.626-4.7-2.598-3.951-2.703-9.1-.269-13.114 2.056-3.39 5.44-5.6 9.282-6.064a12.44 12.44 0 0 1 10.346 3.57c3.653 3.653 4.683 9.286 2.622 13.936l14.702 14.702a1 1 0 0 1 .29.784M45.423 41.346a2.48 2.48 0 0 0-.733-1.768 2.48 2.48 0 0 0-1.768-.733c-.667 0-1.295.26-1.767.732a2.503 2.503 0 0 0 0 3.536c.974.975 2.56.975 3.535 0 .473-.473.733-1.1.733-1.767m.681-3.183a4.47 4.47 0 0 1 1.319 3.183 4.47 4.47 0 0 1-1.319 3.18v.002a4.49 4.49 0 0 1-3.182 1.315 4.48 4.48 0 0 1-3.181-1.316 4.506 4.506 0 0 1 0-6.364 4.47 4.47 0 0 1 3.181-1.318c1.203 0 2.332.468 3.182 1.318m-24.103 6.759H28v2h-6c-5.854-.013-10.674-4.165-10.976-9.454-.013-.25-.024-.481-.024-.713 0-6.524 4.627-8.95 7.351-9.81a14 14 0 0 1-.027-.875c0-5.35 3.757-10.888 8.739-12.881 5.807-2.344 11.965-1.178 16.463 3.118 1.187 1.12 2.705 2.794 3.769 4.835 1.136-.998 2.419-1.487 3.888-1.487 2.903 0 6.157 2.336 6.748 7.442C63.95 28.472 67 31.775 67 36.922c0 5.427-3.222 9.068-8.839 9.987l-.323-1.974C61.105 44.4 65 42.575 65 36.922c0-4.381-2.603-6.93-8.192-8.018a1 1 0 0 1-.807-.922c-.224-3.725-2.206-6.327-4.818-6.327-1.335 0-2.382.58-3.394 1.88-.223.287-.58.429-.941.376a1 1 0 0 1-.785-.638c-.872-2.33-2.609-4.285-3.913-5.515-3.919-3.742-9.278-4.754-14.342-2.713-4.198 1.679-7.484 6.522-7.484 11.025 0 .505.03.99.093 1.485q.006.056.007.113v.014c0 .505-.374.927-.86.996-2.499.634-6.564 2.52-6.564 8.077 0 .197.01.394.02.583.242 4.249 4.188 7.574 8.981 7.584\" /></g></svg>;\nexport default SvgIdentitystore;","import * as React from \"react\";\nconst SvgInfrastructure = props => <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"152.322 142.26 200 200\" width=\"1em\" height=\"1em\" fill=\"currentColor\" {...props}><defs><linearGradient id=\"gradient-0\" x1={250} x2={250} y1={180.147} y2={319.853} gradientTransform=\"rotate(55.846 328.855 173.433)scale(1.43158 1.22198)\" gradientUnits=\"userSpaceOnUse\"><stop offset={0} style={{\n stopColor: \"#3e3174\"\n }} /><stop offset={1} style={{\n stopColor: \"#18132c\"\n }} /></linearGradient><linearGradient id=\"paint0_linear_21_62\" x1={72.298} x2={13.442} y1={11.447} y2={69.721} gradientTransform=\"translate(195.584 153)\" gradientUnits=\"userSpaceOnUse\"><stop stopColor=\"#4d29b4\" /><stop offset={1} stopColor=\"#836fff\" /></linearGradient><linearGradient id=\"paint1_linear_21_62\" x1={46.837} x2={87.572} y1={34.241} y2={-5.772} gradientTransform=\"translate(195.584 153)\" gradientUnits=\"userSpaceOnUse\"><stop stopColor=\"#70ffe5\" /><stop offset={1} stopColor=\"#6295e1\" /></linearGradient><linearGradient id=\"paint2_linear_21_62\" x1={68.903} x2={30.593} y1={18.237} y2={54.613} gradientTransform=\"translate(195.584 153)\" gradientUnits=\"userSpaceOnUse\"><stop offset={0.007} stopColor=\"#654fec\" /><stop offset={1} stopColor=\"#71b2ff\" /></linearGradient></defs><g transform=\"translate(2.322 -7.74)\"><rect width={200} height={200} x={150} y={150} rx={30} ry={30} style={{\n stroke: \"#000\",\n fill: \"url(#gradient-0)\",\n strokeWidth: 0\n }} /><path fill=\"url(#paint0_linear_21_62)\" fillRule=\"evenodd\" d=\"M266.766 210.593c.928 0 1.393 1.122.736 1.778l-22.576 22.575c-.656.656-1.778.191-1.778-.737v-22.574c0-.576.466-1.042 1.041-1.042zm-69.617-21.272c-.928 0-1.393-1.122-.736-1.779l22.576-22.574c.656-.656 1.778-.191 1.778.737v22.574c0 .576-.466 1.042-1.041 1.042z\" clipRule=\"evenodd\" transform=\"translate(-98.841 -29.782)scale(1.47289)\" /><path fill=\"url(#paint1_linear_21_62)\" d=\"M246.294 185.616h30.242c.576 0 1.042-.466 1.042-1.042v-30.24c0-.575-.466-1.042-1.042-1.042h-30.242c-.575 0-1.042.467-1.042 1.042v30.24c0 .576.467 1.042 1.042 1.042\" transform=\"translate(-98.841 -29.782)scale(1.47289)\" /><path fill=\"url(#paint2_linear_21_62)\" d=\"M268.695 205.384h-41.676a1.04 1.04 0 0 1-1.042-1.042v-41.673c0-.576.466-1.042 1.042-1.042h11.982c.575 0 1.042.466 1.042 1.042v27.087c0 .576.466 1.042 1.042 1.042h27.61c.575 0 1.042.466 1.042 1.042v12.502c0 .575-.467 1.042-1.042 1.042\" transform=\"translate(-98.841 -29.782)scale(1.47289)\" /></g></svg>;\nexport default SvgInfrastructure;","import * as React from \"react\";\nconst SvgIotData = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-IoT-Core_64\"}</title><defs><linearGradient id=\"linearGradient-iot\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-IoT-Core_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Internet-of-Things\" fill=\"url(#linearGradient-iot)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-IoT-Core_Icon_64_Squid\" fill=\"#fff\" d=\"M57.423 47.906c0-1.11-.897-2.012-2-2.012s-2 .903-2 2.012c0 1.11.897 2.012 2 2.012s2-.902 2-2.012m-3.36 3.768a4.01 4.01 0 0 1-2.497-2.762h-2.143v8.071c1.94-1.165 3.672-3.132 4.64-5.309m-6.64 6.203v-9.97c0-.556.447-1.007 1-1.007h3.143a4 4 0 0 1 2.503-2.764c-1.107-2.54-3.378-4.826-5.897-5.934a4 4 0 0 1-2.748 2.52v17.555a10.3 10.3 0 0 0 2-.4m-4 .399V40.722a4 4 0 0 1-2.747-2.516c-2.524 1.122-4.794 3.405-5.899 5.93a4 4 0 0 1 2.503 2.764h3.143c.553 0 1 .45 1 1.006v9.948c.657.21 1.32.354 2 .422m-4-1.334v-8.03H37.28a4.01 4.01 0 0 1-2.495 2.762c.96 2.144 2.69 4.09 4.638 5.268m-6-7.024c1.103 0 2-.902 2-2.012s-.897-2.012-2-2.012-2 .903-2 2.012c0 1.11.897 2.012 2 2.012m9-13.076c0 1.109.897 2.011 2 2.011s2-.902 2-2.011c0-1.11-.897-2.012-2-2.012s-2 .902-2 2.012m16.999 11.064a4.016 4.016 0 0 1-3.289 3.951c-1.217 3.2-3.797 6.042-6.71 7.39V64h-2v-4.042c-.651.164-1.321.279-2 .334V64h-2v-3.708a12 12 0 0 1-2-.347V64h-2v-4.787c-2.927-1.374-5.504-4.195-6.71-7.356a4.017 4.017 0 0 1-.005-7.902c1.276-3.46 4.332-6.534 7.787-7.83.338-1.877 1.966-3.307 3.928-3.307 1.96 0 3.587 1.428 3.927 3.302 3.45 1.28 6.508 4.355 7.787 7.835a4.02 4.02 0 0 1 3.285 3.951m5.576-9.432c.045 2.737-1.036 5.393-2.891 7.148l-1.37-1.467c1.452-1.372 2.296-3.467 2.26-5.603 0-4.124-3.01-7.457-7-7.831a1.005 1.005 0 0 1-.905-1.063l.008-.119q.009-.102.01-.208c0-2.642-2.123-4.79-4.733-4.79-1.22 0-2.38.472-3.265 1.328a.999.999 0 0 1-1.629-.373c-1.664-4.477-5.95-7.484-10.662-7.484-6.285 0-11.397 5.173-11.397 11.533 0 .435-.278.826-.69.962C19.306 31.634 17 34.845 17 38.495c0 4.634 3.726 8.405 8.306 8.405h.119v2.012h-.12C19.624 48.912 15 44.239 15 38.495c0-4.28 2.562-8.074 6.444-9.654C21.81 21.695 27.67 16 34.822 16c5.096 0 9.766 2.986 12.004 7.555a6.64 6.64 0 0 1 3.552-1.026c3.551 0 6.469 2.791 6.717 6.317 4.565.861 7.904 4.85 7.904 9.628\" /></g></svg>;\nexport default SvgIotData;","import * as React from \"react\";\nconst SvgIot = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-IoT-Core_64\"}</title><defs><linearGradient id=\"linearGradient-iot\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-IoT-Core_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Internet-of-Things\" fill=\"url(#linearGradient-iot)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-IoT-Core_Icon_64_Squid\" fill=\"#fff\" d=\"M57.423 47.906c0-1.11-.897-2.012-2-2.012s-2 .903-2 2.012c0 1.11.897 2.012 2 2.012s2-.902 2-2.012m-3.36 3.768a4.01 4.01 0 0 1-2.497-2.762h-2.143v8.071c1.94-1.165 3.672-3.132 4.64-5.309m-6.64 6.203v-9.97c0-.556.447-1.007 1-1.007h3.143a4 4 0 0 1 2.503-2.764c-1.107-2.54-3.378-4.826-5.897-5.934a4 4 0 0 1-2.748 2.52v17.555a10.3 10.3 0 0 0 2-.4m-4 .399V40.722a4 4 0 0 1-2.747-2.516c-2.524 1.122-4.794 3.405-5.899 5.93a4 4 0 0 1 2.503 2.764h3.143c.553 0 1 .45 1 1.006v9.948c.657.21 1.32.354 2 .422m-4-1.334v-8.03H37.28a4.01 4.01 0 0 1-2.495 2.762c.96 2.144 2.69 4.09 4.638 5.268m-6-7.024c1.103 0 2-.902 2-2.012s-.897-2.012-2-2.012-2 .903-2 2.012c0 1.11.897 2.012 2 2.012m9-13.076c0 1.109.897 2.011 2 2.011s2-.902 2-2.011c0-1.11-.897-2.012-2-2.012s-2 .902-2 2.012m16.999 11.064a4.016 4.016 0 0 1-3.289 3.951c-1.217 3.2-3.797 6.042-6.71 7.39V64h-2v-4.042c-.651.164-1.321.279-2 .334V64h-2v-3.708a12 12 0 0 1-2-.347V64h-2v-4.787c-2.927-1.374-5.504-4.195-6.71-7.356a4.017 4.017 0 0 1-.005-7.902c1.276-3.46 4.332-6.534 7.787-7.83.338-1.877 1.966-3.307 3.928-3.307 1.96 0 3.587 1.428 3.927 3.302 3.45 1.28 6.508 4.355 7.787 7.835a4.02 4.02 0 0 1 3.285 3.951m5.576-9.432c.045 2.737-1.036 5.393-2.891 7.148l-1.37-1.467c1.452-1.372 2.296-3.467 2.26-5.603 0-4.124-3.01-7.457-7-7.831a1.005 1.005 0 0 1-.905-1.063l.008-.119q.009-.102.01-.208c0-2.642-2.123-4.79-4.733-4.79-1.22 0-2.38.472-3.265 1.328a.999.999 0 0 1-1.629-.373c-1.664-4.477-5.95-7.484-10.662-7.484-6.285 0-11.397 5.173-11.397 11.533 0 .435-.278.826-.69.962C19.306 31.634 17 34.845 17 38.495c0 4.634 3.726 8.405 8.306 8.405h.119v2.012h-.12C19.624 48.912 15 44.239 15 38.495c0-4.28 2.562-8.074 6.444-9.654C21.81 21.695 27.67 16 34.822 16c5.096 0 9.766 2.986 12.004 7.555a6.64 6.64 0 0 1 3.552-1.026c3.551 0 6.469 2.791 6.717 6.317 4.565.861 7.904 4.85 7.904 9.628\" /></g></svg>;\nexport default SvgIot;","import * as React from \"react\";\nconst SvgIotanalytics = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-IoT-Core_64\"}</title><defs><linearGradient id=\"linearGradient-iot\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-IoT-Core_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Internet-of-Things\" fill=\"url(#linearGradient-iot)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-IoT-Core_Icon_64_Squid\" fill=\"#fff\" d=\"M57.423 47.906c0-1.11-.897-2.012-2-2.012s-2 .903-2 2.012c0 1.11.897 2.012 2 2.012s2-.902 2-2.012m-3.36 3.768a4.01 4.01 0 0 1-2.497-2.762h-2.143v8.071c1.94-1.165 3.672-3.132 4.64-5.309m-6.64 6.203v-9.97c0-.556.447-1.007 1-1.007h3.143a4 4 0 0 1 2.503-2.764c-1.107-2.54-3.378-4.826-5.897-5.934a4 4 0 0 1-2.748 2.52v17.555a10.3 10.3 0 0 0 2-.4m-4 .399V40.722a4 4 0 0 1-2.747-2.516c-2.524 1.122-4.794 3.405-5.899 5.93a4 4 0 0 1 2.503 2.764h3.143c.553 0 1 .45 1 1.006v9.948c.657.21 1.32.354 2 .422m-4-1.334v-8.03H37.28a4.01 4.01 0 0 1-2.495 2.762c.96 2.144 2.69 4.09 4.638 5.268m-6-7.024c1.103 0 2-.902 2-2.012s-.897-2.012-2-2.012-2 .903-2 2.012c0 1.11.897 2.012 2 2.012m9-13.076c0 1.109.897 2.011 2 2.011s2-.902 2-2.011c0-1.11-.897-2.012-2-2.012s-2 .902-2 2.012m16.999 11.064a4.016 4.016 0 0 1-3.289 3.951c-1.217 3.2-3.797 6.042-6.71 7.39V64h-2v-4.042c-.651.164-1.321.279-2 .334V64h-2v-3.708a12 12 0 0 1-2-.347V64h-2v-4.787c-2.927-1.374-5.504-4.195-6.71-7.356a4.017 4.017 0 0 1-.005-7.902c1.276-3.46 4.332-6.534 7.787-7.83.338-1.877 1.966-3.307 3.928-3.307 1.96 0 3.587 1.428 3.927 3.302 3.45 1.28 6.508 4.355 7.787 7.835a4.02 4.02 0 0 1 3.285 3.951m5.576-9.432c.045 2.737-1.036 5.393-2.891 7.148l-1.37-1.467c1.452-1.372 2.296-3.467 2.26-5.603 0-4.124-3.01-7.457-7-7.831a1.005 1.005 0 0 1-.905-1.063l.008-.119q.009-.102.01-.208c0-2.642-2.123-4.79-4.733-4.79-1.22 0-2.38.472-3.265 1.328a.999.999 0 0 1-1.629-.373c-1.664-4.477-5.95-7.484-10.662-7.484-6.285 0-11.397 5.173-11.397 11.533 0 .435-.278.826-.69.962C19.306 31.634 17 34.845 17 38.495c0 4.634 3.726 8.405 8.306 8.405h.119v2.012h-.12C19.624 48.912 15 44.239 15 38.495c0-4.28 2.562-8.074 6.444-9.654C21.81 21.695 27.67 16 34.822 16c5.096 0 9.766 2.986 12.004 7.555a6.64 6.64 0 0 1 3.552-1.026c3.551 0 6.469 2.791 6.717 6.317 4.565.861 7.904 4.85 7.904 9.628\" /></g></svg>;\nexport default SvgIotanalytics;","import * as React from \"react\";\nconst SvgIotwireless = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-IoT-Core_64\"}</title><defs><linearGradient id=\"linearGradient-iot\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-IoT-Core_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Internet-of-Things\" fill=\"url(#linearGradient-iot)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-IoT-Core_Icon_64_Squid\" fill=\"#fff\" d=\"M57.423 47.906c0-1.11-.897-2.012-2-2.012s-2 .903-2 2.012c0 1.11.897 2.012 2 2.012s2-.902 2-2.012m-3.36 3.768a4.01 4.01 0 0 1-2.497-2.762h-2.143v8.071c1.94-1.165 3.672-3.132 4.64-5.309m-6.64 6.203v-9.97c0-.556.447-1.007 1-1.007h3.143a4 4 0 0 1 2.503-2.764c-1.107-2.54-3.378-4.826-5.897-5.934a4 4 0 0 1-2.748 2.52v17.555a10.3 10.3 0 0 0 2-.4m-4 .399V40.722a4 4 0 0 1-2.747-2.516c-2.524 1.122-4.794 3.405-5.899 5.93a4 4 0 0 1 2.503 2.764h3.143c.553 0 1 .45 1 1.006v9.948c.657.21 1.32.354 2 .422m-4-1.334v-8.03H37.28a4.01 4.01 0 0 1-2.495 2.762c.96 2.144 2.69 4.09 4.638 5.268m-6-7.024c1.103 0 2-.902 2-2.012s-.897-2.012-2-2.012-2 .903-2 2.012c0 1.11.897 2.012 2 2.012m9-13.076c0 1.109.897 2.011 2 2.011s2-.902 2-2.011c0-1.11-.897-2.012-2-2.012s-2 .902-2 2.012m16.999 11.064a4.016 4.016 0 0 1-3.289 3.951c-1.217 3.2-3.797 6.042-6.71 7.39V64h-2v-4.042c-.651.164-1.321.279-2 .334V64h-2v-3.708a12 12 0 0 1-2-.347V64h-2v-4.787c-2.927-1.374-5.504-4.195-6.71-7.356a4.017 4.017 0 0 1-.005-7.902c1.276-3.46 4.332-6.534 7.787-7.83.338-1.877 1.966-3.307 3.928-3.307 1.96 0 3.587 1.428 3.927 3.302 3.45 1.28 6.508 4.355 7.787 7.835a4.02 4.02 0 0 1 3.285 3.951m5.576-9.432c.045 2.737-1.036 5.393-2.891 7.148l-1.37-1.467c1.452-1.372 2.296-3.467 2.26-5.603 0-4.124-3.01-7.457-7-7.831a1.005 1.005 0 0 1-.905-1.063l.008-.119q.009-.102.01-.208c0-2.642-2.123-4.79-4.733-4.79-1.22 0-2.38.472-3.265 1.328a.999.999 0 0 1-1.629-.373c-1.664-4.477-5.95-7.484-10.662-7.484-6.285 0-11.397 5.173-11.397 11.533 0 .435-.278.826-.69.962C19.306 31.634 17 34.845 17 38.495c0 4.634 3.726 8.405 8.306 8.405h.119v2.012h-.12C19.624 48.912 15 44.239 15 38.495c0-4.28 2.562-8.074 6.444-9.654C21.81 21.695 27.67 16 34.822 16c5.096 0 9.766 2.986 12.004 7.555a6.64 6.64 0 0 1 3.552-1.026c3.551 0 6.469 2.791 6.717 6.317 4.565.861 7.904 4.85 7.904 9.628\" /></g></svg>;\nexport default SvgIotwireless;","import * as React from \"react\";\nconst SvgKafka = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_Amazon-Managed-Streaming-for-Kafka_16\"}</title><defs><linearGradient id=\"linearGradient-kfk\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_Amazon-Managed-Streaming-for-Kafka_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Analytics\" fill=\"url(#linearGradient-kfk)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"Amazon-Managed-Streaming-for-Kafka-Icon_16_Squid\" fill=\"#fff\" d=\"M7.725 11.188h8.55l-4.276-4.896zm-1.604.73a.52.52 0 0 1 .081-.553l5.41-6.196a.53.53 0 0 1 .775 0l5.41 6.196a.516.516 0 0 1-.388.856H6.59a.52.52 0 0 1-.468-.303m6.153-2.738.847-1.142h-.6l-.73 1.085V8.038h-.542v2.443h.541V9.3l.759 1.18h.643zm7.052 5.183-.204.176c-.506.444-1.427.444-1.936 0l-.403-.35c-.891-.783-2.399-.783-3.29-.002l-.405.352c-.505.444-1.429.444-1.938 0l-.401-.35c-.892-.784-2.4-.784-3.29-.002l-.406.353c-.507.442-1.428.442-1.936-.002l-.203-.175-.674.78.2.174c.446.391 1.047.586 1.647.586.598 0 1.197-.195 1.642-.584l.406-.353c.506-.444 1.427-.444 1.936.002l.403.349c.892.782 2.4.782 3.29 0l.406-.351c.505-.443 1.428-.444 1.937.002l.402.349c.892.783 2.4.78 3.289.002l.202-.176zm-.445 4.273c-.507.444-1.43.443-1.936-.002l-.402-.348c-.893-.784-2.4-.784-3.29-.002l-.405.352c-.506.444-1.43.444-1.937-.001l-.403-.35c-.893-.782-2.4-.781-3.289-.001l-.407.352c-.505.443-1.427.444-1.936-.002l-.202-.175-.674.78.2.174c.893.783 2.4.781 3.29.001l.405-.352c.505-.444 1.43-.444 1.936.001l.403.35c.894.782 2.4.781 3.29.001l.406-.352c.505-.445 1.427-.444 1.936.001l.403.35c.446.392 1.047.587 1.646.587.6 0 1.198-.195 1.642-.586l.203-.175-.675-.78zm.204-2.094.675.78-.203.176c-.444.39-1.043.585-1.642.585-.6 0-1.2-.196-1.646-.587l-.403-.35c-.51-.445-1.43-.445-1.936-.001l-.406.353c-.89.78-2.396.78-3.29-.002l-.403-.35c-.507-.444-1.43-.444-1.936 0l-.406.352c-.888.78-2.396.78-3.29-.002L4 17.322l.674-.78.202.175c.509.446 1.431.445 1.936.002l.407-.353c.89-.78 2.396-.78 3.29.002l.402.35c.507.444 1.43.444 1.937 0l.406-.352c.89-.78 2.396-.78 3.289.002l.402.35c.507.444 1.429.444 1.936.001z\" /></g></svg>;\nexport default SvgKafka;","import * as React from \"react\";\nconst SvgKinesis = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Kinesis_64\"}</title><defs><linearGradient id=\"linearGradient-kns\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Kinesis_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-kns)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Kinesis_Icon_64_Squid\" fill=\"#fff\" d=\"M19 62h2c0-8.406 5.465-17 46-17v-2c-42.297 0-48 9.604-48 19m6 6h2c0-7.566 0-19 40-19v-2c-18.337 0-30.272 2.359-36.49 7.212C25 58.512 25 63.996 25 68M15 26h-2c0 7.396 10.039 12.08 29.893 14C23.039 41.92 13 46.604 13 54h2c0-4.855 6.756-13 52-13v-2c-45.244 0-52-8.145-52-13m6-8h-2c0 9.396 5.703 19 48 19v-2c-40.535 0-46-8.594-46-17m46 13v2c-18.337 0-30.272-2.359-36.49-7.212C25 21.488 25 16.004 25 12h2c0 7.566 0 19 40 19\" /></g></svg>;\nexport default SvgKinesis;","import * as React from \"react\";\nconst SvgKinesisanalytics = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Kinesis_64\"}</title><defs><linearGradient id=\"linearGradient-kns\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Kinesis_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-kns)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Kinesis_Icon_64_Squid\" fill=\"#fff\" d=\"M19 62h2c0-8.406 5.465-17 46-17v-2c-42.297 0-48 9.604-48 19m6 6h2c0-7.566 0-19 40-19v-2c-18.337 0-30.272 2.359-36.49 7.212C25 58.512 25 63.996 25 68M15 26h-2c0 7.396 10.039 12.08 29.893 14C23.039 41.92 13 46.604 13 54h2c0-4.855 6.756-13 52-13v-2c-45.244 0-52-8.145-52-13m6-8h-2c0 9.396 5.703 19 48 19v-2c-40.535 0-46-8.594-46-17m46 13v2c-18.337 0-30.272-2.359-36.49-7.212C25 21.488 25 16.004 25 12h2c0 7.566 0 19 40 19\" /></g></svg>;\nexport default SvgKinesisanalytics;","import * as React from \"react\";\nconst SvgKinesisanalyticsv2 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Kinesis_64\"}</title><defs><linearGradient id=\"linearGradient-kns\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Kinesis_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-kns)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Kinesis_Icon_64_Squid\" fill=\"#fff\" d=\"M19 62h2c0-8.406 5.465-17 46-17v-2c-42.297 0-48 9.604-48 19m6 6h2c0-7.566 0-19 40-19v-2c-18.337 0-30.272 2.359-36.49 7.212C25 58.512 25 63.996 25 68M15 26h-2c0 7.396 10.039 12.08 29.893 14C23.039 41.92 13 46.604 13 54h2c0-4.855 6.756-13 52-13v-2c-45.244 0-52-8.145-52-13m6-8h-2c0 9.396 5.703 19 48 19v-2c-40.535 0-46-8.594-46-17m46 13v2c-18.337 0-30.272-2.359-36.49-7.212C25 21.488 25 16.004 25 12h2c0 7.566 0 19 40 19\" /></g></svg>;\nexport default SvgKinesisanalyticsv2;","import * as React from \"react\";\nconst SvgKms = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Key-Management-Services_64\"}</title><defs><linearGradient id=\"linearGradient-kms\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#bd0816\" /><stop offset=\"100%\" stopColor=\"#ff5252\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Key-Management-Services_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"url(#linearGradient-kms)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Key-Management-Services_Icon_64_Squid\" fill=\"#fff\" d=\"M51.997 52.496h7v-2h-7zm-9 0h7v-2h-7zm-9 0h7v-2h-7zm11-8c0-1.103.898-2 2-2 1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2m6 0c0-2.206-1.793-4-4-4s-4 1.794-4 4 1.794 4 4 4 4-1.794 4-4m-14-2c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .898-2 2-2m0 6c2.207 0 4-1.794 4-4s-1.793-4-4-4-4 1.794-4 4 1.794 4 4 4m29-15v23a1 1 0 0 1-1 1h-31v-2h30v-21h-22v-2h23a1 1 0 0 1 1 1m-35.301 5.047a1 1 0 0 0-.7.953v21.04l-2.398 2.057-2.601-2.973v-2.624a1 1 0 0 0-.293-.707l-2.292-2.293 2.292-2.293a1 1 0 0 0 .293-.707v-2a1 1 0 0 0-.293-.707l-2.292-2.293 2.292-2.293a1 1 0 0 0 .293-.707v-3.49a1 1 0 0 0-.698-.953c-5.142-1.63-8.182-6.919-7.07-12.304.803-3.88 3.787-6.99 7.602-7.926 3.249-.797 6.58-.1 9.14 1.907a10.45 10.45 0 0 1 4.026 8.266c0 4.553-3.002 8.685-7.301 10.047m9.3-10.047c0-3.864-1.745-7.45-4.79-9.84s-6.997-3.22-10.851-2.275c-4.561 1.117-8.126 4.832-9.084 9.463v.001C14 31.99 17.3 38.035 22.997 40.215v2.367L20.29 45.29a1 1 0 0 0 0 1.414l2.707 2.707v1.172L20.29 53.29a1 1 0 0 0 0 1.414l2.707 2.707v2.586c0 .242.088.476.248.66l3.5 4a1 1 0 0 0 1.403.1l3.5-3a1 1 0 0 0 .349-.76V40.204c4.746-1.832 8-6.542 8-11.708m-12.5 2.37a2.503 2.503 0 0 1-2.5-2.5c0-1.378 1.123-2.5 2.5-2.5 1.38 0 2.5 1.122 2.5 2.5 0 1.38-1.12 2.5-2.5 2.5m0-7a4.505 4.505 0 0 0-4.5 4.5c0 2.482 2.02 4.5 4.5 4.5 2.483 0 4.5-2.018 4.5-4.5 0-2.48-2.017-4.5-4.5-4.5\" /></g></svg>;\nexport default SvgKms;","import * as React from \"react\";\nconst SvgLakeformation = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Lake-Formation_16\"}</title><defs><linearGradient id=\"linearGradient-lf\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Lake-Formation_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Analytics\" fill=\"url(#linearGradient-lf)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Lake-Formation_Icon_16_Squid\" fill=\"#fff\" d=\"m14.146 15.146.707.707-2 2a.5.5 0 0 1-.707 0l-2-2 .707-.707L12 16.292V14.5h1v1.792zM12.5 19A6.51 6.51 0 0 1 6 12.5C6 8.916 8.916 6 12.5 6S19 8.916 19 12.5 16.083 19 12.5 19m0-14C8.364 5 5 8.364 5 12.5c0 4.135 3.364 7.5 7.5 7.5 4.135 0 7.5-3.365 7.5-7.5C20 8.364 16.635 5 12.5 5m1.035 6.298a.5.5 0 0 0-.053.224V13h-1.965v-1.478a.5.5 0 0 0-.053-.224L10.31 9h4.379zM15.5 8h-6a.5.5 0 0 0-.448.724l1.465 2.917V13.5a.5.5 0 0 0 .5.5h2.965a.5.5 0 0 0 .5-.5v-1.859l1.465-2.917A.503.503 0 0 0 15.5 8\" /></g></svg>;\nexport default SvgLakeformation;","import * as React from \"react\";\nconst SvgLambda = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Lambda_64\"}</title><defs><linearGradient id=\"linearGradient-lmb\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Lambda_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Compute\" fill=\"url(#linearGradient-lmb)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Lambda_Icon_64_Squid\" fill=\"#fff\" d=\"M28.008 66H15.59l13.733-28.704 6.222 12.81zm2.212-31.447a1 1 0 0 0-.902-.564h-.003a1 1 0 0 0-.903.569L13.098 66.569A1 1 0 0 0 14.002 68h14.64c.388 0 .74-.223.906-.572l8.016-16.9a1 1 0 0 0-.005-.863zM64.995 66H52.66L32.867 24.57a1 1 0 0 0-.905-.57H23.89l.009-10h15.82L59.42 55.429c.166.348.519.571.906.571h4.67zm1.003-12H60.96l-19.7-41.429a1 1 0 0 0-.907-.571H22.898c-.553 0-1.002.447-1.003.999l-.01 12A1 1 0 0 0 22.886 26h8.442l19.793 41.43c.167.348.517.57.904.57h13.972A1 1 0 0 0 67 67V55a1 1 0 0 0-1.002-1\" /></g></svg>;\nexport default SvgLambda;","import * as React from \"react\";\nconst SvgLogs = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-CloudWatch_64\"}</title><defs><linearGradient id=\"linearGradient-cwl\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-CloudWatch_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Management-Governance\" fill=\"url(#linearGradient-cwl)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-CloudWatch_Icon_64_Squid\" fill=\"#fff\" d=\"M55.06 46.777c0-3.909-3.202-7.09-7.138-7.09s-7.136 3.181-7.136 7.09c0 3.91 3.2 7.09 7.136 7.09s7.137-3.18 7.137-7.09m2.01 0c0 5.011-4.103 9.087-9.147 9.087-5.043 0-9.147-4.076-9.147-9.087 0-5.01 4.104-9.086 9.147-9.086s9.148 4.076 9.148 9.086m8.44 13.697L58.5 54.203a13 13 0 0 1-1.947 2.16l6.998 6.27a1.474 1.474 0 0 0 2.066-.107 1.453 1.453 0 0 0-.108-2.052m-17.588-2.812c6.043 0 10.958-4.883 10.958-10.885s-4.915-10.884-10.958-10.884c-6.041 0-10.957 4.882-10.957 10.884s4.916 10.885 10.957 10.885m19.19 6.2A3.48 3.48 0 0 1 64.529 65a3.48 3.48 0 0 1-2.322-.883L54.931 57.6a12.94 12.94 0 0 1-7.009 2.06c-7.15 0-12.967-5.779-12.967-12.882s5.817-12.881 12.967-12.881 12.969 5.779 12.969 12.881c0 2.038-.492 3.96-1.344 5.674l7.309 6.54a3.444 3.444 0 0 1 .256 4.872M21.28 29.393c0 .519.032 1.036.094 1.536a.994.994 0 0 1-.823 1.106c-2.472.634-6.54 2.553-6.54 8.31 0 4.348 2.413 6.748 4.439 7.996.691.433 1.51.664 2.373.673l12.122.011-.002 1.997-12.131-.01c-1.246-.014-2.428-.351-3.428-.977C15.377 48.797 12 45.89 12 40.345c0-6.683 4.6-9.153 7.3-10.026q-.03-.462-.03-.926c0-5.46 3.728-11.123 8.672-13.171 5.782-2.407 11.908-1.214 16.384 3.189 1.388 1.364 2.529 3.02 3.404 4.937a6.5 6.5 0 0 1 4.154-1.502c3.002 0 6.382 2.264 6.984 7.215 2.812.644 8.753 2.894 8.753 10.362 0 2.981-.941 5.444-2.798 7.319l-1.433-1.401c1.473-1.488 2.22-3.479 2.22-5.918 0-6.532-5.504-8.157-7.873-8.551a1 1 0 0 1-.823-1.157c-.329-4.055-2.753-5.872-5.03-5.872-1.437 0-2.784.695-3.697 1.907a1.006 1.006 0 0 1-1.75-.258c-.823-2.266-2.01-4.171-3.525-5.661-3.88-3.816-9.184-4.85-14.195-2.766-4.17 1.727-7.437 6.702-7.437 11.328\" /></g></svg>;\nexport default SvgLogs;","import * as React from \"react\";\nconst SvgManagedblockchain = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Managed-Blockchain_64\"}</title><g id=\"Icon-Architecture/64/Arch_Amazon-Managed-Blockchain_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Blockchain\" fill=\"#ed7100\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Managed-Blockchain-Icon_64_Squid\" fill=\"#fff\" d=\"m21.621 32.018-1.73-1.001A18.1 18.1 0 0 1 35.513 22c6.339 0 12.098 3.235 15.405 8.653l-1.707 1.042C46.27 26.877 41.149 24 35.513 24a16.1 16.1 0 0 0-13.892 8.018M49.199 48.25l1.731 1.001c-3.217 5.562-9.203 9.017-15.621 9.017-6.341 0-12.1-3.234-15.407-8.653l1.707-1.042c2.941 4.819 8.062 7.695 13.7 7.695a16.1 16.1 0 0 0 13.89-8.018m18.633-4.561-2 3-1.664-1.109.963-1.446H57v2a1 1 0 0 1-1 1H44a1 1 0 0 1-1-1v-3h-1v3a1 1 0 0 1-1 1H29a1 1 0 0 1-1-1v-3h-1v3a1 1 0 0 1-1 1H14a1 1 0 0 1-1-1v-12a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v4h1v-4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v4h1v-4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v2h4.131l-.963-1.445 1.664-1.109 2 3a1 1 0 0 1 0 1.109l-2 3-1.664-1.109.963-1.446H56a1 1 0 0 1-1-1v-2H45v4a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1v-4H30v4a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1v-4H15v10h10v-3a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v3h10v-3a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v3h10v-2a1 1 0 0 1 1-1h9.131l-.963-1.445 1.664-1.109 2 3a1 1 0 0 1 0 1.109M48 42.134h4v-4h-4zm-1-6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1zm-14 6h4v-4h-4zm-1-6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1zm-14 6h4v-4h-4zm-1-6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1z\" /></g></svg>;\nexport default SvgManagedblockchain;","import * as React from \"react\";\nconst SvgMediaconvert = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Elemental-MediaConvert_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-Elemental-MediaConvert_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Media-Services\" fill=\"#ed7100\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Elemental-MediaConvert_Icon_64_Squid\" fill=\"#fff\" d=\"m62 52.422-6.496 3.713.992 1.736 7-4a1 1 0 0 0 .504-.869v-7h-2zm-9-20.844L40 24.15l-13 7.43v15.876l13 8.359 13-8.359zm11-4.577v6.998h-2v-5.46l-7 3.11V48a1 1 0 0 1-.459.842L41 57.549v6.75l5.514-3.066.972 1.748-7 3.893a1 1 0 0 1-.972 0l-7-3.893.972-1.748L39 64.299v-6.75l-13.541-8.706A1 1 0 0 1 25 48V31.648l-7-3.111v5.462h-2V27c0-.36.192-.69.504-.87l7-4.002.992 1.736-5.283 3.022 6.73 2.991 13.561-7.75a1 1 0 0 1 .992 0l13.561 7.751 6.732-2.991-5.285-3.023.992-1.736 7 4.002c.312.18.504.51.504.87m-24 8.164-4 2.4v4.87l4 2.4 4-2.4v-4.87zm.515-2.023 4.529 2.717 3.509-1.754.894 1.79L46 37.617V43c0 .35-.185.677-.485.857L41 46.568v4.434h-2v-4.435l-4.515-2.71c-.3-.18-.485-.505-.485-.856v-5.383l-3.447-1.724.894-1.79 3.509 1.755 4.529-2.717a1 1 0 0 1 1.03 0M40 15.144l6.514 3.624.972-1.748-7-3.894a1 1 0 0 0-.972 0l-7 3.894.972 1.748zM18 52.42l6.496 3.716-.992 1.736-7-4.003a1 1 0 0 1-.504-.869v-6.998h2z\" /></g></svg>;\nexport default SvgMediaconvert;","import * as React from \"react\";\nconst SvgMediastoreData = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Elemental-MediaStore_16\"}</title><defs><linearGradient id=\"linearGradient-ms\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Elemental-MediaStore_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Media-Services\" fill=\"url(#linearGradient-ms)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Elemental-MediaStore_Icon_16_Squid\" fill=\"#fff\" d=\"M8.98 15.475 7.977 16l-1.002-.525v-1.393l1.002-.502 1.001.502zm1.001.302v-2.005a.5.5 0 0 0-.276-.448l-1.503-.752a.5.5 0 0 0-.449 0l-1.503.752a.5.5 0 0 0-.276.448v2.005c0 .187.104.358.268.445l1.503.788a.5.5 0 0 0 .465 0l1.503-.788a.5.5 0 0 0 .268-.445m7.013.894v-2.839l2.004-1.004v2.835zm-4.007-.75 2.478 1.519-2.478 1.246zM9.98 9.72V6.797l6.012 3.127v6.665l-3.006-1.845v-3.187a.5.5 0 0 0-.274-.447zm-1.002-2.9v2.39L6.613 8.009zm3.507-1.759 2.262 1.13-1.667 1.087-2.462-1.281zm4.003 3.99L14.102 7.81l1.685-1.098 2.623 1.31zM19 11.706l-2.005 1.005V9.92l2.004-1.075zm.724-4.149L12.71 4.053a.5.5 0 0 0-.448 0L5.278 7.558A.5.5 0 0 0 5 8.004l.001.001H5v4.011h1.002V8.823l5.983 3.04v6.746l-1.702-1.032-.52.858 2.458 1.49h.002l.003.003.001-.001a.5.5 0 0 0 .484.02l7.013-3.526a.5.5 0 0 0 .276-.448V8.005a.5.5 0 0 0-.277-.448\" /></g></svg>;\nexport default SvgMediastoreData;","import * as React from \"react\";\nconst SvgMediastore = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Elemental-MediaStore_16\"}</title><defs><linearGradient id=\"linearGradient-ms\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Elemental-MediaStore_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Media-Services\" fill=\"url(#linearGradient-ms)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Elemental-MediaStore_Icon_16_Squid\" fill=\"#fff\" d=\"M8.98 15.475 7.977 16l-1.002-.525v-1.393l1.002-.502 1.001.502zm1.001.302v-2.005a.5.5 0 0 0-.276-.448l-1.503-.752a.5.5 0 0 0-.449 0l-1.503.752a.5.5 0 0 0-.276.448v2.005c0 .187.104.358.268.445l1.503.788a.5.5 0 0 0 .465 0l1.503-.788a.5.5 0 0 0 .268-.445m7.013.894v-2.839l2.004-1.004v2.835zm-4.007-.75 2.478 1.519-2.478 1.246zM9.98 9.72V6.797l6.012 3.127v6.665l-3.006-1.845v-3.187a.5.5 0 0 0-.274-.447zm-1.002-2.9v2.39L6.613 8.009zm3.507-1.759 2.262 1.13-1.667 1.087-2.462-1.281zm4.003 3.99L14.102 7.81l1.685-1.098 2.623 1.31zM19 11.706l-2.005 1.005V9.92l2.004-1.075zm.724-4.149L12.71 4.053a.5.5 0 0 0-.448 0L5.278 7.558A.5.5 0 0 0 5 8.004l.001.001H5v4.011h1.002V8.823l5.983 3.04v6.746l-1.702-1.032-.52.858 2.458 1.49h.002l.003.003.001-.001a.5.5 0 0 0 .484.02l7.013-3.526a.5.5 0 0 0 .276-.448V8.005a.5.5 0 0 0-.277-.448\" /></g></svg>;\nexport default SvgMediastore;","import * as React from \"react\";\nconst SvgMemorydb = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-MemoryDB-for-Redis_64\"}</title><defs><linearGradient id=\"linearGradient-1\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-MemoryDB-for-Redis_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-1)\" d=\"M0 0h80v80H0z\" /><g id=\"Icon-Service/64/Amazon-MemoryDB-for-Redis_64\" fill=\"#fff\" transform=\"translate(8 8)\"><path id=\"Fill-1\" d=\"M22.979 17.248C12.823 17.248 6 14.34 6 11.624S12.823 6 22.979 6c10.036 0 16.033 2.86 16.033 5.624 0 2.765-5.997 5.624-16.033 5.624m15.43 15.483c1.94 0 3.876.217 5.752.645l.445-1.95A28 28 0 0 0 41 30.861V11.955h-.022c.009-.111.034-.218.034-.331C41.012 7.136 33.597 4 22.979 4 13.548 4 4 6.619 4 11.624c0 .114.031.22.04.331H4v40.358c0 2.88 3.13 5.205 8.814 6.546l.459-1.946C8.788 55.853 6 54.091 6 52.313v-9.607c1.295 1.045 3.198 1.933 5.648 2.613l.535-1.926C8.312 42.317 6 40.713 6 39.101v-9.74c3.073 2.535 9.256 3.91 15.417 4.165l.082-1.998C11.797 31.126 6 28.242 6 25.687V15.213c3.284 2.656 10.152 4.035 16.979 4.035 7.33 0 13.13-1.495 16.021-3.896v15.396c-.197-.004-.394-.017-.591-.017-10.349 0-19.797 5.699-24.659 14.871l1.768.937c4.513-8.517 13.284-13.808 22.891-13.808m13.228 3.643a25.7 25.7 0 0 0-5.176-2.36l.623-1.901a27.8 27.8 0 0 1 5.579 2.544zm-9.849 21.581a6.37 6.37 0 0 0-1.319-3.002l11.339-10.721c3.622 3.516 5.873 8.529 6.13 13.723zm-6.317-3.414a4.4 4.4 0 0 1 4.28 3.414h-8.559a4.4 4.4 0 0 1 4.279-3.414m17.804-11.696 3.675-3.474-1.375-1.454L38.988 53.6a6.35 6.35 0 0 0-3.517-1.059c-3.193 0-5.839 2.353-6.316 5.414H17.864c.515-10.764 9.305-19.359 20.037-19.359 2.886 0 5.669.598 8.274 1.779l.826-1.821a21.9 21.9 0 0 0-9.1-1.958c-12.164 0-22.061 10.03-22.061 22.359v1h44.122v-1c0-6.046-2.488-11.999-6.687-16.11\" /></g></g></svg>;\nexport default SvgMemorydb;","import * as React from \"react\";\nconst SvgMq = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_Amazon-MQ_16\"}</title><defs><linearGradient id=\"linearGradient-mq\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_Amazon-MQ_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Application-Integration\" fill=\"url(#linearGradient-mq)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"Amazon-MQ-Icon_16_Squid\" fill=\"#fff\" d=\"M8.005 12.983h1.002v-.99H8.005zm7.012 0h1.002v-.99h-1.002zm-2.227-1.76a3.2 3.2 0 0 1-1.556 0 5 5 0 0 1 0 2.434q.382-.096.778-.097.396.001.778.097a5 5 0 0 1 0-2.434m1.58-.908c-.965.953-.965 3.297 0 4.25a.494.494 0 0 1-.355.846.5.5 0 0 1-.353-.145 2.31 2.31 0 0 0-3.299 0 .505.505 0 0 1-.708 0 .49.49 0 0 1 0-.701c.964-.953.964-3.297 0-4.25a.49.49 0 0 1 0-.7.505.505 0 0 1 .708 0 2.31 2.31 0 0 0 3.299 0 .505.505 0 0 1 .708 0 .494.494 0 0 1 0 .7M6.865 8.064c0 .34.281.617.625.617a.62.62 0 0 0 .625-.617c0-.341-.28-.617-.625-.617a.62.62 0 0 0-.625.617m-1.001 0c0-.887.73-1.608 1.626-1.608.897 0 1.626.721 1.626 1.608A1.62 1.62 0 0 1 7.49 9.672a1.62 1.62 0 0 1-1.626-1.608m11.27 8.908c0-.34-.28-.618-.625-.618a.623.623 0 0 0-.625.618c0 .34.282.617.625.617a.62.62 0 0 0 .625-.617m1.001 0c0 .886-.729 1.607-1.626 1.607a1.62 1.62 0 0 1-1.626-1.607c0-.886.73-1.608 1.626-1.608.897 0 1.626.722 1.626 1.608M15.88 8.06c0 .34.282.617.625.617a.62.62 0 0 0 .624-.617.62.62 0 0 0-.624-.617.62.62 0 0 0-.625.617m-1.001 0c0-.887.73-1.607 1.626-1.607.897 0 1.626.72 1.626 1.607 0 .886-.73 1.608-1.626 1.608A1.62 1.62 0 0 1 14.88 8.06m-6.76 8.916c0-.34-.28-.618-.625-.618a.62.62 0 0 0-.624.618c0 .34.28.617.624.617a.62.62 0 0 0 .625-.617m1.001 0c0 .886-.729 1.607-1.626 1.607s-1.626-.72-1.626-1.607c0-.886.73-1.608 1.626-1.608a1.62 1.62 0 0 1 1.626 1.608m9.696-4.897a.626.626 0 0 0-.883 0 .61.61 0 0 0 0 .872.646.646 0 0 0 .883 0 .61.61 0 0 0 0-.872m.708 1.572a1.62 1.62 0 0 1-1.148.471c-.436 0-.844-.167-1.151-.47a1.595 1.595 0 0 1 0-2.273c.613-.607 1.684-.608 2.3 0a1.595 1.595 0 0 1 0 2.272M6.066 12.085a.62.62 0 0 0-.44-.182.62.62 0 0 0-.442.182.61.61 0 0 0 0 .872.645.645 0 0 0 .882 0 .61.61 0 0 0 0-.872m.71 1.572a1.62 1.62 0 0 1-1.15.471 1.62 1.62 0 0 1-1.15-.471 1.595 1.595 0 0 1 0-2.272c.614-.607 1.683-.608 2.3 0a1.597 1.597 0 0 1 0 2.272m2.995 3.785-.444.888c.914.446 1.78.67 2.643.67.864 0 1.73-.224 2.643-.67l-.444-.888c-1.542.752-2.856.753-4.398 0M9.75 7.448l-.4-.907a6.63 6.63 0 0 1 5.242 0l-.4.907a5.62 5.62 0 0 0-4.442 0\" /></g></svg>;\nexport default SvgMq;","import * as React from \"react\";\nconst SvgMwaa = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_CN-Pinwheel_16\"}</title><defs><linearGradient id=\"linearGradient-mwaa\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_CN-Pinwheel_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-mwaa)\" d=\"M0 0h24v24H0z\" /><g id=\"Icon-Service/16/CN-Pinwheel_16\" fill=\"#fff\" transform=\"translate(4 4)\"><path id=\"Fill-7\" d=\"M1 3h2V1H1zM.5 4h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5m14 8a.5.5 0 1 1 .002-1.002A.5.5 0 0 1 14.5 12m0-2c-.827 0-1.5.673-1.5 1.5s.673 1.5 1.5 1.5 1.5-.673 1.5-1.5-.673-1.5-1.5-1.5m0-6a.5.5 0 1 1 .002-1.002A.5.5 0 0 1 14.5 4m0-2c-.827 0-1.5.673-1.5 1.5S13.673 5 14.5 5 16 4.327 16 3.5 15.327 2 14.5 2m0 6a.5.5 0 1 1 .002-1.002A.5.5 0 0 1 14.5 8m0-2c-.827 0-1.5.673-1.5 1.5S13.673 9 14.5 9 16 8.327 16 7.5 15.327 6 14.5 6M16 0v1h-4v14h4v1h-4.5a.5.5 0 0 1-.5-.5V8H6V7h5V.5a.5.5 0 0 1 .5-.5zM1 9.191V6.809L3.382 8zm3.724-1.638-4-2A.5.5 0 0 0 0 6v4a.5.5 0 0 0 .724.447l4-2a.5.5 0 0 0 0-.894M2.5 15c-.827 0-1.5-.673-1.5-1.5S1.673 12 2.5 12s1.5.673 1.5 1.5S3.327 15 2.5 15m0-4A2.503 2.503 0 0 0 0 13.5C0 14.878 1.121 16 2.5 16S5 14.878 5 13.5 3.879 11 2.5 11\" /></g></g></svg>;\nexport default SvgMwaa;","import * as React from \"react\";\nconst SvgNeptune = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_Amazon-Neptune_16\"}</title><defs><linearGradient id=\"linearGradient-npt\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_Amazon-Neptune_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Database\" fill=\"url(#linearGradient-npt)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"Amazon-Neptune_Icon_16_Squid\" fill=\"#fff\" d=\"M16.435 18.968a.316.316 0 1 1 .001-.632.316.316 0 0 1-.001.632m-1.424-4.75a.87.87 0 0 1 1.74 0 .87.87 0 0 1-1.74 0m3.64-4.197a.316.316 0 1 1 0 .632.316.316 0 0 1 0-.632m-6.097 5.62a.315.315 0 1 1 0-.63.315.315 0 0 1 0 .63m6.376 0c-.59 0-1.07.48-1.07 1.071 0 .025.011.046.014.07l-.986.615c-.07-.026-.146-.031-.22-.045v-1.409a1.9 1.9 0 0 0 1.115-1.726c0-.424-.146-.812-.381-1.129l.88-1.478c.12.035.239.074.37.074A1.35 1.35 0 0 0 20 10.337a1.35 1.35 0 0 0-1.348-1.348 1.35 1.35 0 0 0-1.347 1.348c0 .225.069.427.167.614l-.893 1.501a1.9 1.9 0 0 0-.699-.136c-.305 0-.59.078-.845.207l-.613-.627c.01-.058.035-.112.035-.174 0-.59-.48-1.07-1.07-1.07a1.072 1.072 0 0 0 0 2.142c.139 0 .269-.032.39-.08l.493.504a1.9 1.9 0 0 0-.291 1l.002.017-.52.108a1.33 1.33 0 0 0-.907-.364 1.348 1.348 0 1 0 1.348 1.347c0-.007-.004-.012-.004-.02l.377-.078c.295.467.789.793 1.362.867v1.5c-.326.248-.55.62-.55 1.057 0 .743.604 1.348 1.348 1.348a1.35 1.35 0 0 0 1.238-1.877l.763-.476c.15.079.313.136.494.136a1.071 1.071 0 0 0 0-2.141M9.228 5.032c2.561 0 4.197.844 4.197 1.424S11.789 7.88 9.228 7.88s-4.196-.843-4.196-1.424c0-.58 1.634-1.424 4.196-1.424m0 13.661c-2.522 0-4.196-.811-4.196-1.348v-1.796c1.058.63 2.778.96 4.432.96v-1.031c-2.75 0-4.432-.895-4.432-1.383v-2.274c1.058.631 2.778.96 4.432.96.485 0 .966-.027 1.43-.081l-.12-1.025q-.64.075-1.31.074c-2.75 0-4.432-.894-4.432-1.382V7.961c1.015.624 2.635.952 4.196.952s3.182-.328 4.197-.952v1.344h1.032v-2.85C14.457 4.862 11.764 4 9.228 4S4 4.86 4 6.456v10.889c0 1.563 2.63 2.38 5.228 2.38 2.599 0 5.229-.817 5.229-2.38h-1.032c0 .537-1.674 1.348-4.197 1.348\" /></g></svg>;\nexport default SvgNeptune;","import * as React from \"react\";\nconst SvgOpensearch = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Elasticsearch-Service_64\"}</title><defs><linearGradient id=\"linearGradient-es\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Elasticsearch-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-es)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Elasticsearch-Service_Icon_64_Squid\" fill=\"#fff\" d=\"M44.26 51.33c-4.417 0-8.01-3.593-8.01-8.009s3.593-8.01 8.01-8.01 8.01 3.593 8.01 8.01-3.593 8.009-8.01 8.009m0-18.019c-5.52 0-10.01 4.49-10.01 10.01S38.74 53.33 44.26 53.33s10.01-4.49 10.01-10.009-4.49-10.01-10.01-10.01m20.288 28.035a1.774 1.774 0 0 1-2.496.131l-8.34-7.523a14.4 14.4 0 0 0 2.337-2.641l8.367 7.538c.723.652.781 1.773.132 2.495M32.011 43.321c0-6.755 5.495-12.25 12.249-12.25s12.249 5.495 12.249 12.25c0 6.754-5.495 12.249-12.249 12.249s-12.249-5.495-12.249-12.249m25.052 6.214a14.14 14.14 0 0 0 1.446-6.214c0-7.858-6.392-14.25-14.249-14.25s-14.249 6.392-14.249 14.25S36.403 57.57 44.26 57.57c2.899 0 5.596-.875 7.849-2.368l8.605 7.762a3.75 3.75 0 0 0 2.518.962 3.77 3.77 0 0 0 2.802-1.241 3.777 3.777 0 0 0-.278-5.319zM67 20v34h-2V21h-8v11h-2V20a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1M51 61h2v5a1 1 0 0 1-1 1H42a1 1 0 0 1-1-1v-6h2v5h8zm-8-35h-2V14a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v14h-2V15h-8zm-6 33h2v7a1 1 0 0 1-1 1H28a1 1 0 0 1-1-1V51h2v14h8zm-8-23h-2V23a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v4h-2v-3h-8zM15 65h8V31h-8zm9-36H14a1 1 0 0 0-1 1v36a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V30a1 1 0 0 0-1-1\" /></g></svg>;\nexport default SvgOpensearch;","import * as React from \"react\";\nconst SvgOrganizations = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Organizations_16\"}</title><defs><linearGradient id=\"linearGradient-org\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Organizations_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Management-Governance\" fill=\"url(#linearGradient-org)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Organizations_Icon_16_Squid\" fill=\"#fff\" d=\"M19.001 19.003h-1.06v-1.06h1.061zm-5.994 0h-1.014v-1.06h1.014zm-5.993 0H5.999v-1.06h1.015zM19.5 16.945H19v-1.496a.5.5 0 0 0-.5-.498h-5.494v-.562h-.998v.562H6.514c-.275 0-.5.222-.5.498v1.496H5.5a.5.5 0 0 0-.499.5V19.5a.5.5 0 0 0 .5.499h2.013a.5.5 0 0 0 .5-.499v-2.056a.5.5 0 0 0-.5-.5h-.5v-.998h4.996v.998h-.516a.5.5 0 0 0-.5.5V19.5a.5.5 0 0 0 .5.499h2.014a.5.5 0 0 0 .5-.499v-2.056a.5.5 0 0 0-.5-.5h-.5v-.998h4.995v.998h-.561a.5.5 0 0 0-.5.5V19.5a.5.5 0 0 0 .5.499h2.06a.5.5 0 0 0 .499-.499v-2.056a.5.5 0 0 0-.5-.5M12.499 6.042l2.702 1.163-2.712 1.218-2.716-1.217zm.498 6.568L12.99 9.29l2.952-1.324v2.957zm-3.97-4.645 2.964 1.326.008 3.32-2.971-1.688zm-.746 3.681 3.972 2.258a.5.5 0 0 0 .496-.001l3.942-2.257a.5.5 0 0 0 .25-.433V7.196c0-.2-.12-.38-.301-.458L12.698 5.04a.5.5 0 0 0-.394 0L8.331 6.736a.5.5 0 0 0-.302.459v4.017c0 .18.096.346.252.433\" /></g></svg>;\nexport default SvgOrganizations;","import * as React from \"react\";\nconst SvgPinpoint = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Pinpoint-APIs_64\"}</title><defs><linearGradient id=\"linearGradient-elc\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Pinpoint-APIs_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Business-Applications\" fill=\"url(#linearGradient-elc)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><g id=\"Icon-Service/64/Amazon-Pinpoint\" fill=\"#fff\" transform=\"translate(16 16)\"><path id=\"Amazon-Pinpoint-Icon_64_Squid\" d=\"m23.293 23.293 4.18-4.179A5.96 5.96 0 0 0 24.004 18a6.003 6.003 0 0 0-5.997 5.997 6.003 6.003 0 0 0 5.997 5.996A6 6 0 0 0 30 23.997a5.96 5.96 0 0 0-1.113-3.469l-4.18 4.179zm11.276-8.448-4.256 4.257A7.95 7.95 0 0 1 32 23.997c0 4.409-3.587 7.996-7.996 7.996s-7.997-3.587-7.997-7.996S19.595 16 24.004 16a7.94 7.94 0 0 1 4.894 1.688l4.257-4.257A13.92 13.92 0 0 0 24.004 10c-7.718 0-13.997 6.279-13.997 13.997 0 7.717 6.279 13.996 13.997 13.996S38 31.714 38 23.997c0-3.5-1.3-6.696-3.431-9.152m2.461-7.33A3.49 3.49 0 0 0 40.515 11 3.49 3.49 0 0 0 44 7.515a3.49 3.49 0 0 0-3.485-3.485 3.49 3.49 0 0 0-3.485 3.485m-2.462 4.502 1.416-1.415a5.46 5.46 0 0 1-.954-3.087 5.49 5.49 0 0 1 5.485-5.485A5.49 5.49 0 0 1 46 7.515 5.49 5.49 0 0 1 40.515 13a5.45 5.45 0 0 1-3.12-.98l-1.413 1.411C38.475 16.253 40 19.946 40 23.997c0 8.82-7.176 15.996-15.996 15.996S8.007 32.817 8.007 23.997 15.183 8 24.004 8c4.051 0 7.743 1.526 10.564 4.017M48 24c0 13.233-10.767 24-24 24S0 37.233 0 24 10.767 0 24 0c3.361 0 6.614.684 9.669 2.032l-.809 1.83A21.8 21.8 0 0 0 24 2C11.869 2 2 11.869 2 24s9.869 22 22 22 22-9.869 22-22c0-3.09-.622-6.056-1.851-8.814l1.829-.814C47.319 17.389 48 20.628 48 24\" /></g></g></svg>;\nexport default SvgPinpoint;","import * as React from \"react\";\nconst SvgPipes = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-EventBridge_64\"}</title><defs><linearGradient id=\"linearGradient-ebr\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-EventBridge_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Application-Integration\" fill=\"url(#linearGradient-ebr)\" transform=\"translate(0 1)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-EventBridge_Icon_64_Squid\" fill=\"#fff\" d=\"M53.657 67c-2.143 0-3.887-1.753-3.887-3.909s1.744-3.909 3.887-3.909 3.887 1.753 3.887 3.909S55.8 67 53.657 67m-8.524-17H34.798l-5.168-9 5.168-9h10.335l5.167 9zM27.62 22.818c-2.143 0-3.887-1.753-3.887-3.909S25.478 15 27.62 15c2.144 0 3.888 1.753 3.888 3.909s-1.744 3.909-3.888 3.909m26.036 34.364c-.738 0-1.442.143-2.093.394L47.34 50.41l-.223.133L52.31 41.5c.177-.31.177-.69 0-1l-5.741-10a.99.99 0 0 0-.862-.5H35.258l.04-.024-3.871-6.572a5.9 5.9 0 0 0 2.071-4.495c0-3.258-2.636-5.909-5.877-5.909s-5.876 2.651-5.876 5.909 2.636 5.909 5.876 5.909c.739 0 1.443-.143 2.094-.394l3.615 6.133-5.71 9.943c-.177.31-.177.69 0 1l5.743 10c.178.31.506.5.861.5h11.482q.125-.002.241-.032l3.905 6.628a5.9 5.9 0 0 0-2.071 4.495c0 3.258 2.635 5.909 5.876 5.909 3.24 0 5.876-2.651 5.876-5.909s-2.635-5.909-5.876-5.909m5.927-24.078c-2.143 0-3.886-1.753-3.886-3.909s1.743-3.909 3.886-3.909 3.888 1.753 3.888 3.909-1.745 3.909-3.888 3.909m7.283 7.396-3.775-6.575a5.91 5.91 0 0 0 2.368-4.73c0-3.258-2.635-5.909-5.876-5.909-.824 0-1.61.173-2.323.484l-3.077-5.361a1 1 0 0 0-.861-.5H40.995v2h11.754l2.847 4.96a5.9 5.9 0 0 0-1.887 4.326c0 3.258 2.636 5.909 5.875 5.909.604 0 1.188-.093 1.737-.264L64.858 41l-4.966 8.648 1.722 1 5.253-9.148c.177-.31.177-.69 0-1M21.229 56.247c-2.144 0-3.888-1.754-3.888-3.909 0-2.156 1.744-3.909 3.888-3.909 2.143 0 3.887 1.753 3.887 3.909s-1.744 3.909-3.887 3.909m3.248 1.011a5.92 5.92 0 0 0 2.628-4.92c0-3.258-2.636-5.909-5.876-5.909-.939 0-1.823.228-2.61.623L15.143 41l5.759-10.029-1.723-1L13.133 40.5c-.177.31-.177.69 0 1l3.872 6.74a5.9 5.9 0 0 0-1.653 4.098c0 3.258 2.636 5.909 5.877 5.909.488 0 .96-.067 1.415-.181l3.172 5.525c.178.309.506.5.861.5h12.33v-2H27.25z\" /></g></svg>;\nexport default SvgPipes;","import * as React from \"react\";\nconst SvgQldbSession = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Quantum-Ledger-Database_64\"}</title><defs><linearGradient id=\"linearGradient-qld\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Quantum-Ledger-Database_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-qld)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Quantum-Ledger-Database_Icon_64_Squid\" fill=\"#fff\" d=\"M66 47.283H56V43.25h-5v4.034H41V43.25h-5v4.034H26V37.197h9.564c.167.148.333.308.436.429v4.614h5v-4.907l.002-.136H51v5.043h5v-5.043h10zm.121-12.103H55.879A1.89 1.89 0 0 0 54 37.075v3.148h-1V37.58c.085-.22.115-.461.086-.703-.094-.769-.761-1.336-.964-1.49l-.268-.207H40.287c-.48 0-1.287.28-1.287 2.153v2.89h-1v-3.108l-.089-.198c-.296-.66-1.135-1.338-1.385-1.53l-.267-.207h-10.38A1.89 1.89 0 0 0 24 37.075v10.33a1.89 1.89 0 0 0 1.879 1.895h10.242A1.89 1.89 0 0 0 38 47.405v-2.139h1v2.383c0 1.306.842 1.651 1.287 1.651h11.23c.718 0 1.483-.579 1.483-1.65v-2.384h1.001l.001 2.316c-.055.822.606 1.506 1.646 1.701l10.473.017A1.89 1.89 0 0 0 68 47.405v-10.33a1.89 1.89 0 0 0-1.879-1.895M63 40.222l.002 4.035-4.002.001-.001-4.035zm-4.001 6.053h4.002A2.01 2.01 0 0 0 65 44.258v-4.036a2.01 2.01 0 0 0-1.999-2.016h-4.002A2.01 2.01 0 0 0 57 40.222v4.036a2.01 2.01 0 0 0 1.999 2.017M48 44.24q-.001.015-.016.016L44 44.241l.016-4.018L48 40.24zm-.016-6.035h-3.968A2.027 2.027 0 0 0 42 40.239v4.002c0 1.122.904 2.034 2.016 2.034h3.968A2.027 2.027 0 0 0 50 44.24V40.24a2.027 2.027 0 0 0-2.016-2.033M29 44.258l-.001-4.035H33l.002 4.034zm4.001-6.052h-4.002A2.01 2.01 0 0 0 27 40.222v4.036a2.01 2.01 0 0 0 1.999 2.017h4.002A2.01 2.01 0 0 0 35 44.258v-4.036a2.01 2.01 0 0 0-1.999-2.016M30 16.017c9.429 0 16 2.923 16 5.547 0 2.625-6.571 5.548-16 5.548s-16-2.923-16-5.548 6.571-5.547 16-5.547M46 59.31c0 2.682-6.571 5.673-16 5.673s-16-2.99-16-5.673v-8.623c3.184 2.703 9.189 4.55 15.545 4.55 8.035 0 12.237-1.905 12.412-1.986l-.836-1.834c-.039.019-3.975 1.803-11.576 1.803-7.775 0-14.027-2.852-15.545-5.559v-9.87c1.916 1.731 4.818 3.095 8.096 3.711l.367-1.983c-4.514-.848-7.526-3.104-8.463-4.876v-9.486c3.19 2.595 9.728 3.972 16 3.972s12.81-1.377 16-3.972v9.015h2V21.06h-.06C47.321 16.474 38.418 14 30 14s-17.321 2.474-17.94 7.06H12v38.25C12 63.694 19.738 67 30 67s18-3.306 18-7.69v-7.992h-2z\" /></g></svg>;\nexport default SvgQldbSession;","import * as React from \"react\";\nconst SvgQldb = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Quantum-Ledger-Database_64\"}</title><defs><linearGradient id=\"linearGradient-qld\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Quantum-Ledger-Database_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-qld)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Quantum-Ledger-Database_Icon_64_Squid\" fill=\"#fff\" d=\"M66 47.283H56V43.25h-5v4.034H41V43.25h-5v4.034H26V37.197h9.564c.167.148.333.308.436.429v4.614h5v-4.907l.002-.136H51v5.043h5v-5.043h10zm.121-12.103H55.879A1.89 1.89 0 0 0 54 37.075v3.148h-1V37.58c.085-.22.115-.461.086-.703-.094-.769-.761-1.336-.964-1.49l-.268-.207H40.287c-.48 0-1.287.28-1.287 2.153v2.89h-1v-3.108l-.089-.198c-.296-.66-1.135-1.338-1.385-1.53l-.267-.207h-10.38A1.89 1.89 0 0 0 24 37.075v10.33a1.89 1.89 0 0 0 1.879 1.895h10.242A1.89 1.89 0 0 0 38 47.405v-2.139h1v2.383c0 1.306.842 1.651 1.287 1.651h11.23c.718 0 1.483-.579 1.483-1.65v-2.384h1.001l.001 2.316c-.055.822.606 1.506 1.646 1.701l10.473.017A1.89 1.89 0 0 0 68 47.405v-10.33a1.89 1.89 0 0 0-1.879-1.895M63 40.222l.002 4.035-4.002.001-.001-4.035zm-4.001 6.053h4.002A2.01 2.01 0 0 0 65 44.258v-4.036a2.01 2.01 0 0 0-1.999-2.016h-4.002A2.01 2.01 0 0 0 57 40.222v4.036a2.01 2.01 0 0 0 1.999 2.017M48 44.24q-.001.015-.016.016L44 44.241l.016-4.018L48 40.24zm-.016-6.035h-3.968A2.027 2.027 0 0 0 42 40.239v4.002c0 1.122.904 2.034 2.016 2.034h3.968A2.027 2.027 0 0 0 50 44.24V40.24a2.027 2.027 0 0 0-2.016-2.033M29 44.258l-.001-4.035H33l.002 4.034zm4.001-6.052h-4.002A2.01 2.01 0 0 0 27 40.222v4.036a2.01 2.01 0 0 0 1.999 2.017h4.002A2.01 2.01 0 0 0 35 44.258v-4.036a2.01 2.01 0 0 0-1.999-2.016M30 16.017c9.429 0 16 2.923 16 5.547 0 2.625-6.571 5.548-16 5.548s-16-2.923-16-5.548 6.571-5.547 16-5.547M46 59.31c0 2.682-6.571 5.673-16 5.673s-16-2.99-16-5.673v-8.623c3.184 2.703 9.189 4.55 15.545 4.55 8.035 0 12.237-1.905 12.412-1.986l-.836-1.834c-.039.019-3.975 1.803-11.576 1.803-7.775 0-14.027-2.852-15.545-5.559v-9.87c1.916 1.731 4.818 3.095 8.096 3.711l.367-1.983c-4.514-.848-7.526-3.104-8.463-4.876v-9.486c3.19 2.595 9.728 3.972 16 3.972s12.81-1.377 16-3.972v9.015h2V21.06h-.06C47.321 16.474 38.418 14 30 14s-17.321 2.474-17.94 7.06H12v38.25C12 63.694 19.738 67 30 67s18-3.306 18-7.69v-7.992h-2z\" /></g></svg>;\nexport default SvgQldb;","import * as React from \"react\";\nconst SvgRam = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Resource-Access-Manager_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-Resource-Access-Manager_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"#dd344c\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Resource-Access-Manager_Icon_64_Squid\" fill=\"#fff\" d=\"M33 60a1.001 1.001 0 0 0-2 0 1.001 1.001 0 0 0 2 0m2 0c0 1.654-1.346 3-3 3s-3-1.346-3-3 1.346-3 3-3 3 1.346 3 3m19.431.845L52.586 59H38.71a1 1 0 0 1-.958-.715C37.001 55.762 34.636 54 32 54c-3.309 0-6 2.691-6 6s2.691 6 6 6a6.03 6.03 0 0 0 5.423-3.429 1 1 0 0 1 .903-.571H41c.266 0 .52.105.707.293L43 63.586l1.293-1.293A1 1 0 0 1 45 62h2c.266 0 .52.105.707.293L49 63.586l1.293-1.293A1 1 0 0 1 51 62h1.697zm2.276-.552a1 1 0 0 1-.152 1.539l-3 2A1 1 0 0 1 53 64h-1.586l-1.707 1.707a1 1 0 0 1-1.414 0L46.586 64h-1.172l-1.707 1.707a1 1 0 0 1-1.414 0L40.586 64h-1.657A8.05 8.05 0 0 1 32 68c-4.411 0-8-3.589-8-8s3.589-8 8-8c3.26 0 6.208 2.022 7.418 5H53c.266 0 .52.105.707.293zM47.414 25 53 30.586 58.586 25 53 19.414zm4.879 7.707-7-7a1 1 0 0 1 0-1.414l7-7a1 1 0 0 1 1.414 0l7 7a1 1 0 0 1 0 1.414l-7 7a.997.997 0 0 1-1.414 0M34.09 29l-6.087-8.304L21.964 29zm1.973 2H20a1 1 0 0 1-.809-1.588l8-11a1 1 0 0 1 .807-.412c.346-.016.62.151.809.409l8.062 11A1 1 0 0 1 36.063 31M22 42.5c0 3.033 2.468 5.5 5.5 5.5s5.5-2.467 5.5-5.5-2.468-5.5-5.5-5.5a5.506 5.506 0 0 0-5.5 5.5m-2 0c0-4.136 3.364-7.5 7.5-7.5s7.5 3.364 7.5 7.5-3.364 7.5-7.5 7.5-7.5-3.364-7.5-7.5M48 47h9v-9h-9zm11 1a1 1 0 0 1-1 1H47a1 1 0 0 1-1-1V37a1 1 0 0 1 1-1h11a1 1 0 0 1 1 1zm9-35v50a1 1 0 0 1-1 1h-8v-2h7V14H14v48h7v2h-8a1 1 0 0 1-1-1V13a1 1 0 0 1 1-1h54a1 1 0 0 1 1 1\" /></g></svg>;\nexport default SvgRam;","import * as React from \"react\";\nconst SvgRdsData = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-RDS_64\"}</title><defs><linearGradient id=\"linearGradient-rds\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-RDS_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-rds)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-RDS_Icon_64_Squid\" fill=\"#fff\" d=\"m15.414 14 9.293 9.293-1.414 1.414L14 15.414V23h-2V13a1 1 0 0 1 1-1h10v2zM68 13v10h-2v-7.586l-9.293 9.293-1.414-1.414L64.586 14H57v-2h10a1 1 0 0 1 1 1m-2 44h2v10a1 1 0 0 1-1 1H57v-2h7.586l-9.293-9.293 1.414-1.414L66 64.586zm-.5-17.787c0-3.319-3.832-6.598-10.25-8.771l.641-1.894C63.268 31.045 67.5 34.932 67.5 39.213c0 4.282-4.232 8.17-11.61 10.666l-.641-1.895c6.419-2.172 10.251-5.45 10.251-8.771m-50.944 0c0 3.18 3.587 6.372 9.596 8.54l-.679 1.881c-6.938-2.503-10.917-6.301-10.917-10.421s3.979-7.917 10.917-10.421l.679 1.881c-6.009 2.169-9.596 5.361-9.596 8.54m10.151 17.494L15.414 66H23v2H13a1 1 0 0 1-1-1V57h2v7.586l9.293-9.293zM40 31.286c-7.146 0-11-1.846-11-2.6 0-.755 3.854-2.6 11-2.6 7.145 0 11 1.845 11 2.6 0 .754-3.855 2.6-11 2.6m.029 7.745C33.187 39.031 29 37.162 29 36.145v-4.861c2.463 1.359 6.832 2.002 11 2.002s8.537-.643 11-2.002v4.861c0 1.018-4.165 2.886-10.971 2.886m0 7.636C33.187 46.667 29 44.798 29 43.781v-4.919c2.431 1.429 6.742 2.169 11.029 2.169 4.263 0 8.549-.739 10.971-2.164v4.914c0 1.018-4.165 2.886-10.971 2.886M40 53.518c-7.117 0-11-1.913-11-2.896v-4.124c2.431 1.429 6.742 2.169 11.029 2.169 4.263 0 8.549-.738 10.971-2.164v4.119c0 .983-3.883 2.896-11 2.896m0-29.432c-6.261 0-13 1.439-13 4.6v21.936c0 3.214 6.54 4.896 13 4.896s13-1.682 13-4.896V28.686c0-3.161-6.739-4.6-13-4.6\" /></g></svg>;\nexport default SvgRdsData;","import * as React from \"react\";\nconst SvgRds = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-RDS_64\"}</title><defs><linearGradient id=\"linearGradient-rds\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-RDS_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-rds)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-RDS_Icon_64_Squid\" fill=\"#fff\" d=\"m15.414 14 9.293 9.293-1.414 1.414L14 15.414V23h-2V13a1 1 0 0 1 1-1h10v2zM68 13v10h-2v-7.586l-9.293 9.293-1.414-1.414L64.586 14H57v-2h10a1 1 0 0 1 1 1m-2 44h2v10a1 1 0 0 1-1 1H57v-2h7.586l-9.293-9.293 1.414-1.414L66 64.586zm-.5-17.787c0-3.319-3.832-6.598-10.25-8.771l.641-1.894C63.268 31.045 67.5 34.932 67.5 39.213c0 4.282-4.232 8.17-11.61 10.666l-.641-1.895c6.419-2.172 10.251-5.45 10.251-8.771m-50.944 0c0 3.18 3.587 6.372 9.596 8.54l-.679 1.881c-6.938-2.503-10.917-6.301-10.917-10.421s3.979-7.917 10.917-10.421l.679 1.881c-6.009 2.169-9.596 5.361-9.596 8.54m10.151 17.494L15.414 66H23v2H13a1 1 0 0 1-1-1V57h2v7.586l9.293-9.293zM40 31.286c-7.146 0-11-1.846-11-2.6 0-.755 3.854-2.6 11-2.6 7.145 0 11 1.845 11 2.6 0 .754-3.855 2.6-11 2.6m.029 7.745C33.187 39.031 29 37.162 29 36.145v-4.861c2.463 1.359 6.832 2.002 11 2.002s8.537-.643 11-2.002v4.861c0 1.018-4.165 2.886-10.971 2.886m0 7.636C33.187 46.667 29 44.798 29 43.781v-4.919c2.431 1.429 6.742 2.169 11.029 2.169 4.263 0 8.549-.739 10.971-2.164v4.914c0 1.018-4.165 2.886-10.971 2.886M40 53.518c-7.117 0-11-1.913-11-2.896v-4.124c2.431 1.429 6.742 2.169 11.029 2.169 4.263 0 8.549-.738 10.971-2.164v4.119c0 .983-3.883 2.896-11 2.896m0-29.432c-6.261 0-13 1.439-13 4.6v21.936c0 3.214 6.54 4.896 13 4.896s13-1.682 13-4.896V28.686c0-3.161-6.739-4.6-13-4.6\" /></g></svg>;\nexport default SvgRds;","import * as React from \"react\";\nconst SvgRedshiftData = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Redshiftct_64\"}</title><defs><linearGradient id=\"linearGradient-red\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Redshiftct_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-red)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Redshift_Icon_64_Squid\" fill=\"#fff\" d=\"M50.825 35.17a1.92 1.92 0 0 1-1.92-1.916 1.921 1.921 0 0 1 3.84 0 1.92 1.92 0 0 1-1.92 1.916m-4.866 11.655a1.92 1.92 0 0 1-1.92-1.917 1.92 1.92 0 0 1 3.841 0 1.92 1.92 0 0 1-1.92 1.917m-11.678-1.943a1.92 1.92 0 0 1-1.919-1.916 1.92 1.92 0 0 1 3.84 0 1.92 1.92 0 0 1-1.92 1.916m-4.865 10.683a1.92 1.92 0 0 1-1.92-1.916 1.92 1.92 0 0 1 3.84 0 1.92 1.92 0 0 1-1.92 1.916m21.407-26.222a3.92 3.92 0 0 0-3.919 3.911c0 1.322.665 2.488 1.675 3.197l-1.828 4.628a4 4 0 0 0-.794-.081c-1.718 0-3.165 1.117-3.692 2.657l-4.09-.928a3.91 3.91 0 0 0-3.895-3.672 3.92 3.92 0 0 0-3.916 3.911c0 1.008.393 1.92 1.024 2.613l-1.786 4.179c-.063-.004-.122-.02-.186-.02A3.92 3.92 0 0 0 25.5 53.65a3.92 3.92 0 0 0 7.836 0 3.9 3.9 0 0 0-1.817-3.29l1.576-3.686c.377.12.77.203 1.187.203a3.91 3.91 0 0 0 3.503-2.193l4.334.983a3.919 3.919 0 0 0 7.76-.758 3.89 3.89 0 0 0-1.338-2.919l1.92-4.861c.122.012.24.037.364.037a3.92 3.92 0 0 0 3.918-3.91 3.92 3.92 0 0 0-3.918-3.912M40 66.006c-9.731 0-17.002-2.921-17.002-5.533V23.152c3.31 2.69 10.317 4.111 17.023 4.111 6.676 0 13.653-1.41 16.981-4.077v37.287c0 2.612-7.272 5.533-17.002 5.533m.021-52.012c10.007 0 16.981 2.971 16.981 5.638s-6.974 5.637-16.981 5.637S23.04 22.3 23.04 19.632s6.973-5.638 16.981-5.638M59 19.632C59 14.675 49.222 12 40.021 12s-18.979 2.675-18.979 7.632l.002.025H21v40.816C21 65.362 30.79 68 40 68s19-2.638 19-7.527V19.657h-.002z\" /></g></svg>;\nexport default SvgRedshiftData;","import * as React from \"react\";\nconst SvgRedshift = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Redshiftct_64\"}</title><defs><linearGradient id=\"linearGradient-red\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Redshiftct_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-red)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Redshift_Icon_64_Squid\" fill=\"#fff\" d=\"M50.825 35.17a1.92 1.92 0 0 1-1.92-1.916 1.921 1.921 0 0 1 3.84 0 1.92 1.92 0 0 1-1.92 1.916m-4.866 11.655a1.92 1.92 0 0 1-1.92-1.917 1.92 1.92 0 0 1 3.841 0 1.92 1.92 0 0 1-1.92 1.917m-11.678-1.943a1.92 1.92 0 0 1-1.919-1.916 1.92 1.92 0 0 1 3.84 0 1.92 1.92 0 0 1-1.92 1.916m-4.865 10.683a1.92 1.92 0 0 1-1.92-1.916 1.92 1.92 0 0 1 3.84 0 1.92 1.92 0 0 1-1.92 1.916m21.407-26.222a3.92 3.92 0 0 0-3.919 3.911c0 1.322.665 2.488 1.675 3.197l-1.828 4.628a4 4 0 0 0-.794-.081c-1.718 0-3.165 1.117-3.692 2.657l-4.09-.928a3.91 3.91 0 0 0-3.895-3.672 3.92 3.92 0 0 0-3.916 3.911c0 1.008.393 1.92 1.024 2.613l-1.786 4.179c-.063-.004-.122-.02-.186-.02A3.92 3.92 0 0 0 25.5 53.65a3.92 3.92 0 0 0 7.836 0 3.9 3.9 0 0 0-1.817-3.29l1.576-3.686c.377.12.77.203 1.187.203a3.91 3.91 0 0 0 3.503-2.193l4.334.983a3.919 3.919 0 0 0 7.76-.758 3.89 3.89 0 0 0-1.338-2.919l1.92-4.861c.122.012.24.037.364.037a3.92 3.92 0 0 0 3.918-3.91 3.92 3.92 0 0 0-3.918-3.912M40 66.006c-9.731 0-17.002-2.921-17.002-5.533V23.152c3.31 2.69 10.317 4.111 17.023 4.111 6.676 0 13.653-1.41 16.981-4.077v37.287c0 2.612-7.272 5.533-17.002 5.533m.021-52.012c10.007 0 16.981 2.971 16.981 5.638s-6.974 5.637-16.981 5.637S23.04 22.3 23.04 19.632s6.973-5.638 16.981-5.638M59 19.632C59 14.675 49.222 12 40.021 12s-18.979 2.675-18.979 7.632l.002.025H21v40.816C21 65.362 30.79 68 40 68s19-2.638 19-7.527V19.657h-.002z\" /></g></svg>;\nexport default SvgRedshift;","import * as React from \"react\";\nconst SvgResourceGroups = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Service-Catalog_16\"}</title><defs><linearGradient id=\"linearGradient-rg\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Service-Catalog_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Management-Governance\" fill=\"url(#linearGradient-rg)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Service-Catalog_Icon_16_Squid\" fill=\"#fff\" d=\"M6.5 8a.5.5 0 1 1-.002 1.002A.5.5 0 0 1 6.5 8M6 11.5c0-.52.076-1.03.197-1.531q.147.03.303.031C7.327 10 8 9.327 8 8.5S7.327 7 6.5 7 5 7.673 5 8.5c0 .336.115.644.303.894A7.5 7.5 0 0 0 5 11.5a7.53 7.53 0 0 0 4.913 7.042l.346-.938A6.53 6.53 0 0 1 6 11.5m13-3a.5.5 0 1 1-1.002-.002A.5.5 0 0 1 19 8.5M12.5 5c1.969 0 3.773.868 5.014 2.379A1.49 1.49 0 0 0 17 8.5c0 .827.673 1.5 1.5 1.5S20 9.327 20 8.5 19.327 7 18.5 7h-.002A7.54 7.54 0 0 0 12.5 4c-1.869 0-3.66.692-5.043 1.949l.672.74A6.49 6.49 0 0 1 12.5 5m0 14a.5.5 0 1 1 .002-1.002A.5.5 0 0 1 12.5 19m6.465-8.187q.035.339.035.687a6.46 6.46 0 0 1-5.158 6.343A1.5 1.5 0 0 0 12.5 17c-.827 0-1.5.673-1.5 1.5s.673 1.5 1.5 1.5a1.5 1.5 0 0 0 1.454-1.147A7.47 7.47 0 0 0 20 11.5q0-.4-.041-.791zM10.5 14.941l-1.5-.75v-1.882l1.258-.629c.008.005.011.013.018.017l1.724.862v1.632zm2-6.632 1.5.75v1.632l-1.5.75-1.5-.75V9.059zm3.5 5.882-1.5.75-1.5-.75v-1.632l1.724-.862c.007-.004.01-.012.018-.017l1.258.629zm-1.724 1.756a.5.5 0 0 0 .448 0l2-1A.5.5 0 0 0 17 14.5V12a.5.5 0 0 0-.276-.447L15 10.691V8.75a.5.5 0 0 0-.276-.447l-2-1a.5.5 0 0 0-.448 0l-2 1A.5.5 0 0 0 10 8.75v1.941l-1.724.862A.5.5 0 0 0 8 12v2.5a.5.5 0 0 0 .276.447l2 1a.5.5 0 0 0 .448 0l1.776-.888z\" /></g></svg>;\nexport default SvgResourceGroups;","import * as React from \"react\";\nconst SvgResourcegroupstaggingapi = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Service-Catalog_16\"}</title><defs><linearGradient id=\"linearGradient-rg\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Service-Catalog_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Management-Governance\" fill=\"url(#linearGradient-rg)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Service-Catalog_Icon_16_Squid\" fill=\"#fff\" d=\"M6.5 8a.5.5 0 1 1-.002 1.002A.5.5 0 0 1 6.5 8M6 11.5c0-.52.076-1.03.197-1.531q.147.03.303.031C7.327 10 8 9.327 8 8.5S7.327 7 6.5 7 5 7.673 5 8.5c0 .336.115.644.303.894A7.5 7.5 0 0 0 5 11.5a7.53 7.53 0 0 0 4.913 7.042l.346-.938A6.53 6.53 0 0 1 6 11.5m13-3a.5.5 0 1 1-1.002-.002A.5.5 0 0 1 19 8.5M12.5 5c1.969 0 3.773.868 5.014 2.379A1.49 1.49 0 0 0 17 8.5c0 .827.673 1.5 1.5 1.5S20 9.327 20 8.5 19.327 7 18.5 7h-.002A7.54 7.54 0 0 0 12.5 4c-1.869 0-3.66.692-5.043 1.949l.672.74A6.49 6.49 0 0 1 12.5 5m0 14a.5.5 0 1 1 .002-1.002A.5.5 0 0 1 12.5 19m6.465-8.187q.035.339.035.687a6.46 6.46 0 0 1-5.158 6.343A1.5 1.5 0 0 0 12.5 17c-.827 0-1.5.673-1.5 1.5s.673 1.5 1.5 1.5a1.5 1.5 0 0 0 1.454-1.147A7.47 7.47 0 0 0 20 11.5q0-.4-.041-.791zM10.5 14.941l-1.5-.75v-1.882l1.258-.629c.008.005.011.013.018.017l1.724.862v1.632zm2-6.632 1.5.75v1.632l-1.5.75-1.5-.75V9.059zm3.5 5.882-1.5.75-1.5-.75v-1.632l1.724-.862c.007-.004.01-.012.018-.017l1.258.629zm-1.724 1.756a.5.5 0 0 0 .448 0l2-1A.5.5 0 0 0 17 14.5V12a.5.5 0 0 0-.276-.447L15 10.691V8.75a.5.5 0 0 0-.276-.447l-2-1a.5.5 0 0 0-.448 0l-2 1A.5.5 0 0 0 10 8.75v1.941l-1.724.862A.5.5 0 0 0 8 12v2.5a.5.5 0 0 0 .276.447l2 1a.5.5 0 0 0 .448 0l1.776-.888z\" /></g></svg>;\nexport default SvgResourcegroupstaggingapi;","import * as React from \"react\";\nconst SvgRoute53 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_Amazon-Route-53_16\"}</title><defs><linearGradient id=\"linearGradient-r53\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_Amazon-Route-53_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Networking-Content-Delivery\" fill=\"url(#linearGradient-r53)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"Amazon-Route-53-Icon_16_Squid\" fill=\"#fff\" d=\"M14.243 12.133q.304.282.305.75-.001.507-.368.813-.364.3-.964.3c-.311 0-.623-.067-.927-.2l-.046-.019v-.54l.099.032c.665.219 1.15.223 1.391.023q.171-.14.17-.41c0-.219-.068-.509-.662-.509q-.231 0-.45.024l-.084.01v-.434l.917-1h-1.332v-.548h2.116v.488l-.893.944q.451.022.728.276m-2.804-.083c.211.196.318.47.318.813 0 .337-.124.614-.369.823-.24.206-.562.31-.952.31-.337 0-.658-.067-.954-.2l-.044-.02v-.54l.1.033c.668.216 1.165.227 1.407.021q.17-.143.17-.422 0-.309-.158-.44c-.191-.16-.595-.165-1.29-.09l-.084.01v-.403l.098-1.52h1.908v.548h-1.361l-.053.814q.217-.034.396-.034c.367 0 .659.1.868.297m3.555 3.371c-1.199.216-2.255.687-2.995 1.094-.738-.407-1.794-.878-2.994-1.094-.191-.034-1.872-.36-1.872-1.18 0-.382.122-.63.45-1.193.375-.647.89-1.532.89-2.777a4.94 4.94 0 0 0-.523-2.214c1.363.563 2.863.447 4.05-.25 1.186.697 2.685.813 4.05.25a4.94 4.94 0 0 0-.522 2.214c0 1.245.514 2.13.888 2.777.328.563.45.81.45 1.194 0 .82-1.68 1.145-1.872 1.179m1.541-5.15c0-.756.214-1.482.635-2.155a.5.5 0 0 0-.038-.587l-.396-.489a.505.505 0 0 0-.636-.124c-1.297.718-2.725.632-3.812-.122a.505.505 0 0 0-.576 0c-1.087.754-2.517.839-3.812.122a.506.506 0 0 0-.636.124l-.396.489a.5.5 0 0 0-.038.587c.421.673.635 1.399.635 2.155 0 .974-.4 1.664-.754 2.27-.314.543-.586 1.01-.586 1.7 0 1.057 1.01 1.868 2.702 2.172 1.2.216 2.25.726 2.92 1.116a.51.51 0 0 0 .505 0c.67-.39 1.72-.9 2.92-1.116 1.692-.304 2.702-1.115 2.702-2.171 0-.69-.271-1.158-.586-1.7-.353-.607-.753-1.297-.753-2.271m-.967 7.102c-1.61.29-2.98 1.11-3.569 1.506-.589-.396-1.958-1.216-3.567-1.506-.803-.144-3.425-.783-3.425-2.938 0-.909.35-1.51.718-2.147.366-.63.745-1.283.745-2.19 0-1.267-.65-2.202-1.08-2.68.412-.5 1.162-1.418 1.642-2.027.757.65 1.62 1.001 2.478 1.001.96 0 1.764-.36 2.49-1.122.726.762 1.53 1.122 2.49 1.122.858 0 1.72-.352 2.478-1 .48.608 1.23 1.525 1.642 2.026-.43.478-1.08 1.413-1.08 2.68 0 .907.379 1.56.745 2.19.368.637.718 1.238.718 2.147 0 2.155-2.622 2.794-3.425 2.938m3.577-5.59c-.325-.563-.608-1.049-.608-1.686 0-1.355 1.061-2.244 1.07-2.252a.5.5 0 0 0 .072-.712c-.018-.022-1.834-2.224-2.246-2.79a.503.503 0 0 0-.776-.048c-.657.702-1.426 1.09-2.167 1.09-.823 0-1.448-.359-2.09-1.198-.19-.25-.611-.25-.8 0-.642.84-1.267 1.197-2.09 1.197-.742 0-1.51-.387-2.168-1.09a.501.501 0 0 0-.775.048c-.412.567-2.228 2.769-2.247 2.79a.502.502 0 0 0 .073.713c.01.009 1.07.881 1.07 2.252 0 .637-.283 1.123-.608 1.685-.402.69-.855 1.473-.855 2.653 0 1.982 1.59 3.451 4.255 3.931 1.859.334 3.423 1.518 3.438 1.53a.5.5 0 0 0 .614 0c.016-.012 1.57-1.194 3.44-1.53 2.663-.48 4.253-1.95 4.253-3.93 0-1.181-.453-1.963-.855-2.654\" /></g></svg>;\nexport default SvgRoute53;","import * as React from \"react\";\nconst SvgRoute53Resolver = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_Amazon-Route-53_16\"}</title><defs><linearGradient id=\"linearGradient-r53\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_Amazon-Route-53_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Networking-Content-Delivery\" fill=\"url(#linearGradient-r53)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"Amazon-Route-53-Icon_16_Squid\" fill=\"#fff\" d=\"M14.243 12.133q.304.282.305.75-.001.507-.368.813-.364.3-.964.3c-.311 0-.623-.067-.927-.2l-.046-.019v-.54l.099.032c.665.219 1.15.223 1.391.023q.171-.14.17-.41c0-.219-.068-.509-.662-.509q-.231 0-.45.024l-.084.01v-.434l.917-1h-1.332v-.548h2.116v.488l-.893.944q.451.022.728.276m-2.804-.083c.211.196.318.47.318.813 0 .337-.124.614-.369.823-.24.206-.562.31-.952.31-.337 0-.658-.067-.954-.2l-.044-.02v-.54l.1.033c.668.216 1.165.227 1.407.021q.17-.143.17-.422 0-.309-.158-.44c-.191-.16-.595-.165-1.29-.09l-.084.01v-.403l.098-1.52h1.908v.548h-1.361l-.053.814q.217-.034.396-.034c.367 0 .659.1.868.297m3.555 3.371c-1.199.216-2.255.687-2.995 1.094-.738-.407-1.794-.878-2.994-1.094-.191-.034-1.872-.36-1.872-1.18 0-.382.122-.63.45-1.193.375-.647.89-1.532.89-2.777a4.94 4.94 0 0 0-.523-2.214c1.363.563 2.863.447 4.05-.25 1.186.697 2.685.813 4.05.25a4.94 4.94 0 0 0-.522 2.214c0 1.245.514 2.13.888 2.777.328.563.45.81.45 1.194 0 .82-1.68 1.145-1.872 1.179m1.541-5.15c0-.756.214-1.482.635-2.155a.5.5 0 0 0-.038-.587l-.396-.489a.505.505 0 0 0-.636-.124c-1.297.718-2.725.632-3.812-.122a.505.505 0 0 0-.576 0c-1.087.754-2.517.839-3.812.122a.506.506 0 0 0-.636.124l-.396.489a.5.5 0 0 0-.038.587c.421.673.635 1.399.635 2.155 0 .974-.4 1.664-.754 2.27-.314.543-.586 1.01-.586 1.7 0 1.057 1.01 1.868 2.702 2.172 1.2.216 2.25.726 2.92 1.116a.51.51 0 0 0 .505 0c.67-.39 1.72-.9 2.92-1.116 1.692-.304 2.702-1.115 2.702-2.171 0-.69-.271-1.158-.586-1.7-.353-.607-.753-1.297-.753-2.271m-.967 7.102c-1.61.29-2.98 1.11-3.569 1.506-.589-.396-1.958-1.216-3.567-1.506-.803-.144-3.425-.783-3.425-2.938 0-.909.35-1.51.718-2.147.366-.63.745-1.283.745-2.19 0-1.267-.65-2.202-1.08-2.68.412-.5 1.162-1.418 1.642-2.027.757.65 1.62 1.001 2.478 1.001.96 0 1.764-.36 2.49-1.122.726.762 1.53 1.122 2.49 1.122.858 0 1.72-.352 2.478-1 .48.608 1.23 1.525 1.642 2.026-.43.478-1.08 1.413-1.08 2.68 0 .907.379 1.56.745 2.19.368.637.718 1.238.718 2.147 0 2.155-2.622 2.794-3.425 2.938m3.577-5.59c-.325-.563-.608-1.049-.608-1.686 0-1.355 1.061-2.244 1.07-2.252a.5.5 0 0 0 .072-.712c-.018-.022-1.834-2.224-2.246-2.79a.503.503 0 0 0-.776-.048c-.657.702-1.426 1.09-2.167 1.09-.823 0-1.448-.359-2.09-1.198-.19-.25-.611-.25-.8 0-.642.84-1.267 1.197-2.09 1.197-.742 0-1.51-.387-2.168-1.09a.501.501 0 0 0-.775.048c-.412.567-2.228 2.769-2.247 2.79a.502.502 0 0 0 .073.713c.01.009 1.07.881 1.07 2.252 0 .637-.283 1.123-.608 1.685-.402.69-.855 1.473-.855 2.653 0 1.982 1.59 3.451 4.255 3.931 1.859.334 3.423 1.518 3.438 1.53a.5.5 0 0 0 .614 0c.016-.012 1.57-1.194 3.44-1.53 2.663-.48 4.253-1.95 4.253-3.93 0-1.181-.453-1.963-.855-2.654\" /></g></svg>;\nexport default SvgRoute53Resolver;","import * as React from \"react\";\nconst SvgS3 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Simple-Storage-Service_64\"}</title><defs><linearGradient id=\"linearGradient-s3\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Simple-Storage-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-s3)\" d=\"M0 0h80v80H0z\" /><g id=\"Icon-Service/64/Amazon-Simple-Storage-Service_64\" fill=\"#fff\" transform=\"translate(8 8)\"><path id=\"Amazon-Simple-Storage-Service-Icon_64_Squid\" d=\"m52.836 34.893.384-2.704c3.54 2.12 3.587 2.997 3.586 3.02-.006.006-.61.51-3.97-.316m-1.943-.54C44.773 32.5 36.25 28.59 32.8 26.96q.002-.02.004-.041a2.406 2.406 0 0 0-2.404-2.403 2.406 2.406 0 0 0-2.402 2.403 2.406 2.406 0 0 0 2.402 2.403c.582 0 1.11-.217 1.527-.562 4.058 1.92 12.515 5.774 18.68 7.594L48.17 53.56a1 1 0 0 0-.01.14c0 1.516-6.707 4.299-17.666 4.299-11.075 0-17.853-2.783-17.853-4.298q0-.069-.01-.136L7.539 16.359c4.409 3.035 13.892 4.64 22.962 4.64 9.056 0 18.523-1.6 22.94-4.625zM7 12.478C7.072 11.162 14.634 6 30.5 6c15.864 0 23.427 5.16 23.5 6.478v.449C53.13 15.877 43.33 19 30.5 19 17.648 19 7.843 15.868 7 12.913zm49 .022C56 9.035 46.066 4 30.5 4S5 9.035 5 12.5l.094.754 5.548 40.524C10.775 58.31 22.86 60 30.494 60c9.472 0 19.535-2.178 19.665-6.22l2.396-16.896c1.333.319 2.43.482 3.31.482 1.184 0 1.984-.29 2.469-.867a1.95 1.95 0 0 0 .436-1.66c-.26-1.383-1.902-2.875-5.248-4.784l2.376-16.762z\" /></g></g></svg>;\nexport default SvgS3;","import * as React from \"react\";\nconst SvgS3Control = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Simple-Storage-Service_64\"}</title><defs><linearGradient id=\"linearGradient-s3\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Simple-Storage-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-s3)\" d=\"M0 0h80v80H0z\" /><g id=\"Icon-Service/64/Amazon-Simple-Storage-Service_64\" fill=\"#fff\" transform=\"translate(8 8)\"><path id=\"Amazon-Simple-Storage-Service-Icon_64_Squid\" d=\"m52.836 34.893.384-2.704c3.54 2.12 3.587 2.997 3.586 3.02-.006.006-.61.51-3.97-.316m-1.943-.54C44.773 32.5 36.25 28.59 32.8 26.96q.002-.02.004-.041a2.406 2.406 0 0 0-2.404-2.403 2.406 2.406 0 0 0-2.402 2.403 2.406 2.406 0 0 0 2.402 2.403c.582 0 1.11-.217 1.527-.562 4.058 1.92 12.515 5.774 18.68 7.594L48.17 53.56a1 1 0 0 0-.01.14c0 1.516-6.707 4.299-17.666 4.299-11.075 0-17.853-2.783-17.853-4.298q0-.069-.01-.136L7.539 16.359c4.409 3.035 13.892 4.64 22.962 4.64 9.056 0 18.523-1.6 22.94-4.625zM7 12.478C7.072 11.162 14.634 6 30.5 6c15.864 0 23.427 5.16 23.5 6.478v.449C53.13 15.877 43.33 19 30.5 19 17.648 19 7.843 15.868 7 12.913zm49 .022C56 9.035 46.066 4 30.5 4S5 9.035 5 12.5l.094.754 5.548 40.524C10.775 58.31 22.86 60 30.494 60c9.472 0 19.535-2.178 19.665-6.22l2.396-16.896c1.333.319 2.43.482 3.31.482 1.184 0 1.984-.29 2.469-.867a1.95 1.95 0 0 0 .436-1.66c-.26-1.383-1.902-2.875-5.248-4.784l2.376-16.762z\" /></g></g></svg>;\nexport default SvgS3Control;","import * as React from \"react\";\nconst SvgSagemakerRuntime = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-SageMaker_64\"}</title><defs><linearGradient id=\"linearGradient-sgm\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#055f4e\" /><stop offset=\"100%\" stopColor=\"#56c0a7\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-SageMaker_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Machine-Learning\" fill=\"url(#linearGradient-sgm)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-SageMaker_Icon_64_Squid\" fill=\"#fff\" d=\"M54.034 26.034a1.017 1.017 0 1 1-1.017-1.016c.561 0 1.017.456 1.017 1.016M48.002 36a1.001 1.001 0 0 1 2 0 1.001 1.001 0 0 1-2 0m0 19a1.001 1.001 0 0 1 2 0 1.001 1.001 0 0 1-2 0m10-13a1.001 1.001 0 0 1-2 0 1.001 1.001 0 0 1 2 0M65 45.272l-5.037-2.89c.016-.126.039-.25.039-.382 0-1.654-1.346-3-3-3-1.655 0-3 1.346-3 3s1.345 3 3 3c.799 0 1.521-.319 2.059-.829l4.825 2.768-4.331 2.166c-.339.17-.553.516-.553.895v8.441l-12.019 7.396-5.98-3.417V56h5.183a3 3 0 0 0 2.816 2c1.654 0 3-1.346 3-3 0-1.655-1.346-3-3-3a2.995 2.995 0 0 0-2.816 2h-5.183V40c0-.35-.185-.677-.486-.858l-5.001-3-1.029 1.715 4.516 2.71v2.94l-6.001 4.616V44a1 1 0 0 0-.375-.78l-4.625-3.7v-4.985l5.554-3.702a1 1 0 0 0 .446-.832v-6h-2v5.465l-4.989 3.324-5.011-3.326v-7.89l5-2.915V27h2v-9.51l4.003-2.334 5.996 3.459L39.002 31c0 .359.192.69.504.867l6.536 3.735c-.018.131-.04.261-.04.397 0 1.654 1.345 3 3 3 1.654 0 3-1.346 3-3s-1.346-3-3-3c-.794 0-1.512.315-2.049.82l-5.951-3.4-.001-11.802 5.963-3.441 11.038 7.359V25h-2.151a3.02 3.02 0 0 0-2.834-1.983 3.02 3.02 0 0 0-3.015 3.016 3.02 3.02 0 0 0 3.015 3.016A3.02 3.02 0 0 0 55.875 27h2.127v3c0 .36.192.69.504.869L65 34.58zM33.02 65.837l-3.153-1.94 5.716-4.083-1.162-1.628-6.403 4.573-7.016-4.318v-7.875l4.514-2.709-1.029-1.715-4.529 2.718-4.956-2.478-.001-5.765 5.448-2.723-.894-1.789-4.554 2.276.001-3.8 5.961-3.406 5.039 3.344v4.961l-5.553 3.687 1.106 1.666 5.403-3.588 4.044 3.235v5.182l-4.61 3.545 1.219 1.585 11.392-8.762v16.39zm33.476-32.705-6.494-3.711V22a1 1 0 0 0-.446-.832l-12-8a1 1 0 0 0-1.054-.034l-6.498 3.75-6.502-3.75a1 1 0 0 0-1.004.002l-12 7a1 1 0 0 0-.496.864v8.42l-6.496 3.711a1 1 0 0 0-.504.868v.417L13 34.48v10.884l.002.06V47c0 .38.214.725.553.894l5.447 2.724V59c0 .347.179.67.475.851l13 8a1 1 0 0 0 1.021.017l6.505-3.716 6.503 3.716c.315.181.707.174 1.02-.017l13-8a1 1 0 0 0 .476-.85v-8.383l5.445-2.724A1 1 0 0 0 67 47V34a1 1 0 0 0-.504-.868\" /></g></svg>;\nexport default SvgSagemakerRuntime;","import * as React from \"react\";\nconst SvgSagemaker = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-SageMaker_64\"}</title><defs><linearGradient id=\"linearGradient-sgm\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#055f4e\" /><stop offset=\"100%\" stopColor=\"#56c0a7\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-SageMaker_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Machine-Learning\" fill=\"url(#linearGradient-sgm)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-SageMaker_Icon_64_Squid\" fill=\"#fff\" d=\"M54.034 26.034a1.017 1.017 0 1 1-1.017-1.016c.561 0 1.017.456 1.017 1.016M48.002 36a1.001 1.001 0 0 1 2 0 1.001 1.001 0 0 1-2 0m0 19a1.001 1.001 0 0 1 2 0 1.001 1.001 0 0 1-2 0m10-13a1.001 1.001 0 0 1-2 0 1.001 1.001 0 0 1 2 0M65 45.272l-5.037-2.89c.016-.126.039-.25.039-.382 0-1.654-1.346-3-3-3-1.655 0-3 1.346-3 3s1.345 3 3 3c.799 0 1.521-.319 2.059-.829l4.825 2.768-4.331 2.166c-.339.17-.553.516-.553.895v8.441l-12.019 7.396-5.98-3.417V56h5.183a3 3 0 0 0 2.816 2c1.654 0 3-1.346 3-3 0-1.655-1.346-3-3-3a2.995 2.995 0 0 0-2.816 2h-5.183V40c0-.35-.185-.677-.486-.858l-5.001-3-1.029 1.715 4.516 2.71v2.94l-6.001 4.616V44a1 1 0 0 0-.375-.78l-4.625-3.7v-4.985l5.554-3.702a1 1 0 0 0 .446-.832v-6h-2v5.465l-4.989 3.324-5.011-3.326v-7.89l5-2.915V27h2v-9.51l4.003-2.334 5.996 3.459L39.002 31c0 .359.192.69.504.867l6.536 3.735c-.018.131-.04.261-.04.397 0 1.654 1.345 3 3 3 1.654 0 3-1.346 3-3s-1.346-3-3-3c-.794 0-1.512.315-2.049.82l-5.951-3.4-.001-11.802 5.963-3.441 11.038 7.359V25h-2.151a3.02 3.02 0 0 0-2.834-1.983 3.02 3.02 0 0 0-3.015 3.016 3.02 3.02 0 0 0 3.015 3.016A3.02 3.02 0 0 0 55.875 27h2.127v3c0 .36.192.69.504.869L65 34.58zM33.02 65.837l-3.153-1.94 5.716-4.083-1.162-1.628-6.403 4.573-7.016-4.318v-7.875l4.514-2.709-1.029-1.715-4.529 2.718-4.956-2.478-.001-5.765 5.448-2.723-.894-1.789-4.554 2.276.001-3.8 5.961-3.406 5.039 3.344v4.961l-5.553 3.687 1.106 1.666 5.403-3.588 4.044 3.235v5.182l-4.61 3.545 1.219 1.585 11.392-8.762v16.39zm33.476-32.705-6.494-3.711V22a1 1 0 0 0-.446-.832l-12-8a1 1 0 0 0-1.054-.034l-6.498 3.75-6.502-3.75a1 1 0 0 0-1.004.002l-12 7a1 1 0 0 0-.496.864v8.42l-6.496 3.711a1 1 0 0 0-.504.868v.417L13 34.48v10.884l.002.06V47c0 .38.214.725.553.894l5.447 2.724V59c0 .347.179.67.475.851l13 8a1 1 0 0 0 1.021.017l6.505-3.716 6.503 3.716c.315.181.707.174 1.02-.017l13-8a1 1 0 0 0 .476-.85v-8.383l5.445-2.724A1 1 0 0 0 67 47V34a1 1 0 0 0-.504-.868\" /></g></svg>;\nexport default SvgSagemaker;","import * as React from \"react\";\nconst SvgScheduler = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 48 48\" fill=\"currentColor\" {...props}><title>{\"Icon-Resource/Application-Integration/Res_Amazon-EventBridge_Scheduler_48\"}</title><g id=\"Icon-Resource/Application-Integration/Res_Amazon-EventBridge_Scheduler_48\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Fill-1\" fill=\"#e7157b\" d=\"M15 16h3.92v-2h-3v-3H14v4a1 1 0 0 0 1 1m-9.707 8.293 1.414 1.414 3-3-1.414-1.414zm3.414-16-3-3-1.414 1.414 3 3zM15.92 6H16V2h-2v4zm9.787.707-1.414-1.414-3 3 1.414 1.414zM8.92 15c0 3.309 2.691 6 6 6s6-2.691 6-6-2.691-6-6-6-6 2.691-6 6m-2 0c0-4.411 3.589-8 8-8s8 3.589 8 8-3.589 8-8 8-8-3.589-8-8M18 38h4v-2h-4zm0-5h4v-2h-4zm0-5h4v-2h-4zm18 10h4v-2h-4zm0-5h4v-2h-4zm0-5h4v-2h-4zm-9 10h4v-2h-4zm0-5h4v-2h-4zm0-5h4v-2h-4zm18-16h-3v-2h-2v2h-4.08v-2H34v2h-4.08v-2H28v2h-3v2h3v2h1.92v-2H34v2h1.92v-2H40v2h1.92v-2H44v4H25v2h19v23H14V26h-2v18a1 1 0 0 0 1 1h32a1 1 0 0 0 1-1V13a1 1 0 0 0-1-1M2 17h3.976v-2H2z\" /></g></svg>;\nexport default SvgScheduler;","import * as React from \"react\";\nconst SvgSecretsmanager = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Secrets-Manager_64\"}</title><defs><linearGradient id=\"linearGradient-asm\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#bd0816\" /><stop offset=\"100%\" stopColor=\"#ff5252\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Secrets-Manager_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"url(#linearGradient-asm)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Secrets-Manager_Icon_64_Squid\" fill=\"#fff\" d=\"M38.76 43.36A1.241 1.241 0 1 0 40 42.12c-.683 0-1.24.556-1.24 1.24m-2 0A3.243 3.243 0 0 1 40 40.12a3.243 3.243 0 0 1 3.24 3.24A3.23 3.23 0 0 1 41 46.426V49h-2v-2.574a3.23 3.23 0 0 1-2.24-3.066M49 38H31v13h18v-3h-3v-2h3v-3h-3v-2h3zm-15-2h11.999L46 31c.001-2.616-2.857-4.998-5.996-5h-.003a6.6 6.6 0 0 0-4.238 1.575c-1.12.962-1.763 2.211-1.763 3.426zm14-4.999L47.999 36H50a1 1 0 0 1 1 1v15a1 1 0 0 1-1 1H30a1 1 0 0 1-1-1V37a1 1 0 0 1 1-1h2v-5c.001-1.798.897-3.599 2.459-4.942A8.63 8.63 0 0 1 40.001 24h.003c4.261.002 7.997 3.273 7.996 7.001M19.207 55.049l1.621-1.172c-2.735-3.78-4.247-8.215-4.432-12.877H19v-2h-2.601c.199-4.634 1.709-9.043 4.429-12.802l-1.621-1.173c-2.968 4.103-4.608 8.917-4.808 13.975H12v2h2.396c.186 5.086 1.828 9.926 4.811 14.049m34.631 4.159c-3.769 2.728-8.19 4.238-12.838 4.431V61h-2v2.639c-4.648-.192-9.07-1.702-12.841-4.431l-1.171 1.62c4.112 2.977 8.94 4.617 14.012 4.811V68h2v-2.361c5.072-.194 9.898-1.834 14.01-4.811zM26.159 20.866c3.771-2.728 8.193-4.238 12.841-4.43V19h2v-2.564c4.648.192 9.069 1.702 12.838 4.43l1.172-1.62c-4.112-2.976-8.938-4.616-14.01-4.81V12h-2v2.436c-5.072.193-9.9 1.833-14.012 4.81zM65.599 39c-.2-5.058-1.84-9.872-4.809-13.975l-1.621 1.173C61.89 29.957 63.4 34.366 63.599 39H61v2h2.602c-.186 4.662-1.697 9.097-4.433 12.877l1.621 1.172c2.984-4.123 4.625-8.963 4.812-14.049H68v-2zm-9.213-13.936 7.84-7.84-1.414-1.414-7.84 7.84zM23.612 55.01l-7.84 7.84 1.414 1.414 7.84-7.84zm5.054-27.757-14.841-14.84-1.414 1.414 14.841 14.84zM54.193 52.78l13.393 13.393-1.414 1.414-13.393-13.393z\" /></g></svg>;\nexport default SvgSecretsmanager;","import * as React from \"react\";\nconst SvgServerlessrepo = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Serverless-Application-Repository_16\"}</title><defs><linearGradient id=\"linearGradient-slr\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Serverless-Application-Repository_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Compute\" fill=\"url(#linearGradient-slr)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Serverless-Application-Repository_Icon_16_Squid\" fill=\"#fff\" d=\"M16.989 16.036H8.292c-.988 0-2.082-.955-2.285-1.929h7.526a1.362 1.362 0 0 0 .535 1.255 1.4 1.4 0 0 0 1.221.231 1.36 1.36 0 0 0 .992-1.486h2.728c-.176 1.571-1.49 1.929-2.02 1.929M7.53 11.812a.483.483 0 0 0 .365-.526 3 3 0 0 1-.022-.369c0-1.099.794-2.283 1.807-2.696q.344-.139.662-.2v2.184c0 .197.12.374.306.447a.49.49 0 0 0 .532-.115.423.423 0 0 1 .624.03c.047.06.118.185.073.366a.412.412 0 0 1-.696.17.49.49 0 0 0-.533-.115.48.48 0 0 0-.306.447v1.708H6.043c.236-.885 1-1.211 1.487-1.33m3.784-3.83c.906.111 1.547.617 1.847.907.363.349.662.82.864 1.364a.487.487 0 0 0 .842.125c.197-.255.487-.403.798-.403.463 0 1.026.355 1.086 1.352a.484.484 0 0 0 .388.445c.996.198 1.602.658 1.81 1.37h-3.422a.49.49 0 0 0-.45.304.48.48 0 0 0 .115.528.41.41 0 0 1 .106.438.39.39 0 0 1-.265.25.43.43 0 0 1-.374-.066.406.406 0 0 1-.035-.622.48.48 0 0 0 .116-.528.49.49 0 0 0-.45-.303h-2.976v-.957c.204.023.42.002.629-.068a1.37 1.37 0 0 0 .625-2.145 1.39 1.39 0 0 0-1.254-.518zm6.366 2.927c-.221-1.301-1.165-1.898-2.015-1.898-.361 0-.708.098-1.01.28a4.3 4.3 0 0 0-.818-1.095C12.602 7.003 10.91 6.68 9.312 7.33c-1.374.56-2.41 2.101-2.41 3.588v.078C5.704 11.435 5 12.43 5 13.725c0 .07.003.134.007.2C5.097 15.507 6.692 17 8.292 17h8.697C18.153 17 20 16.117 20 13.748c0-1.433-.82-2.431-2.32-2.84\" /></g></svg>;\nexport default SvgServerlessrepo;","import * as React from \"react\";\nconst SvgServicediscovery = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Application-Discovery-Service_16\"}</title><defs><linearGradient id=\"linearGradient-ads\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#055f4e\" /><stop offset=\"100%\" stopColor=\"#56c0a7\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Application-Discovery-Service_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Migration-Transfer\" fill=\"url(#linearGradient-ads)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Application-Discovery-Service_Icon_16_Squid\" fill=\"#fff\" d=\"M7.992 12.029h3.006v-1.001H7.992zm10.913 5.322-4.04-3.804a6.1 6.1 0 0 1-1.31 1.302l3.817 3.983c.07.07.277.135.564.105.288-.027.562-.14.715-.292.159-.16.29-.45.332-.742.042-.283-.01-.486-.078-.552m-8.95-2.325c2.802 0 5.082-2.252 5.082-5.021 0-2.76-2.28-5.004-5.081-5.004-2.778 0-4.954 2.198-4.954 5.004 0 2.816 2.176 5.021 4.954 5.021m10.02 3.022c-.074.506-.303.993-.616 1.305-.318.318-.802.53-1.326.58a3 3 0 0 1-.231.012c-.469 0-.88-.145-1.146-.412l-3.977-4.15a6.1 6.1 0 0 1-2.723.644C6.616 16.027 4 13.382 4 10.005 4 6.638 6.616 4 9.956 4c3.354 0 6.083 2.694 6.083 6.005 0 .96-.235 1.865-.64 2.67l4.204 3.958c.324.324.456.835.372 1.415M12.517 6.956H7.992v1.001h4.024v5.036h1.002V7.456a.5.5 0 0 0-.501-.5m-1.498 12.043h-4.03v-3.003H5.989v3.503a.5.5 0 0 0 .5.501h5.032a.5.5 0 0 0 .5-.5v-2.503H11.02zm-4.03-8.978h4.009V9.02H6.99z\" /></g></svg>;\nexport default SvgServicediscovery;","import * as React from \"react\";\nconst SvgSes = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Simple-Email-Service_64\"}</title><defs><linearGradient id=\"linearGradient-ses\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#bd0816\" /><stop offset=\"100%\" stopColor=\"#ff5252\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Simple-Email-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-ses)\" d=\"M0 0h80v80H0z\" /><path id=\"Amazon-Simple-Email-Service_Icon_64_Squid\" fill=\"#fff\" d=\"M57 61c0-1.626-1.374-3-3-3s-3 1.374-3 3 1.374 3 3 3 3-1.374 3-3m-17-1c-1.626 0-3 1.374-3 3s1.374 3 3 3 3-1.374 3-3-1.374-3-3-3m-14-2c-1.626 0-3 1.374-3 3s1.374 3 3 3 3-1.374 3-3-1.374-3-3-3m2.605-15h22.79l-7.656-6.89-3.09 2.648a.99.99 0 0 1-1.3 0L36.26 36.11zM27 28.173v13.582l7.729-6.957zM51.297 27H28.703l11.296 9.683zM53 41.755V28.173l-7.729 6.624zM59 61c0 2.71-2.29 5-5 5s-5-2.29-5-5c0-2.37 1.75-4.416 4-4.894V53H41v5.106c2.25.478 4 2.525 4 4.894 0 2.71-2.29 5-5 5s-5-2.29-5-5c0-2.37 1.75-4.416 4-4.894V53H27v3.106c2.25.478 4 2.525 4 4.894 0 2.71-2.29 5-5 5s-5-2.29-5-5c0-2.37 1.75-4.416 4-4.894V52a1 1 0 0 1 1-1h13v-6H26a1 1 0 0 1-1-1V26a1 1 0 0 1 1-1h28a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H41v6h13a1 1 0 0 1 1 1v4.106c2.25.478 4 2.525 4 4.894m9-21c0 5.907-1.823 11.56-5.273 16.345l-1.623-1.17A25.8 25.8 0 0 0 66 40c0-14.336-11.663-26-25.999-26C25.664 14 14 25.664 14 40a25.8 25.8 0 0 0 4.896 15.175l-1.623 1.17A27.8 27.8 0 0 1 12 39.999C12 24.561 24.561 12 39.999 12 55.438 12 68 24.561 68 40\" /></g></svg>;\nexport default SvgSes;","import * as React from \"react\";\nconst SvgSesv2 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Simple-Email-Service_64\"}</title><defs><linearGradient id=\"linearGradient-ses\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#bd0816\" /><stop offset=\"100%\" stopColor=\"#ff5252\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Simple-Email-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-ses)\" d=\"M0 0h80v80H0z\" /><path id=\"Amazon-Simple-Email-Service_Icon_64_Squid\" fill=\"#fff\" d=\"M57 61c0-1.626-1.374-3-3-3s-3 1.374-3 3 1.374 3 3 3 3-1.374 3-3m-17-1c-1.626 0-3 1.374-3 3s1.374 3 3 3 3-1.374 3-3-1.374-3-3-3m-14-2c-1.626 0-3 1.374-3 3s1.374 3 3 3 3-1.374 3-3-1.374-3-3-3m2.605-15h22.79l-7.656-6.89-3.09 2.648a.99.99 0 0 1-1.3 0L36.26 36.11zM27 28.173v13.582l7.729-6.957zM51.297 27H28.703l11.296 9.683zM53 41.755V28.173l-7.729 6.624zM59 61c0 2.71-2.29 5-5 5s-5-2.29-5-5c0-2.37 1.75-4.416 4-4.894V53H41v5.106c2.25.478 4 2.525 4 4.894 0 2.71-2.29 5-5 5s-5-2.29-5-5c0-2.37 1.75-4.416 4-4.894V53H27v3.106c2.25.478 4 2.525 4 4.894 0 2.71-2.29 5-5 5s-5-2.29-5-5c0-2.37 1.75-4.416 4-4.894V52a1 1 0 0 1 1-1h13v-6H26a1 1 0 0 1-1-1V26a1 1 0 0 1 1-1h28a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H41v6h13a1 1 0 0 1 1 1v4.106c2.25.478 4 2.525 4 4.894m9-21c0 5.907-1.823 11.56-5.273 16.345l-1.623-1.17A25.8 25.8 0 0 0 66 40c0-14.336-11.663-26-25.999-26C25.664 14 14 25.664 14 40a25.8 25.8 0 0 0 4.896 15.175l-1.623 1.17A27.8 27.8 0 0 1 12 39.999C12 24.561 24.561 12 39.999 12 55.438 12 68 24.561 68 40\" /></g></svg>;\nexport default SvgSesv2;","import * as React from \"react\";\nconst SvgShield = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Shield_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-Shield_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"#dd344c\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Shield_Icon_64_Squid\" fill=\"#fff\" d=\"M54.01 50h-2v4h-4v2h4v4h2v-4h4v-2h-4zm7 5c0-4.411-3.588-8-8-8-4.41 0-8 3.589-8 8s3.59 8 8 8c4.412 0 8-3.59 8-8m2 0c0 5.514-4.485 10-10 10-5.513 0-10-4.486-10-10s4.487-10 10-10c5.515 0 10 4.486 10 10m-27 2.97V22.457l-11 4.23V47c.013.414.397 10.38 11 10.971m13-14.27V26.686l-11-4.23v35.507a13.7 13.7 0 0 0 3.237-.6c.135.67.334 1.315.575 1.938-1.465.46-3.07.698-4.811.698-13.56 0-13.997-12.848-14-12.977V26c0-.415.255-.785.64-.934l13-5a1 1 0 0 1 .719 0l13 5c.386.149.64.52.64.934v17.18q-1.031.176-2 .52m-4.254 19.987a12 12 0 0 0 1.817 1.422c-2.755 1.248-5.958 1.879-9.562 1.879-6.327 0-11.371-1.925-14.991-5.721-6.431-6.744-6.03-16.887-6.008-17.315L16.01 22c0-.41.249-.776.629-.93l20-8c.238-.094.504-.094.742 0l20 8c.38.154.629.52.629.93v22l.004.106a12 12 0 0 0-2.003-.712l-.001-20.717-19-7.6-19 7.6v21.322c-.006.143-.375 9.784 5.466 15.898 3.227 3.378 7.78 5.09 13.534 5.09 2.888 0 5.475-.441 7.745-1.3\" /></g></svg>;\nexport default SvgShield;","import * as React from \"react\";\nconst SvgSns = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Simple-Notification-Service_64\"}</title><defs><linearGradient id=\"linearGradient-sns\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Simple-Notification-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Application-Integration\" fill=\"url(#linearGradient-sns)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Simple-Notification-Service_Icon_64_Squid\" fill=\"#fff\" d=\"M17 38c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2m24 26c-11.686 0-21.711-8.534-23.806-20.02A3.98 3.98 0 0 0 20.857 41H27v-2h-6.143a3.985 3.985 0 0 0-3.662-2.98C19.285 24.71 29.511 16 41 16c4.313 0 8.832 1.622 13.429 4.821l1.142-1.642C50.633 15.743 45.73 14 41 14c-12.73 0-24.051 9.865-25.937 22.521C13.839 37.207 13 38.5 13 40s.839 2.793 2.063 3.478C16.97 56.341 28.056 66 41 66c5.407 0 10.942-1.843 15.585-5.189l-1.17-1.622C51.11 62.292 45.991 64 41 64M30.101 36.442c1.854.453 4.174.558 5.899.558 1.642 0 3.823-.095 5.629-.494l-4.524 9.047A1 1 0 0 0 37 46v4.453c-.801.511-2.167 1.359-3 1.533V46a1 1 0 0 0-.077-.385zM36 33c4.025 0 6.174.604 6.841 1-.667.396-2.816 1-6.841 1s-6.174-.604-6.841-1c.667-.396 2.816-1 6.841-1m-3 21h1q.065 0 .128-.008c1.224-.159 2.781-1.105 4.144-1.979l.263-.168c.289-.184.465-.503.465-.845v-4.764l5.559-11.116c.274-.319.441-.686.441-1.12 0-2.61-5.639-3-9-3s-9 .39-9 3c0 .366.12.684.32.967L32 46.2V53a1 1 0 0 0 1 1m29-1c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2m0-30c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2m2 15c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2m-10 3h6.143c.446 1.72 1.999 3 3.857 3 2.206 0 4-1.794 4-4s-1.794-4-4-4c-1.858 0-3.411 1.28-3.857 3H54V26h4.143c.446 1.72 1.999 3 3.857 3 2.206 0 4-1.794 4-4s-1.794-4-4-4c-1.858 0-3.411 1.28-3.857 3H53a1 1 0 0 0-1 1v14h-7v2h7v14a1 1 0 0 0 1 1h5.143c.446 1.72 1.999 3 3.857 3 2.206 0 4-1.794 4-4s-1.794-4-4-4c-1.858 0-3.411 1.28-3.857 3H54z\" /></g></svg>;\nexport default SvgSns;","import * as React from \"react\";\nconst SvgSqs = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Simple-Queue-Service_64\"}</title><defs><linearGradient id=\"linearGradient-sqs\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Simple-Queue-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Application-Integration\" fill=\"url(#linearGradient-sqs)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Simple-Queue-Service_Icon_64_Squid\" fill=\"#fff\" d=\"m28.717 43.688 3.002-2.966a.99.99 0 0 0 .004-1.406l-3.002-3-1.419 1.402 1.288 1.288h-4.581v1.988h4.597l-1.3 1.284zm22.91.09 4.003-2.985c.25-.188.4-.482.4-.794a1 1 0 0 0-.4-.796l-4.003-2.981-1.201 1.59 1.601 1.194h-4.003v1.988h4.002l-1.601 1.193zM35.209 40c0 2.11-.365 4.101-1.048 5.833 1.8-.692 3.831-1.038 5.86-1.038 2.028 0 4.058.346 5.857 1.038-.681-1.732-1.047-3.722-1.047-5.833 0-2.11.366-4.1 1.047-5.833-3.6 1.383-8.116 1.383-11.717 0 .683 1.733 1.048 3.722 1.048 5.833m-4.902 9.651a.99.99 0 0 1 0-1.406c1.816-1.804 2.9-4.887 2.9-8.245s-1.084-6.44-2.9-8.245a.99.99 0 0 1 0-1.406 1.004 1.004 0 0 1 1.415 0c3.877 3.853 12.72 3.853 16.597 0a1.004 1.004 0 0 1 1.415 0 .99.99 0 0 1 0 1.406c-1.817 1.804-2.901 4.887-2.901 8.245s1.084 6.44 2.9 8.245a.99.99 0 0 1 0 1.406 1 1 0 0 1-1.414 0c-3.878-3.853-12.72-3.853-16.597 0a1.004 1.004 0 0 1-1.415 0m35.695-9.646c0-.927-.363-1.798-1.023-2.453a3.5 3.5 0 0 0-2.468-1.014c-.894 0-1.788.337-2.469 1.014a3.456 3.456 0 0 0 0 4.906 3.51 3.51 0 0 0 4.937 0 3.44 3.44 0 0 0 1.023-2.453m.392 3.859a5.5 5.5 0 0 1-3.883 1.595 5.5 5.5 0 0 1-3.884-1.595 5.437 5.437 0 0 1 0-7.718 5.52 5.52 0 0 1 7.767 0 5.437 5.437 0 0 1 0 7.718M20.98 40.028c0-.927-.363-1.798-1.023-2.453a3.48 3.48 0 0 0-2.468-1.016c-.932 0-1.808.36-2.469 1.016A3.43 3.43 0 0 0 14 40.028c0 .925.362 1.796 1.021 2.453 1.32 1.31 3.619 1.31 4.937 0a3.44 3.44 0 0 0 1.023-2.453m.392 3.859a5.5 5.5 0 0 1-3.883 1.595 5.5 5.5 0 0 1-3.884-1.595 5.44 5.44 0 0 1 0-7.718c2.143-2.128 5.626-2.128 7.767 0a5.44 5.44 0 0 1 0 7.718m33.524 10.97c-3.995 3.97-9.307 6.154-14.957 6.154s-10.963-2.185-14.957-6.155c-2.74-2.721-4.248-5.973-5.03-8.221l-1.892.65c.852 2.446 2.498 5.988 5.507 8.977C27.939 60.608 33.753 63 39.939 63c6.185 0 11.999-2.392 16.372-6.738 2.526-2.509 4.539-5.698 5.668-8.98l-1.893-.644c-1.033 3-2.876 5.92-5.19 8.218M19.95 33.366l-1.889-.653c1.21-3.464 3.168-6.653 5.512-8.98C27.943 19.39 33.755 17 39.939 17s11.996 2.391 16.366 6.733c2.466 2.45 4.535 5.724 5.672 8.981l-1.889.652c-1.044-2.982-2.938-5.981-5.198-8.227-3.992-3.967-9.302-6.15-14.95-6.15-5.65 0-10.96 2.183-14.952 6.15-2.134 2.12-3.923 5.043-5.038 8.227\" /></g></svg>;\nexport default SvgSqs;","import * as React from \"react\";\nconst SvgSsm = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Systems-Manager_64\"}</title><defs><linearGradient id=\"linearGradient-ssm\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Systems-Manager_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Management-Governance\" fill=\"url(#linearGradient-ssm)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Systems-Manager_Icon_64_Squid\" fill=\"#fff\" d=\"M47 54.998h13v2H47v2h-2v-2h-4v-2h4v-1h2zm4-6h9v2h-9v2h-2v-2h-8v-2h8v-1.001h2zm5-6.002h4v2h-4v2h-2v-2H41v-2h13v-1h2zm-35 4h9v2.001h-9c-1.255 0-2.596-.377-3.587-1.008-2.02-1.28-5.413-4.274-5.413-9.947 0-6.881 4.665-9.407 7.38-10.292l-.054-.916c-.002-5.668 3.748-11.48 8.72-13.577 5.823-2.476 11.99-1.25 16.499 3.28 1.399 1.402 2.551 3.11 3.433 5.094a6.74 6.74 0 0 1 6.422-1.245c2.847.934 4.619 3.565 4.827 7.108 2.838.68 8.773 3.014 8.773 10.638 0 .285-.011.56-.022.823l-1.999-.053c.01-.267.021-.513.021-.77 0-6.734-5.557-8.426-7.946-8.84a1 1 0 0 1-.808-1.194c-.029-2.981-1.29-5.097-3.47-5.812-1.953-.643-4.099.066-5.342 1.758a1 1 0 0 1-.952.396 1 1 0 0 1-.796-.654c-.833-2.343-2.03-4.306-3.557-5.835-3.913-3.932-9.262-4.996-14.303-2.852-4.208 1.774-7.502 6.903-7.502 11.676l.099 1.654a1 1 0 0 1-.752 1.027C18.18 30.09 14 32.05 14 38.042c0 4.48 2.438 6.963 4.485 8.258.675.43 1.638.697 2.515.697m45 5.322-1.764-.101a1.01 1.01 0 0 0-1.032.779 13.4 13.4 0 0 1-1.748 4.22 1 1 0 0 0 .181 1.282l1.317 1.174-3.281 3.282-1.171-1.313a1 1 0 0 0-1.28-.18 13.4 13.4 0 0 1-4.225 1.75 1 1 0 0 0-.777 1.033l.1 1.756h-4.64l.1-1.758a1 1 0 0 0-.777-1.033 13.4 13.4 0 0 1-4.223-1.751.996.996 0 0 0-1.28.18l-1.174 1.315-3.28-3.281 1.315-1.172a1 1 0 0 0 .18-1.28 13.4 13.4 0 0 1-1.747-4.224c-.107-.478-.585-.804-1.032-.78L34 52.319v-4.641l1.768.101A1.02 1.02 0 0 0 36.8 47a13.4 13.4 0 0 1 1.75-4.215 1 1 0 0 0-.18-1.281l-1.324-1.181 3.281-3.282 1.181 1.324a1 1 0 0 0 1.279.179c1.3-.82 2.718-1.407 4.216-1.745a1 1 0 0 0 .777-1.033l-.1-1.771h4.64l-.1 1.773a1 1 0 0 0 .777 1.032c1.495.34 2.912.926 4.214 1.747a1 1 0 0 0 1.279-.18l1.183-1.326 3.281 3.282-1.321 1.178a1 1 0 0 0-.18 1.281A13.4 13.4 0 0 1 63.202 47c.108.476.561.804 1.032.778L66 47.677zm.943-6.698-2.001.114a15.4 15.4 0 0 0-1.363-3.289l1.497-1.335a1 1 0 0 0 .041-1.453l-4.778-4.779a.99.99 0 0 0-.735-.292 1 1 0 0 0-.718.333l-1.34 1.502a15.4 15.4 0 0 0-3.283-1.36l.114-2.01a1 1 0 0 0-.272-.743 1 1 0 0 0-.726-.313h-6.758a1 1 0 0 0-.726.313c-.19.2-.288.469-.272.744l.114 2.006a15.4 15.4 0 0 0-3.285 1.36l-1.338-1.499a1 1 0 0 0-.718-.333.96.96 0 0 0-.735.292l-4.778 4.779a1 1 0 0 0 .041 1.453l1.5 1.338a15.4 15.4 0 0 0-1.364 3.286l-2.003-.114a1 1 0 0 0-1.057.998v6.759a1 1 0 0 0 1.057.998l1.996-.114c.325 1.148.781 2.25 1.362 3.293l-1.491 1.33a1 1 0 0 0-.041 1.454l4.778 4.779a.999.999 0 0 0 1.453-.041l1.33-1.493a15.4 15.4 0 0 0 3.292 1.368l-.113 1.992A1 1 0 0 0 46.621 68h6.758a1 1 0 0 0 .998-1.057l-.113-1.99a15.4 15.4 0 0 0 3.294-1.367l1.328 1.49a1 1 0 0 0 1.453.04l4.778-4.778a1 1 0 0 0-.042-1.454l-1.493-1.332a15.4 15.4 0 0 0 1.363-3.291l1.998.114A1 1 0 0 0 68 53.377v-6.76a1 1 0 0 0-1.057-.997\" /></g></svg>;\nexport default SvgSsm;","import * as React from \"react\";\nconst SvgSsoAdmin = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-IAM-Identity-Center_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-IAM-Identity-Center_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"#dd344c\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-IAM-Identity-Center_Icon_64_Squid\" fill=\"#fff\" d=\"M67.438 62.325 52.56 47.447a1 1 0 0 1-.181-1.167c2.078-4.003 1.28-9.048-1.94-12.268a10.45 10.45 0 0 0-8.691-3c-3.23.392-6.078 2.256-7.812 5.117-2.038 3.359-1.947 7.668.23 10.979 3.021 4.595 8.91 6.184 13.698 3.7.387-.2.858-.127 1.168.182l2.468 2.468a1 1 0 0 1 .292.707v3.243h3.243c.264 0 .519.105.707.292l1.415 1.414c.187.188.293.442.293.708v3.242h3.242c.266 0 .519.106.707.293l1.855 1.856 3.942.263zm2.029-.305-.353 4.596a1 1 0 0 1-.996.923q-.034 0-.068-.002l-5.303-.354a1 1 0 0 1-.641-.29l-1.828-1.83H56.45a1 1 0 0 1-1-1v-3.827l-.829-.828h-3.829a1 1 0 0 1-1-1v-3.83l-1.672-1.672c-5.574 2.486-12.179.544-15.626-4.7-2.598-3.951-2.703-9.1-.269-13.114 2.056-3.39 5.44-5.6 9.282-6.064a12.44 12.44 0 0 1 10.346 3.57c3.653 3.653 4.683 9.286 2.622 13.936l14.702 14.702a1 1 0 0 1 .29.784M45.423 41.346a2.48 2.48 0 0 0-.733-1.768 2.48 2.48 0 0 0-1.768-.733c-.667 0-1.295.26-1.767.732a2.503 2.503 0 0 0 0 3.536c.974.975 2.56.975 3.535 0 .473-.473.733-1.1.733-1.767m.681-3.183a4.47 4.47 0 0 1 1.319 3.183 4.47 4.47 0 0 1-1.319 3.18v.002a4.49 4.49 0 0 1-3.182 1.315 4.48 4.48 0 0 1-3.181-1.316 4.506 4.506 0 0 1 0-6.364 4.47 4.47 0 0 1 3.181-1.318c1.203 0 2.332.468 3.182 1.318m-24.103 6.759H28v2h-6c-5.854-.013-10.674-4.165-10.976-9.454-.013-.25-.024-.481-.024-.713 0-6.524 4.627-8.95 7.351-9.81a14 14 0 0 1-.027-.875c0-5.35 3.757-10.888 8.739-12.881 5.807-2.344 11.965-1.178 16.463 3.118 1.187 1.12 2.705 2.794 3.769 4.835 1.136-.998 2.419-1.487 3.888-1.487 2.903 0 6.157 2.336 6.748 7.442C63.95 28.472 67 31.775 67 36.922c0 5.427-3.222 9.068-8.839 9.987l-.323-1.974C61.105 44.4 65 42.575 65 36.922c0-4.381-2.603-6.93-8.192-8.018a1 1 0 0 1-.807-.922c-.224-3.725-2.206-6.327-4.818-6.327-1.335 0-2.382.58-3.394 1.88-.223.287-.58.429-.941.376a1 1 0 0 1-.785-.638c-.872-2.33-2.609-4.285-3.913-5.515-3.919-3.742-9.278-4.754-14.342-2.713-4.198 1.679-7.484 6.522-7.484 11.025 0 .505.03.99.093 1.485q.006.056.007.113v.014c0 .505-.374.927-.86.996-2.499.634-6.564 2.52-6.564 8.077 0 .197.01.394.02.583.242 4.249 4.188 7.574 8.981 7.584\" /></g></svg>;\nexport default SvgSsoAdmin;","import * as React from \"react\";\nconst SvgStepfunctions = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Step-Functions_64\"}</title><defs><linearGradient id=\"linearGradient-stf\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Step-Functions_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Application-Integration\" fill=\"url(#linearGradient-stf)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS_Step_Functions_Icon_64_Squid\" fill=\"#fff\" d=\"M45 44h21v-7H45zm22-9H44a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h23a1 1 0 0 0 1-1v-9a1 1 0 0 0-1-1M43.5 62.5c0 1.93-1.57 3.5-3.5 3.5s-3.5-1.57-3.5-3.5S38.07 59 40 59s3.5 1.57 3.5 3.5M14 47h18v-4H14zm0-10h18v-4H14zm22.5-19.5c0-1.93 1.57-3.5 3.5-3.5s3.5 1.57 3.5 3.5S41.93 21 40 21s-3.5-1.57-3.5-3.5M56 53H24v-4h9a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1h-9v-2h9a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1h-9v-3h32v4h2v-5a1 1 0 0 0-1-1H41v-3.096c2.556-.472 4.5-2.713 4.5-5.404 0-3.033-2.468-5.5-5.5-5.5a5.506 5.506 0 0 0-5.5 5.5c0 2.691 1.944 4.932 4.5 5.404V26H23a1 1 0 0 0-1 1v4h-9a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h9v2h-9a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h9v5a1 1 0 0 0 1 1h16v2.096c-2.556.472-4.5 2.713-4.5 5.404 0 3.033 2.468 5.5 5.5 5.5s5.5-2.467 5.5-5.5c0-2.691-1.944-4.932-4.5-5.404V55h16a1 1 0 0 0 1-1v-4.973h-2z\" /></g></svg>;\nexport default SvgStepfunctions;","import * as React from \"react\";\nconst SvgSts = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 48 48\" fill=\"currentColor\" {...props}><title>{\"Icon-Resource/General-Resource/Res_SAML-token_48_Light\"}</title><defs><linearGradient id=\"linearGradient-sts\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><path id=\"Icon-Resource/General-Resource/Res_SAML-token_48\" fill=\"url(#linearGradient-sts)\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1} d=\"M23.886 24.573a1 1 0 0 0-.175 1.18c1.068 1.994.728 4.39-.845 5.963a5.07 5.07 0 0 1-7.16 0 5.03 5.03 0 0 1-1.481-3.58c0-1.352.526-2.623 1.482-3.579a4.97 4.97 0 0 1 3.53-1.462c.824 0 1.66.203 2.435.617.388.206.866.136 1.179-.175l1.322-1.323a1 1 0 0 0 .292-.742l-.042-1.245 1.246.042a.95.95 0 0 0 .74-.292l.747-.745c.196-.196.3-.465.292-.74l-.043-1.247 1.246.043c.26.01.545-.097.74-.292l.866-.865 1.31-.128.04.85zm9.287-10.425a1.01 1.01 0 0 0-.752-.239l-2.716.267a1 1 0 0 0-.61.288l-.81.81-1.882-.064c-.255-.032-.546.095-.742.292a1 1 0 0 0-.292.741l.065 1.883-.131.13-1.882-.064a.94.94 0 0 0-.741.292 1 1 0 0 0-.292.741l.063 1.882-.518.52c-2.628-1.076-5.616-.507-7.64 1.516a7.01 7.01 0 0 0-2.068 4.993c0 1.886.734 3.66 2.068 4.994a7.04 7.04 0 0 0 4.994 2.065 7.04 7.04 0 0 0 4.994-2.065c2.022-2.023 2.59-5.012 1.515-7.639l7.536-7.536a1 1 0 0 0 .292-.752l-.106-2.344a1 1 0 0 0-.345-.71M18.579 30.04a.845.845 0 1 1-1.192-1.196.845.845 0 0 1 1.192 1.196m-2.608-2.61a2.85 2.85 0 0 0 0 4.024 2.84 2.84 0 0 0 2.012.832c.727 0 1.456-.277 2.01-.832a2.85 2.85 0 0 0 0-4.024c-1.075-1.075-2.95-1.072-4.022 0m22.57-15.604a1.777 1.777 0 0 1-2.51 0l-.001-.002a1.76 1.76 0 0 1-.516-1.255 1.766 1.766 0 0 1 1.772-1.77h.002a1.76 1.76 0 0 1 1.77 1.773c0 .476-.184.922-.517 1.254m-3.922-3.928a3.75 3.75 0 0 0-1.106 2.67 3.75 3.75 0 0 0 1.102 2.67 3.76 3.76 0 0 0 2.67 1.106c.966 0 1.932-.368 2.668-1.102a3.78 3.78 0 0 0 .005-5.339 3.78 3.78 0 0 0-5.34-.005M20.255 43.574 4.414 27.706 28.139 4.02l15.134.733.708 15.133zM45.228 3.751a1 1 0 0 0-.95-.952l-16.484-.798a.97.97 0 0 0-.755.291L2.294 26.997a1 1 0 0 0-.002 1.414l17.254 17.283a.997.997 0 0 0 1.414.002L45.706 20.99a1 1 0 0 0 .293-.755z\" /></svg>;\nexport default SvgSts;","import * as React from \"react\";\nconst SvgSupport = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Support_16\"}</title><defs><linearGradient id=\"linearGradient-spr\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Support_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Customer-Enablement\" fill=\"url(#linearGradient-spr)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Support_16_Squid\" fill=\"#fff\" d=\"M15.878 16.096a1 1 0 0 1-.7.307h-.02a1 1 0 1 1 .721-.307m-2.162-2.08c-.37.386-.568.892-.558 1.426s.23 1.032.614 1.403c.375.36.865.558 1.384.558h.04a2.003 2.003 0 0 0 1.348-3.442 2.004 2.004 0 0 0-2.828.055m4.375 3.093-.988-.198a.5.5 0 0 0-.395.087l-.504.369a.5.5 0 0 0-.2.345l-.117.996-1.465-.002-.114-.987a.5.5 0 0 0-.2-.344l-.51-.378a.51.51 0 0 0-.396-.089l-.98.196-.452-1.393.92-.421a.5.5 0 0 0 .265-.299l.193-.587a.5.5 0 0 0-.04-.401l-.494-.88 1.185-.86.678.737a.5.5 0 0 0 .368.161h.003l.635-.004a.5.5 0 0 0 .366-.161l.672-.73 1.184.861-.492.876a.5.5 0 0 0-.04.397l.188.594c.043.134.14.244.268.303l.915.42zm1.275-2.116-1.119-.513-.056-.177.603-1.073a.5.5 0 0 0-.142-.65l-1.903-1.385a.5.5 0 0 0-.662.066l-.827.897-.197.001-.83-.9a.5.5 0 0 0-.662-.066l-1.905 1.382a.5.5 0 0 0-.142.65l.604 1.076-.056.171-1.124.516a.5.5 0 0 0-.266.608l.725 2.24a.5.5 0 0 0 .574.336l1.2-.24.158.118.141 1.213a.5.5 0 0 0 .496.443l2.354.002h.001c.254 0 .467-.19.496-.442l.144-1.221.151-.11 1.208.242a.5.5 0 0 0 .574-.335l.73-2.239a.5.5 0 0 0-.268-.61M6.841 7.495A2.5 2.5 0 0 1 9.336 5a2.5 2.5 0 0 1 2.495 2.495 2.5 2.5 0 0 1-2.495 2.496 2.5 2.5 0 0 1-2.495-2.496m2.584 3.54c.776 0 1.483.245 2.104.728l.615-.789a4.5 4.5 0 0 0-.924-.544 3.49 3.49 0 0 0 1.611-2.935A3.5 3.5 0 0 0 9.336 4a3.5 3.5 0 0 0-3.495 3.495c0 1.266.683 2.367 1.693 2.98-2.009.944-3.499 3.316-3.534 6.019a.5.5 0 0 0 .145.357A.5.5 0 0 0 4.5 17h5.336v-1H5.024c.257-2.991 2.41-4.965 4.401-4.965\" /></g></svg>;\nexport default SvgSupport;","import * as React from \"react\";\nconst SvgSwf = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Step-Functions_16\"}</title><defs><linearGradient id=\"linearGradient-swf\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Step-Functions_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Application-Integration\" fill=\"url(#linearGradient-swf)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS_Step_Functions_Icon_16_Squid\" fill=\"#fff\" d=\"M14 13h5v-2h-5zm2 2H8v-2h2.5a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5H8V9h8v1h-2.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5H16zM5 12h5v-1H5zm7.5 7a.5.5 0 1 1 .002-1.002A.5.5 0 0 1 12.5 19m0-14a.5.5 0 1 1-.002 1.002A.5.5 0 0 1 12.5 5m7 5H17V8.5a.5.5 0 0 0-.5-.5H13V6.908c.581-.207 1-.757 1-1.408 0-.827-.673-1.5-1.5-1.5S11 4.673 11 5.5c0 .651.419 1.201 1 1.408V8H7.5a.5.5 0 0 0-.5.5V10H4.5a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 .5.5H7v2.5a.5.5 0 0 0 .5.5H12v1.092c-.581.207-1 .757-1 1.408 0 .827.673 1.5 1.5 1.5s1.5-.673 1.5-1.5c0-.651-.419-1.201-1-1.408V16h3.5a.5.5 0 0 0 .5-.5V14h2.5a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5\" /></g></svg>;\nexport default SvgSwf;","import * as React from \"react\";\nconst SvgTextract = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Textract_64\"}</title><g id=\"Icon-Architecture/64/Arch_Amazon-Textract_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Machine-Learning\" fill=\"#01a88d\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Textract_Icon_64_Squid\" fill=\"#fff\" d=\"M22.062 50c2.314 3.603 6.348 6 10.938 6 7.167 0 13-5.832 13-13s-5.833-13-13-13c-5.397 0-10.034 3.307-11.998 8h2.212c1.825-3.556 5.522-6 9.786-6 6.065 0 11 4.935 11 11s-4.935 11-11 11a10.99 10.99 0 0 1-8.479-4zM37 45v-2h5c0-4.962-4.038-9-9-9-4.963 0-9 4.038-9 9h5v2H24.23c.913 4.002 4.494 7 8.77 7a8.95 8.95 0 0 0 5.643-2H34v-2h6.478a9 9 0 0 0 1.29-3zm-15.998 3h2.212A10.9 10.9 0 0 1 22 43c0-1.041.155-2.045.426-3h-2.063A13 13 0 0 0 20 43c0 1.771.36 3.46 1.003 5m-1.259 2H17v-2h1.874c-.34-.96-.585-1.962-.725-3h-2.735l1.293 1.293-1.415 1.414-3-3a1 1 0 0 1 0-1.414l3-3 1.415 1.414L15.414 43H18c0-1.027.104-2.03.302-3H17v-2h1.874C20.94 32.184 26.484 28 33 28c4.427 0 8.4 1.939 11.148 5H59v2H45.666A14.9 14.9 0 0 1 48 43H59v2H47.85c-.982 7.327-7.259 13-14.85 13-5.744 0-10.738-3.248-13.257-8M37 39a1 1 0 0 0-1-1h-6a1 1 0 0 0-1 1v2h2v-1h1v3h-1v2h4v-2h-1v-3h1v1h2zm12 1h10v-2H49zm0 10h10v-2H49zm8-23h3.585L57 23.414zm6.707.293c.187.187.293.442.293.707v35a1 1 0 0 1-1 1H32a1 1 0 0 1-1-1v-4h2v3h29V29h-6a1 1 0 0 1-1-1v-6H33v5h-2v-6a1 1 0 0 1 1-1h24a1 1 0 0 1 .707.293zM68 24.166V61a1 1 0 0 1-1 1h-2v-2h1V24.612L58.617 18H36v1h-2v-2a1 1 0 0 1 1-1h24c.246 0 .483.091.666.255l8 7.165c.212.19.334.461.334.746\" /></g></svg>;\nexport default SvgTextract;","import * as React from \"react\";\nconst SvgTimestreamQuery = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Timestream_64\"}</title><defs><linearGradient id=\"linearGradient-tsd\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Timestream_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-tsd)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Timestream_Icon_64_Squid\" fill=\"#fff\" d=\"M60.92 52.293 62.201 51H56.25l-1.574-1.586-2.976 3-8.638-8.707 1.402-1.414 7.236 7.293 2.976-3L57.071 49h5.131l-1.283-1.293 1.403-1.414L66 50l-3.678 3.707zM51.7 36.586 53.273 35h3.138l2.972 3.332-1.477 1.336L55.527 37h-1.432L51.7 39.414 49.305 37h-5.542v-2h6.363zM62.202 36H60.63v-2h4.96v5h-1.984v-1.586L61.04 40l2.566 2.586V41h1.984v5h-4.96v-2h1.573l-2.565-2.586L57.07 44h-5.953l-1.693 1.707-1.403-1.414L50.297 42h5.953zm-19.14 13.293 1.984-2 1.403 1.414-1.985 2zM32.85 14c9.94 0 16.866 3.162 16.866 6s-6.926 6-16.866 6-16.866-3.162-16.866-6 6.926-6 16.866-6m9.92 19h-1.983v22c0 .552.443 1 .992 1h7.937v4c0 2.838-6.926 6-16.866 6-9.623 0-16.866-3.479-16.866-5.735v-7.591C19.017 55.284 25.267 57 32.85 57c2.464 0 4.858-.189 7.112-.563l-.321-1.974A42 42 0 0 1 32.85 55c-9.94 0-16.866-3.162-16.866-6V38.674C19.017 41.284 25.267 43 32.85 43c2.464 0 4.858-.189 7.112-.563l-.321-1.974A42 42 0 0 1 32.85 41c-9.94 0-16.866-3.162-16.866-6V23.674C19.017 26.284 25.267 28 32.85 28s13.833-1.716 16.866-4.326V34H51.7V20c0-4.561-8.104-8-18.85-8S14 15.439 14 20v40.265C14 64.385 22.809 68 32.85 68c10.746 0 18.85-3.439 18.85-8v-4h13.89v-2H42.77z\" /></g></svg>;\nexport default SvgTimestreamQuery;","import * as React from \"react\";\nconst SvgTimestreamWrite = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Timestream_64\"}</title><defs><linearGradient id=\"linearGradient-tsd\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Timestream_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-tsd)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Timestream_Icon_64_Squid\" fill=\"#fff\" d=\"M60.92 52.293 62.201 51H56.25l-1.574-1.586-2.976 3-8.638-8.707 1.402-1.414 7.236 7.293 2.976-3L57.071 49h5.131l-1.283-1.293 1.403-1.414L66 50l-3.678 3.707zM51.7 36.586 53.273 35h3.138l2.972 3.332-1.477 1.336L55.527 37h-1.432L51.7 39.414 49.305 37h-5.542v-2h6.363zM62.202 36H60.63v-2h4.96v5h-1.984v-1.586L61.04 40l2.566 2.586V41h1.984v5h-4.96v-2h1.573l-2.565-2.586L57.07 44h-5.953l-1.693 1.707-1.403-1.414L50.297 42h5.953zm-19.14 13.293 1.984-2 1.403 1.414-1.985 2zM32.85 14c9.94 0 16.866 3.162 16.866 6s-6.926 6-16.866 6-16.866-3.162-16.866-6 6.926-6 16.866-6m9.92 19h-1.983v22c0 .552.443 1 .992 1h7.937v4c0 2.838-6.926 6-16.866 6-9.623 0-16.866-3.479-16.866-5.735v-7.591C19.017 55.284 25.267 57 32.85 57c2.464 0 4.858-.189 7.112-.563l-.321-1.974A42 42 0 0 1 32.85 55c-9.94 0-16.866-3.162-16.866-6V38.674C19.017 41.284 25.267 43 32.85 43c2.464 0 4.858-.189 7.112-.563l-.321-1.974A42 42 0 0 1 32.85 41c-9.94 0-16.866-3.162-16.866-6V23.674C19.017 26.284 25.267 28 32.85 28s13.833-1.716 16.866-4.326V34H51.7V20c0-4.561-8.104-8-18.85-8S14 15.439 14 20v40.265C14 64.385 22.809 68 32.85 68c10.746 0 18.85-3.439 18.85-8v-4h13.89v-2H42.77z\" /></g></svg>;\nexport default SvgTimestreamWrite;","import * as React from \"react\";\nconst SvgTranscribe = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_Amazon-Transcribe_16\"}</title><defs><linearGradient id=\"linearGradient-trs\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#055f4e\" /><stop offset=\"100%\" stopColor=\"#56c0a7\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_Amazon-Transcribe_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Machine-Learning\" fill=\"url(#linearGradient-trs)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"Amazon-Transcribe_Icon_16_Squid\" fill=\"#fff\" d=\"M18.263 7.952 15.97 5.701v2.251zM20 16.512a.5.5 0 0 1-.505.5h-4.54V16.01h4.036l-.003-7.055h-3.523a.503.503 0 0 1-.504-.501V5.003h-3.1v2.978h-1.008V4.502c0-.276.226-.501.504-.501L15.465 4c.13 0 .257.05.354.144l4.028 3.953c.098.096.15.225.15.357zM6.93 15h1.008v-2.006H6.93zm1.988 1.003h1.01v-4.012h-1.01zM10.912 15h1.01v-2.006h-1.01zm2.266 1.457.841.554c-.992 1.49-2.504 2.346-4.15 2.346a5.7 5.7 0 0 1-2.56-.633l-2.46 1.227a.5.5 0 0 1-.233.048c-.168 0-.35-.06-.454-.166a.58.58 0 0 1-.092-.675l1.266-2.38c-.347-.589-.788-1.537-.788-2.574 0-2.814 2.292-4.936 5.332-4.936 1.124 0 1.93.397 2.632.826l-.53.855c-.683-.419-1.275-.678-2.102-.678-2.096 0-4.323 1.379-4.323 3.933 0 .689.285 1.52.784 2.281.1.153.108.347.023.509l-.784 1.47 1.518-.755a.51.51 0 0 1 .49.02c.635.386 1.509.625 2.28.625 1.78 0 2.838-1.188 3.31-1.897\" /></g></svg>;\nexport default SvgTranscribe;","import * as React from \"react\";\nconst SvgTransfer = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Transfer-Family_16\"}</title><defs><linearGradient id=\"linearGradient-atf\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#055f4e\" /><stop offset=\"100%\" stopColor=\"#56c0a7\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Transfer-Family_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Migration-Transfer\" fill=\"url(#linearGradient-atf)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Transfer-Family_Icon-atf6_Squid\" fill=\"#fff\" d=\"m9.186 13.857 2.036 2c.094.092.22.143.351.143.155.025.262-.054.356-.15l1.964-2-.713-.7-1.107 1.127V9.5h-1v4.808l-1.186-1.165zM14 6.723V11.5h1V6.692l1.186 1.165.701-.714-2.036-2A.5.5 0 0 0 14.5 5c-.096.021-.261.054-.356.15l-1.964 2 .713.7zM19 9v9a.5.5 0 0 1-.5.5h-13A.5.5 0 0 1 5 18V8a.5.5 0 0 1 .5-.5H7c.141 0 .276.06.371.164l.758.836h1.668v1H7.908a.5.5 0 0 1-.37-.164L6.779 8.5H6v9h12v-8h-2v-1h2.5a.5.5 0 0 1 .5.5\" /></g></svg>;\nexport default SvgTransfer;","import * as React from \"react\";\nconst SvgVerifiedpermissions = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Verified-Permissions_64\"}</title><g id=\"Icon-Architecture/64/Arch_Amazon-Verified-Permissions_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"#dd344c\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Fill-1\" fill=\"#fff\" d=\"M48 48h10v2H48v4h10v2H48v3h-2V45h2zm18 5.522-1.515-.086c-.471-.034-.924.3-1.032.778a12.2 12.2 0 0 1-1.582 3.821 1 1 0 0 0 .18 1.279l1.132 1.01-2.859 2.859-1.006-1.127a.996.996 0 0 0-1.28-.18 12.2 12.2 0 0 1-3.825 1.584 1 1 0 0 0-.777 1.033L53.521 66h-4.042l.085-1.508a1 1 0 0 0-.777-1.033 12.2 12.2 0 0 1-3.822-1.586 1 1 0 0 0-1.28.18l-1.008 1.13-2.86-2.859 1.129-1.007a1 1 0 0 0 .181-1.28 12.2 12.2 0 0 1-1.582-3.823 1.01 1.01 0 0 0-1.032-.778L37 53.522v-4.044l1.518.086c.479.019.922-.3 1.032-.777.306-1.353.84-2.637 1.585-3.815a1 1 0 0 0-.18-1.281l-1.138-1.014 2.86-2.86 1.014 1.137c.328.364.869.439 1.28.179a12.2 12.2 0 0 1 3.815-1.579 1 1 0 0 0 .778-1.032L49.479 37h4.042l-.085 1.523c-.029.488.3.925.777 1.032 1.354.307 2.638.839 3.813 1.581.412.26.954.184 1.281-.179l1.016-1.14 2.86 2.86-1.135 1.012a1 1 0 0 0-.18 1.28 12.1 12.1 0 0 1 1.583 3.818c.108.477.563.796 1.032.777L66 49.478zm1.687-5.83c-.2-.188-.47-.287-.744-.271l-1.754.1a14 14 0 0 0-1.196-2.887l1.312-1.17a1 1 0 0 0 .041-1.453l-4.357-4.356a.98.98 0 0 0-.735-.293 1 1 0 0 0-.718.334l-1.175 1.316a14 14 0 0 0-2.882-1.195l.099-1.76A1 1 0 0 0 54.58 35h-6.16a1 1 0 0 0-.998 1.057l.099 1.758c-1.003.291-1.968.69-2.884 1.194l-1.173-1.313a1 1 0 0 0-.718-.334.98.98 0 0 0-.735.293l-4.357 4.356a1 1 0 0 0 .041 1.453l1.315 1.173a14.2 14.2 0 0 0-1.198 2.884l-1.755-.1a1 1 0 0 0-1.057.998v6.162a1 1 0 0 0 1.057.998l1.749-.1a14 14 0 0 0 1.197 2.892l-1.307 1.165a1 1 0 0 0-.042 1.453l4.357 4.357a.97.97 0 0 0 .735.292 1 1 0 0 0 .718-.334l1.166-1.306c.919.506 1.887.907 2.891 1.199l-.099 1.746A1 1 0 0 0 48.42 68h6.16a1 1 0 0 0 .998-1.057l-.099-1.744A14 14 0 0 0 58.373 64l1.163 1.304a1 1 0 0 0 .718.334.96.96 0 0 0 .735-.292l4.357-4.357a1.002 1.002 0 0 0-.041-1.453l-1.31-1.168c.505-.918.905-1.885 1.196-2.889l1.752.1A1.002 1.002 0 0 0 68 54.581v-6.162c0-.274-.113-.538-.313-.727M31.742 36.218l-7.545 7.545a.996.996 0 0 1-1.414 0l-3.771-3.772 1.414-1.414 3.064 3.065 6.838-6.838zm0-14.392-7.545 7.544a.996.996 0 0 1-1.414 0l-3.771-3.772 1.414-1.414 3.064 3.065 6.838-6.837zm-1.886 30.529-3.537 3.537 3.537 3.537-1.414 1.414-3.537-3.537-3.537 3.537-1.414-1.414 3.537-3.537-3.537-3.537 1.414-1.414 3.537 3.537 3.537-3.537zM45 15.659 50.973 21H45zM14 14h29v8a1 1 0 0 0 1 1h8v10h2V21.471c0-.285-.121-.556-.333-.746l-9.474-8.471a1 1 0 0 0-.667-.254H13a1 1 0 0 0-1 1v54a1 1 0 0 0 1 1h25v-2H14z\" /></g></svg>;\nexport default SvgVerifiedpermissions;","import * as React from \"react\";\nconst SvgWafv2 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-WAF_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-WAF_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"#dd344c\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><g id=\"Icon-Service/64/AWS-WAF_64\" fill=\"#fff\" transform=\"translate(12 12)\"><path id=\"AWS-WAF_Icon_64_Squid\" d=\"M2.396 29H0v-2h2.399c.2-5.059 1.84-9.872 4.809-13.975l1.621 1.173C6.108 17.957 4.598 22.366 4.399 27H7v2H4.396c.186 4.662 1.697 9.097 4.433 12.876l-1.621 1.173C4.224 38.926 2.583 34.085 2.396 29M43.01 48.828c-4.112 2.977-8.938 4.617-14.01 4.811V56h-2v-2.361c-5.072-.194-9.9-1.834-14.012-4.811l1.172-1.62c3.77 2.729 8.192 4.239 12.84 4.431V49h2v2.639c4.648-.193 9.069-1.703 12.838-4.431zM12.988 7.246C17.1 4.269 21.928 2.629 27 2.436V0h2v2.436c5.072.193 9.898 1.834 14.01 4.81l-1.172 1.62C38.069 6.138 33.648 4.628 29 4.436V7h-2V4.436c-4.648.191-9.07 1.702-12.84 4.43zM56 27v2h-2.398c-.186 5.085-1.828 9.926-4.811 14.049l-1.622-1.173c2.736-3.779 4.248-8.214 4.433-12.876H49v-2h2.599c-.199-4.634-1.709-9.043-4.43-12.802l1.622-1.173c2.968 4.103 4.608 8.916 4.808 13.975zM42.972 11.65l7.84-7.84 1.414 1.414-7.84 7.84zM13.026 44.424l-7.84 7.84-1.414-1.414 7.84-7.84zm2.226-27.757L.412 1.827 1.826.413l14.841 14.84zm25.455 22.626 14.879 14.88-1.414 1.414-14.88-14.879zM19.664 28.735q.113-.2.241-.401c1.681-2.641 1.199-6.245.665-8.422 1.441.947 2.74 2.904 3.183 3.726a.99.99 0 0 0 .959.523c.395-.031.734-.291.866-.664 1.489-4.23.732-7.41-.318-9.471a7.2 7.2 0 0 1 2.912 3.166c1.416 2.942 1.101 6.969-.824 10.508-2.629 4.836-2.102 9.906-1.504 12.634-1.501-.647-2.837-1.378-3.99-2.182-3.027-2.11-3.99-6.245-2.19-9.417m13.43-.337a1.002 1.002 0 0 0 1.615.938c.081-.065 1.721-1.419 2.515-4.694.957 1.392 1.958 4.201.626 9.361-1.318 5.105-7.57 6.541-9.801 6.894-.539-1.933-1.632-7.298 1.057-12.242 1.908-3.51 2.414-7.479 1.458-10.754 1.81 2.126 3.337 5.472 2.53 10.497m-15.172-.648c-2.302 4.06-1.078 9.349 2.788 12.043 1.75 1.22 3.87 2.279 6.3 3.148q.167.06.337.059c.021 0 .039-.011.059-.012l.001.009c.425-.033 10.419-.901 12.379-8.494 2.522-9.766-2.529-12.663-2.745-12.782a1 1 0 0 0-1.475.774 13 13 0 0 1-.316 1.807c-.692-7.668-6.771-10.788-8-11.343-1.26-.965-2.792-1.628-4.568-1.943a1.002 1.002 0 0 0-.815 1.752c.15.127 3.266 2.829 2.377 7.971-1.161-1.523-3.009-3.359-5.183-3.359a1.001 1.001 0 0 0-.933 1.361c.022.054 2.06 5.425.089 8.52a13 13 0 0 0-.295.489\" /></g></g></svg>;\nexport default SvgWafv2;","import * as React from \"react\";\nconst SvgXray = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-X-Ray_64\"}</title><defs><linearGradient id=\"linearGradient-xry\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-X-Ray_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Developer-Tools\" fill=\"url(#linearGradient-xry)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-X-Ray_Icon_64_Squid\" fill=\"#fff\" d=\"M47.5 42.2h-2v13.883h-4v-9.916h-2v9.916h-4v-6.941h-2v6.941h-2v1.984h18v-1.984h-2zm8 7.438c0-7.929-6.505-14.38-14.5-14.38s-14.5 6.451-14.5 14.38c0 7.928 6.505 14.379 14.5 14.379s14.5-6.451 14.5-14.38m2 0C57.5 58.66 50.098 66 41 66s-16.5-7.34-16.5-16.362S31.902 33.275 41 33.275s16.5 7.34 16.5 16.363M68 38.702c0 5.657-3.132 9.336-8.591 10.092l-.277-1.965C62.266 46.396 66 44.634 66 38.702c0-5.568-4.247-7.583-7.809-8.292a.99.99 0 0 1-.801-.916c-.234-4.073-2.645-5.896-4.932-5.896-1.437 0-2.777.671-3.676 1.842-.22.288-.585.433-.943.38a1 1 0 0 1-.79-.637c-.81-2.168-2.01-4.06-3.47-5.469-3.838-3.711-9.09-4.72-14.049-2.695-4.117 1.675-7.342 6.495-7.342 10.974 0 .503.031 1.003.091 1.488a.99.99 0 0 1-.752 1.084c-2.437.6-6.527 2.443-6.527 8.06 0 .212.011.403.021.604.183 3.292 3.047 6.315 6.966 7.351l-.515 1.916c-4.744-1.254-8.218-5.02-8.448-9.16a13 13 0 0 1-.024-.71c0-6.491 4.538-8.898 7.216-9.752a14 14 0 0 1-.028-.881c0-5.312 3.69-10.817 8.582-12.808 5.718-2.337 11.778-1.175 16.205 3.11 1.338 1.29 2.481 2.924 3.351 4.778a6.56 6.56 0 0 1 4.132-1.459c3.072 0 6.295 2.177 6.862 7.013 5.606 1.35 8.68 4.904 8.68 10.075\" /></g></svg>;\nexport default SvgXray;","import type { FC, ReactNode } from 'react'\nimport { Box } from '@mui/material'\nimport { memo } from 'react'\n\ninterface PillCellProps {\n backgroundColor?: string\n children: ReactNode\n height?: number | string\n outlineColor?: string\n outlineWidth?: string\n paddingBottom?: number | string\n paddingTop?: number | string\n}\n\nexport const PillCell: FC<PillCellProps> = memo(({\n backgroundColor,\n children,\n height = '24px',\n outlineColor,\n outlineWidth = '1px',\n paddingBottom,\n paddingTop,\n}) => {\n return (\n <Box\n sx={{\n alignItems: 'center',\n backgroundColor: backgroundColor ?? (theme => theme.palette.background.paper),\n borderRadius: '16px',\n display: 'inline-flex',\n height: paddingTop || paddingBottom ? 'auto' : height,\n maxWidth: '100%',\n outlineColor: outlineColor ?? (theme => theme.palette.divider),\n outlineStyle: 'solid',\n outlineWidth,\n ...(paddingTop && { paddingTop }),\n ...(paddingBottom && { paddingBottom }),\n overflow: 'hidden',\n }}\n >\n {children}\n </Box>\n )\n})\n","import type { FC } from 'react'\nimport { ErrorOutline, InfoOutlined } from '@mui/icons-material'\nimport { Alert, AlertTitle, Box, Button, Link, Typography } from '@mui/material'\n\nimport type { StatusResponse } from '@/types/api.ts'\nimport { AppInspectorNotFoundError, ConnectionError } from '@/api/errors.ts'\nimport { APPINSPECTOR_API_PREFIX } from '@/config.ts'\n\nexport interface StatusMessageProps {\n error?: Error\n onRetry?: () => void\n status?: StatusResponse\n}\n\n/**\n * Component to display helpful messages for connection/status issues\n */\nexport const StatusMessage: FC<StatusMessageProps> = ({\n error,\n onRetry,\n status,\n}) => {\n // App Inspector extension not found (404)\n if (error instanceof AppInspectorNotFoundError) {\n return (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n justifyContent: 'center',\n p: 4,\n }}\n >\n <Alert\n icon={<ErrorOutline fontSize=\"large\" />}\n severity=\"error\"\n sx={{ maxWidth: 600, width: '100%' }}\n >\n <AlertTitle sx={{ fontWeight: 'bold' }}>App Inspector Not Available</AlertTitle>\n <Typography sx={{ mb: 2 }} variant=\"body2\">\n The App Inspector extension is not licensed or not enabled in LocalStack.\n </Typography>\n <Typography sx={{ mb: 1 }} variant=\"body2\">\n <strong>To enable App Inspector:</strong>\n </Typography>\n <Typography sx={{ mb: 1 }} variant=\"body2\">\n Set the environment variable and restart LocalStack:\n </Typography>\n <Box\n component=\"pre\"\n sx={{\n backgroundColor: 'rgba(0, 0, 0, 0.05)',\n borderRadius: 1,\n fontSize: '0.875rem',\n p: 1,\n }}\n >\n LOCALSTACK_APPINSPECTOR_ENABLE=1\n </Box>\n <Typography sx={{ fontStyle: 'italic', mb: 1, mt: 2 }} variant=\"body2\">\n Runtime changes can be made via endpoint\n {' '}\n <code>\n {APPINSPECTOR_API_PREFIX}\n /status\n </code>\n . For persistent default state across restarts, adjust the\n {' '}\n <code>LOCALSTACK_APPINSPECTOR_ENABLE</code>\n {' '}\n environment variable in your\n {' '}\n <code>~/.localstack</code>\n {' '}\n profile files.\n {' '}\n <Link\n href=\"https://docs.localstack.cloud/aws/capabilities/config/configuration/#profiles\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n Learn more about LocalStack profiles\n </Link>\n </Typography>\n\n <Typography sx={{ mb: 1, mt: 2 }} variant=\"body2\">\n <strong>For more information:</strong>\n </Typography>\n <Link\n href=\"https://docs.localstack.cloud/user-guide/tools/application-inspector/\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n App Inspector Documentation\n </Link>\n {onRetry && (\n <Box sx={{ display: 'flex', justifyContent: 'flex-start', mt: 2 }}>\n <Button\n aria-label=\"Check App Inspector status again\"\n onClick={onRetry}\n variant=\"outlined\"\n >\n Check Again\n </Button>\n </Box>\n )}\n </Alert>\n </Box>\n )\n }\n\n // Connection error\n if (error instanceof ConnectionError) {\n return (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n justifyContent: 'center',\n p: 4,\n }}\n >\n <Alert\n icon={<ErrorOutline fontSize=\"large\" />}\n severity=\"error\"\n sx={{ maxWidth: 600, width: '100%' }}\n >\n <AlertTitle sx={{ fontWeight: 'bold' }}>Connection Error</AlertTitle>\n <Typography sx={{ mb: 2 }} variant=\"body2\">\n Failed to connect to LocalStack. Please ensure LocalStack is running and accessible.\n </Typography>\n <Typography sx={{ mb: 1 }} variant=\"body2\">\n <strong>To start LocalStack:</strong>\n </Typography>\n <Box\n component=\"pre\"\n sx={{\n backgroundColor: 'rgba(0, 0, 0, 0.05)',\n borderRadius: 1,\n fontSize: '0.875rem',\n p: 1,\n }}\n >\n localstack start\n </Box>\n {onRetry && (\n <Box sx={{ display: 'flex', justifyContent: 'flex-start', mt: 2 }}>\n <Button\n aria-label=\"Retry connection to LocalStack\"\n onClick={onRetry}\n variant=\"outlined\"\n >\n Retry Connection\n </Button>\n </Box>\n )}\n </Alert>\n </Box>\n )\n }\n\n // App Inspector disabled\n if (status?.status === 'DISABLED') {\n return (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n justifyContent: 'center',\n p: 4,\n }}\n >\n <Alert\n icon={<InfoOutlined fontSize=\"large\" />}\n severity=\"warning\"\n sx={{ maxWidth: 600, width: '100%' }}\n >\n <AlertTitle sx={{ fontWeight: 'bold' }}>App Inspector is Disabled</AlertTitle>\n <Typography sx={{ mb: 2 }} variant=\"body2\">\n App Inspector is currently disabled. Please enable it to view traces and spans.\n </Typography>\n <Typography sx={{ mb: 1 }} variant=\"body2\">\n <strong>To enable App Inspector at runtime:</strong>\n </Typography>\n <Box\n component=\"pre\"\n sx={{\n backgroundColor: 'rgba(0, 0, 0, 0.05)',\n borderRadius: 1,\n fontSize: '0.875rem',\n overflowX: 'auto',\n p: 1,\n }}\n >\n {String.raw`curl -X PUT http://localhost:4566${APPINSPECTOR_API_PREFIX}/status \\\n -H \"Content-Type: application/json\" \\\n -d '{\"status\": \"ENABLED\"}'`}\n </Box>\n <Typography sx={{ mb: 1, mt: 2 }} variant=\"body2\">\n <strong>To enable App Inspector persistently across restarts:</strong>\n </Typography>\n <Typography sx={{ mb: 1 }} variant=\"body2\">\n Set the environment variable:\n </Typography>\n <Box\n component=\"pre\"\n sx={{\n backgroundColor: 'rgba(0, 0, 0, 0.05)',\n borderRadius: 1,\n fontSize: '0.875rem',\n p: 1,\n }}\n >\n APPINSPECTOR=1\n </Box>\n {Boolean(status.note) && (\n <Typography sx={{ display: 'block', fontStyle: 'italic', mt: 2 }} variant=\"caption\">\n {status.note}\n </Typography>\n )}\n {onRetry && (\n <Box sx={{ display: 'flex', justifyContent: 'flex-start', mt: 2 }}>\n <Button\n aria-label=\"Check if App Inspector is enabled\"\n onClick={onRetry}\n variant=\"outlined\"\n >\n Check Status Again\n </Button>\n </Box>\n )}\n </Alert>\n </Box>\n )\n }\n\n // Generic error\n if (error) {\n return (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n justifyContent: 'center',\n p: 4,\n }}\n >\n <Alert\n icon={<ErrorOutline fontSize=\"large\" />}\n severity=\"error\"\n sx={{ maxWidth: 600, width: '100%' }}\n >\n <AlertTitle sx={{ fontWeight: 'bold' }}>Error</AlertTitle>\n <Typography sx={{ mb: 2 }} variant=\"body2\">\n {error.message}\n </Typography>\n {onRetry && (\n <Box sx={{ display: 'flex', justifyContent: 'flex-start', mt: 2 }}>\n <Button\n aria-label=\"Retry operation\"\n onClick={onRetry}\n variant=\"outlined\"\n >\n Retry\n </Button>\n </Box>\n )}\n </Alert>\n </Box>\n )\n }\n\n return <></>\n}\n","/**\n * Custom error classes for API error handling\n */\n\n/**\n * Error thrown when App Inspector is disabled\n */\nexport class AppInspectorDisabledError extends Error {\n constructor(message: string, cause?: Error) {\n super(message)\n this.name = 'AppInspectorDisabledError'\n this.cause = cause\n }\n}\n\n/**\n * Error thrown when App Inspector extension is not found (404 from AppInspector endpoints)\n */\nexport class AppInspectorNotFoundError extends Error {\n constructor(message: string, cause?: Error) {\n super(message)\n this.name = 'AppInspectorNotFoundError'\n this.cause = cause\n }\n}\n\n/**\n * Error thrown when connection to LocalStack fails (network errors)\n */\nexport class ConnectionError extends Error {\n constructor(message: string, cause?: Error) {\n super(message)\n this.name = 'ConnectionError'\n this.cause = cause\n }\n}\n","// AppInspector configuration\n\n/**\n * API Configuration\n */\nexport const APPINSPECTOR_API_PREFIX = '/_localstack/appinspector'\n\nexport const API_VERSION = 'v1'\n\nexport const API_ENDPOINTS = {\n EVENTS: '/traces/*/spans/*/events',\n ROOT: '/',\n SPANS: '/traces/*/spans',\n STATUS: '/status',\n TRACES: '/traces',\n} as const\n\nexport const getApiV1Endpoint = (endpoint: string): string => {\n return `/${API_VERSION}${endpoint}`\n}\n\nexport const getApiEndpoint = (endpoint: string): string => {\n // Status and root endpoints don't use versioning\n if (endpoint === API_ENDPOINTS.ROOT || endpoint === API_ENDPOINTS.STATUS) {\n return endpoint\n }\n // All other endpoints use v1 prefix\n return getApiV1Endpoint(endpoint)\n}\n\nexport type EndpointKey = keyof typeof API_ENDPOINTS\n\nexport const getAppInspectorApiUrl = (localstackEndpoint: string, endpoint: string): string => {\n return `${localstackEndpoint}${APPINSPECTOR_API_PREFIX}${getApiEndpoint(endpoint)}`\n}\n","import { useCallback, useEffect, useState } from 'react'\n\n/**\n * Custom hook for managing state that persists in localStorage\n * @param key - localStorage key\n * @param initialValue - default value if key doesn't exist\n * @returns [value, setValue] tuple similar to useState\n */\nexport function useLocalStorage<T>(key: string, initialValue: T): [T, (value: T) => void] {\n // Get initial value from localStorage or use default\n const [storedValue, setStoredValue] = useState<T>(() => {\n try {\n const item = globalThis.localStorage.getItem(key)\n return item ? (JSON.parse(item) as T) : initialValue\n }\n catch (error) {\n console.error(`Error reading localStorage key \"${key}\":`, error)\n return initialValue\n }\n })\n\n // Update localStorage when state changes\n const setValue = useCallback((value: T) => {\n try {\n setStoredValue(value)\n globalThis.localStorage.setItem(key, JSON.stringify(value))\n\n // Dispatch custom event to sync across tabs/components\n globalThis.dispatchEvent(new StorageEvent('storage', {\n key,\n newValue: JSON.stringify(value),\n }))\n }\n catch (error) {\n console.error(`Error setting localStorage key \"${key}\":`, error)\n }\n }, [key])\n\n // Listen for changes from other tabs/windows\n useEffect(() => {\n const handleStorageChange = (event: StorageEvent) => {\n if (event.key === key && event.newValue !== null) {\n try {\n setStoredValue(JSON.parse(event.newValue) as T)\n }\n catch (error) {\n console.error(`Error parsing localStorage key \"${key}\":`, error)\n }\n }\n }\n\n globalThis.addEventListener('storage', handleStorageChange)\n return () => {\n globalThis.removeEventListener('storage', handleStorageChange)\n }\n }, [key])\n\n return [storedValue, setValue]\n}\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { StatusResponse } from '@/types/api.ts'\nimport { useAppInspectorApi } from '@/api/use-api.tsx'\n\nexport interface Status {\n checking: boolean\n error: Error | undefined\n status: StatusResponse | undefined\n}\n\n/**\n * Hook to check status\n * Returns status information and whether it's currently checking\n */\nexport const useStatus = (): Status & { checkStatus: () => Promise<void> } => {\n const api = useAppInspectorApi()\n const [checking, setChecking] = useState(true) // Initialize as true since check runs on mount\n const [status, setStatus] = useState<StatusResponse | undefined>()\n const [error, setError] = useState<Error | undefined>()\n const hasFetchedReference = useRef(false)\n const abortControllerReference = useRef<AbortController | null>(null)\n\n const checkStatus = useCallback(async () => {\n // Cancel any in-flight request to prevent race conditions\n if (abortControllerReference.current) {\n abortControllerReference.current.abort()\n }\n\n const abortController = new AbortController()\n abortControllerReference.current = abortController\n\n setChecking(true)\n try {\n const response = await api.getStatus()\n // Only update state if this request wasn't aborted\n if (!abortController.signal.aborted) {\n setStatus(response)\n setError(undefined)\n }\n }\n catch (error_) {\n // Only update state if this request wasn't aborted\n if (!abortController.signal.aborted) {\n setError(error_ instanceof Error ? error_ : new Error('Unknown error'))\n setStatus(undefined)\n }\n }\n finally {\n // Only update state if this request wasn't aborted\n if (!abortController.signal.aborted) {\n setChecking(false)\n }\n }\n }, [api])\n\n useEffect(() => {\n // Only fetch once on mount to prevent infinite loop\n if (!hasFetchedReference.current) {\n hasFetchedReference.current = true\n void checkStatus()\n }\n }, [checkStatus])\n\n return { checking, checkStatus, error, status }\n}\n","import type { FC } from 'react'\nimport { ArrowBack } from '@mui/icons-material'\nimport { Box, Button, Drawer, Paper } from '@mui/material'\nimport { styled } from '@mui/material/styles'\nimport { ReactFlowProvider } from '@xyflow/react'\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { StatusResponse } from '@/types/api.ts'\nimport type { Span } from '@/types/spans.ts'\nimport { useAppInspectorApi } from '@/api/use-api.tsx'\nimport { EventDetails } from '@/components/event-details/event-details.tsx'\nimport { StatusMessage } from '@/components/status-message/status-message.tsx'\nimport { TraceGraph } from '@/components/trace-graph/trace-graph.tsx'\nimport { useLocalStorage } from '@/hooks/use-local-storage.tsx'\nimport { useStatus } from '@/hooks/use-status.tsx'\n\nconst HEADER_HEIGHT = 56\nconst DRAWER_WIDTH = '35%'\n\nconst Main = styled('main', { shouldForwardProp: property => property !== 'open' })<{\n open?: boolean\n}>(({ open, theme }) => ({\n flexGrow: 1,\n marginRight: `-${DRAWER_WIDTH}`,\n transition: theme.transitions.create('margin', {\n duration: theme.transitions.duration.leavingScreen,\n easing: theme.transitions.easing.sharp,\n }),\n ...(open && {\n marginRight: 0,\n transition: theme.transitions.create('margin', {\n duration: theme.transitions.duration.enteringScreen,\n easing: theme.transitions.easing.easeOut,\n }),\n }),\n}))\n\nconst StyledDrawer = styled(Drawer)(() => ({\n '& .MuiDrawer-paper': {\n bottom: 0,\n boxSizing: 'border-box',\n height: `calc(100% - ${HEADER_HEIGHT.toString()}px)`,\n overflowY: 'auto',\n top: 'auto',\n width: DRAWER_WIDTH,\n },\n 'flexShrink': 0,\n 'position': 'relative',\n 'width': DRAWER_WIDTH,\n}))\n\nexport const TraceGraphView: FC<{\n fetchError: Error | undefined\n fetchSpans: () => void\n handleClose: () => void\n handleEventSelect: (spanId: string) => void\n handleRetry: () => void\n loading: boolean\n navigateToSpansList: () => void\n open: boolean\n selectedEvent: Span | undefined\n spanId: string | undefined\n spans: Span[] | undefined\n status: StatusResponse | undefined\n statusError: Error | undefined\n traceId: string | undefined\n}> = ({\n fetchError,\n fetchSpans,\n handleClose,\n handleEventSelect,\n handleRetry,\n loading,\n navigateToSpansList,\n open,\n selectedEvent,\n spanId,\n spans,\n status,\n statusError,\n traceId,\n}) => {\n // Show helpful message if connection failed or AppInspector is disabled\n const shouldShowStatusMessage = Boolean(statusError) || (status?.status === 'DISABLED')\n\n return (\n <Box\n data-testid=\"trace-graph-page\"\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n gap: 2,\n overflow: 'hidden',\n }}\n >\n <Box sx={{ display: 'flex', width: '100%' }}>\n <Button onClick={() => { navigateToSpansList() }} startIcon={<ArrowBack />}>\n Go back\n </Button>\n <Box sx={{ flexGrow: 1 }} />\n </Box>\n <Paper\n sx={{\n display: 'flex',\n flexGrow: 1,\n overflow: 'hidden',\n position: 'relative',\n width: '100%',\n }}\n >\n {shouldShowStatusMessage\n ? (\n <StatusMessage\n error={statusError}\n onRetry={handleRetry}\n status={status}\n />\n )\n : (\n <>\n <Main open={open}>\n <Box\n sx={{\n height: '100%',\n overflow: 'auto',\n }}\n >\n {traceId !== undefined && (\n <ReactFlowProvider>\n <TraceGraph\n initialFocusEventId={spanId}\n onEventSelect={handleEventSelect}\n onRefresh={() => { fetchSpans() }}\n spans={{\n data: spans,\n error: fetchError,\n loading,\n }}\n />\n </ReactFlowProvider>\n )}\n </Box>\n </Main>\n <StyledDrawer anchor=\"right\" open={open} variant=\"persistent\">\n <EventDetails onClose={handleClose} selectedEvent={selectedEvent} />\n </StyledDrawer>\n </>\n )}\n </Paper>\n </Box>\n )\n}\n\nexport const TraceGraphPage: FC<{\n onClose?: () => void\n spanId?: string\n traceId: string\n}> = ({ onClose, spanId, traceId }) => {\n const api = useAppInspectorApi()\n const [spans, setSpans] = useState<Span[]>()\n const [loading, setLoading] = useState(false)\n\n const [includeReadOperations] = useLocalStorage('includeReadOperations', false)\n const [fetchError, setFetchError] = useState<Error>()\n const fetchSpans = useCallback(async () => {\n setLoading(true)\n try {\n const response = await api.getSpans({\n is_write_operation: includeReadOperations ? undefined : true,\n trace_id: traceId,\n })\n setSpans(response.spans)\n setFetchError(undefined)\n }\n catch (error) {\n console.error(error)\n setFetchError(error instanceof Error ? error : new Error('Unknown error', { cause: error }))\n }\n finally {\n setLoading(false)\n }\n }, [api, includeReadOperations, traceId])\n\n useEffect(() => {\n void fetchSpans()\n }, [fetchSpans])\n\n const [open, setOpen] = useState(true)\n const [selectedEvent, setSelectedEvent] = useState<Span | undefined>(() => spans?.find(span => span.span_id === spanId))\n\n const spansReference = useRef<Span[] | undefined>()\n useEffect(() => {\n if (!spansReference.current && spans) {\n setSelectedEvent(spans.find(span => span.span_id === spanId))\n spansReference.current = spans\n }\n }, [spans, setSelectedEvent, spanId])\n\n const { checkStatus, error: statusError, status } = useStatus()\n\n const handleEventSelect = useCallback((spanId: string) => {\n const span = spans?.find(s => s.span_id === spanId)\n setSelectedEvent(span)\n setOpen(true)\n }, [spans])\n\n const handleRetry = useCallback(() => {\n void checkStatus()\n }, [checkStatus])\n\n const navigateToSpansList = useCallback(() => {\n onClose?.()\n }, [onClose])\n\n return (\n <TraceGraphView\n fetchError={fetchError}\n fetchSpans={() => void fetchSpans()}\n handleClose={() => { setOpen(false) }}\n handleEventSelect={handleEventSelect}\n handleRetry={handleRetry}\n loading={loading}\n navigateToSpansList={navigateToSpansList}\n open={open}\n selectedEvent={selectedEvent}\n spanId={spanId ?? undefined}\n spans={spans}\n status={status}\n statusError={statusError}\n traceId={traceId}\n />\n )\n}\n","import type { FC, JSX } from 'react'\nimport { Box, Chip, Divider, Stack, Typography } from '@mui/material'\nimport { useMemo } from 'react'\n\nimport type { Span } from '@/types/spans.ts'\nimport { getEventGroupsByType } from '@/utils/event-utils.ts'\nimport { unixNanoToDate } from '@/utils/time.ts'\n\nimport { EventDetailsHeader } from './event-details-header.tsx'\nimport { EventSection } from './event-section.tsx'\nimport { ToggleSection } from './toggle-section.tsx'\n\ninterface EventDetailsProps {\n onClose?: () => void\n selectedEvent: Span | undefined\n}\n\nexport const EventDetails: FC<EventDetailsProps> = ({ onClose, selectedEvent }) => {\n const attributes = useMemo(() => {\n const attributes = Object.entries(selectedEvent?.attributes ?? {})\n return attributes.filter(([key]) => key !== 'localstack.aws.account_id' && key !== 'localstack.aws.service')\n }, [selectedEvent?.attributes])\n\n if (!selectedEvent) {\n return (\n <Box sx={{ p: 3, textAlign: 'center' }}>\n <Typography color=\"text.secondary\" variant=\"body2\">\n Select an event to view details\n </Typography>\n </Box>\n )\n }\n\n return (\n <Box data-testid=\"event-details\" sx={{ display: 'flex', flexDirection: 'column', height: '100%' }}>\n <EventDetailsHeader event={selectedEvent} onClose={onClose} />\n\n <Box sx={{ flexGrow: 1, overflow: 'auto', p: 2 }}>\n <Stack spacing={2}>\n {/* Basic Information */}\n <ToggleSection headline=\"Basic Information\">\n <Stack spacing={1}>\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Span ID\n </Typography>\n <Typography variant=\"body2\">{selectedEvent.span_id}</Typography>\n </Box>\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Trace ID\n </Typography>\n <Typography variant=\"body2\">\n {selectedEvent.trace_id}\n </Typography>\n </Box>\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Operation\n </Typography>\n <Typography variant=\"body2\">{selectedEvent.operation_name}</Typography>\n </Box>\n </Stack>\n </ToggleSection>\n\n <Divider />\n\n {/* Service Information */}\n <ToggleSection headline=\"Service Information\">\n <Stack spacing={1}>\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Service\n </Typography>\n <Typography variant=\"body2\">{selectedEvent.service_name}</Typography>\n </Box>\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Resource\n </Typography>\n <Typography variant=\"body2\">{selectedEvent.resource_name}</Typography>\n </Box>\n {Boolean(selectedEvent.region) && (\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Region\n </Typography>\n <Typography variant=\"body2\">{selectedEvent.region}</Typography>\n </Box>\n )}\n </Stack>\n </ToggleSection>\n\n <Divider />\n\n {/* Timing Information */}\n <ToggleSection headline=\"Timing\">\n <Stack spacing={1}>\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Start Time\n </Typography>\n <Typography variant=\"body2\">\n {unixNanoToDate(selectedEvent.start_time_unix_nano)?.toISOString()}\n </Typography>\n </Box>\n {Boolean(selectedEvent.end_time_unix_nano) && (\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Duration\n </Typography>\n <Typography variant=\"body2\">\n {((BigInt(selectedEvent.end_time_unix_nano) - BigInt(selectedEvent.start_time_unix_nano)) / BigInt('1000000')).toString()}\n {' '}\n ms\n </Typography>\n </Box>\n )}\n </Stack>\n </ToggleSection>\n\n <Divider />\n\n {/* Status */}\n <ToggleSection headline=\"Status\">\n <Stack direction=\"row\" spacing={1}>\n <Chip\n color={selectedEvent.status_code === 2 ? 'error' : (selectedEvent.status_code === 1 ? 'success' : 'default')}\n label={selectedEvent.status_code === 2 ? 'Error' : (selectedEvent.status_code === 1 ? 'OK' : 'Unset')}\n size=\"small\"\n />\n {Boolean(selectedEvent.status_message) && <Typography variant=\"body2\">{selectedEvent.status_message}</Typography>}\n </Stack>\n </ToggleSection>\n\n {/* Events */}\n {selectedEvent.events.length > 0 && (\n <>\n <Divider />\n <EventSection\n eventGroups={getEventGroupsByType(selectedEvent.events)}\n headline=\"Events\"\n />\n </>\n )}\n\n {/* Attributes */}\n {attributes.length > 0 && (\n <>\n <Divider />\n <ToggleSection headline=\"Attributes\">\n <Stack spacing={1}>\n {attributes.map(([key, value]) => (\n <Box key={key}>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n {key}\n </Typography>\n {renderKeyValue(key, value)}\n </Box>\n ))}\n </Stack>\n </ToggleSection>\n </>\n )}\n </Stack>\n </Box>\n </Box>\n )\n}\n\nfunction renderKeyValue(key: string, value: unknown): JSX.Element {\n if (typeof value === 'string' && (key === 'localstack.aws.service.request' || key === 'localstack.aws.service.response' || key === 'localstack.aws.service.exception')) {\n return (\n <Box sx={{ backgroundColor: theme => theme.palette.background.default, borderRadius: 1, p: 1 }}>\n <pre style={{ margin: 0, overflow: 'auto' }}>\n <Typography variant=\"body2\">\n {JSON.stringify(JSON.parse(value), undefined, 2)}\n </Typography>\n </pre>\n </Box>\n )\n }\n\n if (typeof value === 'boolean') {\n return <Typography variant=\"body2\">{value ? 'yes' : 'no'}</Typography>\n }\n\n return <Typography variant=\"body2\">{value}</Typography>\n}\n","export type IAMPermissionStatus\n = | 'explicitly_allowed'\n | 'explicitly_denied'\n | 'implicitly_allowed'\n | 'implicitly_denied'\n\nexport interface IAMPolicyEvaluationPayload {\n explicit_allow_count?: number\n explicit_allows?: {\n account: string\n action: string\n resource: string\n }[]\n explicit_denies?: {\n account: string\n action: string\n resource: string\n }[]\n explicit_deny_count?: number\n implicit_denies?: {\n action: string\n resource: string\n }[]\n implicit_deny_count?: number\n is_allowed: boolean\n operation: string\n principal_account: string\n principal_arn: string\n service: string\n}\n\nexport interface ParsedIAMEvent {\n details: {\n actions?: string[]\n explicitAllows?: number\n explicitDenies?: number\n implicitDenies?: number\n resources?: string[]\n }\n operation: string\n permission: IAMPermissionStatus\n principal: string\n service: string\n}\n\n/**\n * Determines the permission status based on IAM policy evaluation\n */\nexport function determinePermissionStatus(payload: IAMPolicyEvaluationPayload): IAMPermissionStatus {\n // If explicitly denied, that takes precedence\n if (payload.explicit_deny_count && payload.explicit_deny_count > 0) {\n return 'explicitly_denied'\n }\n\n // If allowed and has explicit allows\n if (payload.is_allowed && payload.explicit_allow_count && payload.explicit_allow_count > 0) {\n return 'explicitly_allowed'\n }\n\n // If allowed but no explicit allows (implicitly allowed)\n if (payload.is_allowed) {\n return 'implicitly_allowed'\n }\n\n // If not allowed and no explicit denies, it's implicitly denied\n return 'implicitly_denied'\n}\n\n/**\n * Format permission status for display\n */\nexport function formatPermissionStatus(status: IAMPermissionStatus): string {\n switch (status) {\n case 'explicitly_allowed': {\n return 'Explicitly Allowed'\n }\n case 'explicitly_denied': {\n return 'Explicitly Denied'\n }\n case 'implicitly_allowed': {\n return 'Implicitly Allowed'\n }\n case 'implicitly_denied': {\n return 'Implicitly Denied'\n }\n }\n}\n\n/**\n * Get MUI theme color for permission status.\n *\n * Returns MUI theme color paths that resolve to specific colors in the theme:\n * - 'success.main': Green color for allowed permissions\n * - 'error.main': Red color for denied permissions\n * - 'warning.main': Orange/yellow color for implicitly denied permissions\n *\n * These values are used with MUI's sx prop and resolve to actual colors from the theme.\n */\nexport function getPermissionStatusColor(status: IAMPermissionStatus): string {\n switch (status) {\n case 'explicitly_allowed':\n case 'implicitly_allowed': {\n return 'success.main'\n }\n case 'explicitly_denied': {\n return 'error.main'\n }\n case 'implicitly_denied': {\n return 'warning.main'\n }\n }\n}\n\n/**\n * Parse IAM policy evaluation event payload\n */\nexport function parseIAMEvent(payloadString: string): ParsedIAMEvent | undefined {\n try {\n const payload = JSON.parse(payloadString) as IAMPolicyEvaluationPayload\n\n const permission = determinePermissionStatus(payload)\n\n // Extract actions and resources\n const actions: string[] = []\n const resources: string[] = []\n\n if (payload.explicit_allows) {\n for (const allow of payload.explicit_allows) {\n if (!actions.includes(allow.action)) actions.push(allow.action)\n if (!resources.includes(allow.resource)) resources.push(allow.resource)\n }\n }\n\n if (payload.explicit_denies) {\n for (const deny of payload.explicit_denies) {\n if (!actions.includes(deny.action)) actions.push(deny.action)\n if (!resources.includes(deny.resource)) resources.push(deny.resource)\n }\n }\n\n if (payload.implicit_denies) {\n for (const deny of payload.implicit_denies) {\n if (!actions.includes(deny.action)) actions.push(deny.action)\n if (!resources.includes(deny.resource)) resources.push(deny.resource)\n }\n }\n\n return {\n details: {\n actions,\n explicitAllows: payload.explicit_allow_count,\n explicitDenies: payload.explicit_deny_count,\n implicitDenies: payload.implicit_deny_count,\n resources,\n },\n operation: payload.operation,\n permission,\n principal: payload.principal_arn,\n service: payload.service,\n }\n }\n catch (error) {\n console.error('Error parsing IAM event payload:', error)\n return undefined\n }\n}\n","import type { Event } from '@/types/events'\n\nimport { formatPermissionStatus, parseIAMEvent } from './iam-utils.ts'\n\nexport interface ParsedEventMessage {\n details: string\n headline: string\n message: string\n}\n\n// Event parser for IAM-related events\nconst iamEventParser = (eventName: string, attributes: null | Record<string, unknown>): ParsedEventMessage => {\n // Try to parse IAM policy evaluation payload\n if (attributes?.payload && typeof attributes.payload === 'string') {\n const parsedIAM = parseIAMEvent(attributes.payload)\n\n if (parsedIAM) {\n const headline = `${parsedIAM.service}:${parsedIAM.operation} - ${formatPermissionStatus(parsedIAM.permission)}`\n\n const messageParts = [`Principal: ${parsedIAM.principal}`]\n\n if (parsedIAM.details.actions && parsedIAM.details.actions.length > 0) {\n messageParts.push(`Actions: ${parsedIAM.details.actions.join(', ')}`)\n }\n\n if (parsedIAM.details.resources && parsedIAM.details.resources.length > 0) {\n messageParts.push(`Resources: ${parsedIAM.details.resources.join(', ')}`)\n }\n\n const detailsParts = []\n if (parsedIAM.details.explicitAllows !== undefined) {\n detailsParts.push(`Explicit Allows: ${String(parsedIAM.details.explicitAllows)}`)\n }\n if (parsedIAM.details.explicitDenies !== undefined) {\n detailsParts.push(`Explicit Denies: ${String(parsedIAM.details.explicitDenies)}`)\n }\n if (parsedIAM.details.implicitDenies !== undefined) {\n detailsParts.push(`Implicit Denies: ${String(parsedIAM.details.implicitDenies)}`)\n }\n\n return {\n details: detailsParts.join('\\n'),\n headline,\n message: messageParts.join('\\n'),\n }\n }\n }\n\n // Fallback to simple parsing\n const headline = eventName || 'IAM Event'\n const message = typeof attributes?.message === 'string' ? attributes.message : ''\n const details = typeof attributes?.details === 'string' ? attributes.details : ''\n\n return { details, headline, message }\n}\n\n// Default event parser for generic events\nconst defaultEventParser = (eventName: string, attributes: null | Record<string, unknown>): ParsedEventMessage => {\n const headline = eventName || 'Event'\n const message = typeof attributes?.message === 'string' ? attributes.message : ''\n const details = JSON.stringify(attributes ?? {}, undefined, 2)\n\n return { details, headline, message }\n}\n\n// Map event types to their specific parsers\nconst eventParsers: Record<string, (name: string, attributes: null | Record<string, unknown>) => ParsedEventMessage> = {\n 'iam.error': iamEventParser,\n 'iam.event': iamEventParser,\n 'iam.warning': iamEventParser,\n}\n\nexport const parseEventMessage = (event: Event): ParsedEventMessage => {\n if (event.event_type && event.name) {\n try {\n const parser = eventParsers[event.event_type] ?? defaultEventParser\n return parser(event.name, event.attributes)\n }\n catch (error) {\n console.error(`Error parsing event for type ${event.event_type}:`, error)\n return {\n details: '',\n headline: event.name || 'Unknown Event',\n message: JSON.stringify(event.attributes),\n }\n }\n }\n\n return {\n details: JSON.stringify(event.attributes ?? {}),\n headline: event.name || 'Event',\n message: typeof event.attributes?.message === 'string' ? event.attributes.message : '',\n }\n}\n\n// TODO: Consider aligning EventLevel numeric values with status system\n// or migrating to string literals ('error' | 'info' | 'warning' | 'permission')\n// for easier maintenance\nexport const EventLevel = {\n LevelError: 4,\n LevelInfo: 1,\n LevelNone: 0,\n LevelPermission: 2,\n LevelWarning: 3,\n} as const\n\nexport type EventGroup = 'error' | 'info' | 'permission' | 'warning'\n\nexport type EventLevel = typeof EventLevel[keyof typeof EventLevel]\n\nexport const getEventLevel = (eventType: null | string | undefined): EventLevel => {\n if (!eventType) return EventLevel.LevelInfo\n\n if (eventType.includes('error')) return EventLevel.LevelError\n if (eventType.includes('warning')) return EventLevel.LevelWarning\n if (eventType.includes('iam')) return EventLevel.LevelPermission\n\n return EventLevel.LevelInfo\n}\n\nexport const getEventGroup = (eventType: null | string | undefined): EventGroup => {\n if (!eventType) return 'info'\n\n if (eventType.includes('error')) return 'error'\n if (eventType.includes('warning')) return 'warning'\n if (eventType.includes('iam')) return 'permission'\n\n return 'info'\n}\n\nexport interface GroupedEvents {\n errors?: Event[]\n info?: Event[]\n permissions?: Event[]\n warnings?: Event[]\n}\n\nexport const getEventGroupsByType = (events: Event[]): GroupedEvents => {\n if (events.length === 0) {\n return {}\n }\n\n const groups: GroupedEvents = {}\n\n for (const event of events) {\n const group = getEventGroup(event.event_type)\n\n switch (group) {\n case 'error': {\n groups.errors = [...(groups.errors ?? []), event]\n break\n }\n case 'permission': {\n groups.permissions = [...(groups.permissions ?? []), event]\n break\n }\n case 'warning': {\n groups.warnings = [...(groups.warnings ?? []), event]\n break\n }\n default: {\n groups.info = [...(groups.info ?? []), event]\n }\n }\n }\n\n return groups\n}\n\nexport const calculateHighestEventLevel = (events: Event[]): EventLevel => {\n if (events.length === 0) return EventLevel.LevelNone\n\n const eventLevels = events.map(event => getEventLevel(event.event_type))\n return Math.max(...eventLevels) as EventLevel\n}\n","/**\n * Converts a Unix nanosecond timestamp string to a JavaScript Date object\n * @param unixNanoString Unix timestamp in nanoseconds as a string\n * @returns Date object or undefined if input is null/empty\n */\nexport function unixNanoToDate(unixNanoString: null | string): Date | undefined {\n const milliseconds = unixNanoToMilliseconds(unixNanoString)\n if (!milliseconds) return undefined\n return new Date(milliseconds)\n}\n\nexport function unixNanoToMilliseconds(unixNanoString: null | string): number | undefined {\n if (!unixNanoString) return undefined\n // Use BigInt to safely handle large nanosecond values, then convert to milliseconds\n return Number(BigInt(unixNanoString) / BigInt('1000000'))\n}\n","import type { FC } from 'react'\nimport { Close } from '@mui/icons-material'\nimport { Box, IconButton, Typography } from '@mui/material'\n\nimport type { Span } from '@/types/spans.ts'\n\ninterface EventDetailsHeaderProps {\n event: Span\n onClose?: () => void\n}\n\nexport const EventDetailsHeader: FC<EventDetailsHeaderProps> = ({ event, onClose }) => {\n return (\n <Box\n sx={{\n alignItems: 'center',\n borderBottom: '1px solid',\n borderColor: 'divider',\n display: 'flex',\n justifyContent: 'space-between',\n p: 2,\n }}\n >\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"h6\">\n Event Details\n </Typography>\n <Typography color=\"text.secondary\" variant=\"body2\">\n {event.service_name}\n {' '}\n -\n {event.operation_name}\n </Typography>\n </Box>\n {onClose && (\n <IconButton onClick={onClose} size=\"small\">\n <Close />\n </IconButton>\n )}\n </Box>\n )\n}\n","import type { FC } from 'react'\nimport { Box } from '@mui/material'\n\nimport type { GroupedEvents } from '@/utils/event-utils.ts'\n\nimport { EventDetail } from './event-detail.tsx'\nimport { ToggleSection } from './toggle-section.tsx'\n\ninterface EventSectionProps {\n eventGroups: GroupedEvents\n headline: string\n}\n\nexport const EventSection: FC<EventSectionProps> = ({\n eventGroups,\n headline,\n}) => (\n <ToggleSection headline={headline}>\n <Box>\n {eventGroups.errors && (\n <EventDetail\n displayText=\"Error\"\n events={eventGroups.errors}\n type=\"error\"\n />\n )}\n {eventGroups.warnings && (\n <EventDetail\n displayText=\"Warning\"\n events={eventGroups.warnings}\n type=\"warning\"\n />\n )}\n {eventGroups.permissions && (\n <EventDetail\n displayText=\"IAM Permission\"\n events={eventGroups.permissions}\n type=\"permission\"\n />\n )}\n {eventGroups.info && (\n <EventDetail\n displayText=\"Info\"\n events={eventGroups.info}\n type=\"info\"\n />\n )}\n </Box>\n </ToggleSection>\n)\n","import type { FC } from 'react'\nimport { KeyboardArrowDown, KeyboardArrowRight } from '@mui/icons-material'\nimport { Box, Grid, IconButton, Typography } from '@mui/material'\nimport { useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { Event } from '@/types/events'\nimport type { EventGroup } from '@/utils/event-utils.ts'\nimport { EventLevel, parseEventMessage } from '@/utils/event-utils.ts'\n\nimport { StatusIcon } from '../status-icon.tsx'\nimport { IAMEventDetail } from './iam-event-detail.tsx'\nimport { IAMPermissionDetail } from './iam-permission-detail.tsx'\n\ninterface DetailRowProps {\n content: React.ReactNode | string\n label: string\n}\n\nconst DetailRow: FC<DetailRowProps> = ({ content, label }) => (\n <Grid container spacing={0} sx={{ mb: 1 }}>\n <Grid item sx={{ pr: 1 }} xs={3}>\n <Typography\n sx={{\n color: 'text.primary',\n fontWeight: 600,\n }}\n variant=\"body1\"\n >\n {label}\n </Typography>\n </Grid>\n <Grid item xs={9}>\n {typeof content === 'string'\n ? (\n <Typography\n sx={{\n color: 'text.primary',\n whiteSpace: 'pre-wrap',\n }}\n variant=\"body1\"\n >\n {content}\n </Typography>\n )\n : (\n content\n )}\n </Grid>\n </Grid>\n)\n\ninterface EventMessageProps {\n event: Event\n}\n\nconst EventMessage: FC<EventMessageProps> = ({ event }) => {\n const [isOpen, setIsOpen] = useState(false)\n const [isOverflowing, setIsOverflowing] = useState(false)\n const textReference = useRef<HTMLDivElement>(null)\n\n const parsedMessage = useMemo(() => parseEventMessage(event), [event])\n\n // Check if this is an IAM policy evaluation event\n const isIAMPolicyEvent = useMemo(\n () => event.event_type === 'iam.policy_evaluation'\n && event.attributes?.payload\n && typeof event.attributes.payload === 'string',\n [event],\n )\n\n useEffect(() => {\n const checkOverflow = () => {\n const element = textReference.current\n if (element) {\n setIsOverflowing(element.scrollWidth > element.clientWidth)\n }\n }\n\n checkOverflow()\n window.addEventListener('resize', checkOverflow)\n return () => {\n window.removeEventListener('resize', checkOverflow)\n }\n }, [parsedMessage.headline])\n\n // Show toggle if headline overflows OR if additional content exists\n const hasAdditionalContent = useMemo(\n () => parsedMessage.message || parsedMessage.details || isIAMPolicyEvent,\n [parsedMessage.message, parsedMessage.details, isIAMPolicyEvent],\n )\n const shouldShowToggle = useMemo(\n () => isOverflowing || hasAdditionalContent,\n [isOverflowing, hasAdditionalContent],\n )\n\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column' }}>\n <Box sx={{ alignItems: 'flex-start', display: 'flex' }}>\n {Boolean(shouldShowToggle) && (\n <IconButton\n onClick={() => { setIsOpen(!isOpen) }}\n size=\"small\"\n sx={{ mr: 1, mt: -0.5, p: 0 }}\n >\n {isOpen ? <KeyboardArrowDown /> : <KeyboardArrowRight />}\n </IconButton>\n )}\n <Typography\n ref={textReference}\n sx={{\n color: 'text.primary',\n fontWeight: 600,\n maxWidth: '100%',\n ml: shouldShowToggle ? 0 : 4,\n overflow: 'hidden',\n textOverflow: isOpen ? 'clip' : 'ellipsis',\n whiteSpace: isOpen ? 'pre-wrap' : 'nowrap',\n }}\n variant=\"body1\"\n >\n {parsedMessage.headline}\n </Typography>\n </Box>\n\n {isOpen && (\n <Box sx={{ ml: 4, mt: 1 }}>\n {/* Show IAM-specific detailed view if available */}\n {isIAMPolicyEvent\n ? (\n <IAMEventDetail event={event} />\n )\n : (\n <>\n {/* Only show message and details if they exist */}\n {Boolean(parsedMessage.message) && (\n <DetailRow content={parsedMessage.message} label=\"Message:\" />\n )}\n {Boolean(parsedMessage.details) && (\n <DetailRow content={parsedMessage.details} label=\"Details:\" />\n )}\n </>\n )}\n </Box>\n )}\n </Box>\n )\n}\n\n// Map EventGroup to EventLevel\nconst getEventLevelFromGroup = (group: EventGroup): EventLevel => {\n switch (group) {\n case 'error': {\n return EventLevel.LevelError\n }\n case 'info': {\n return EventLevel.LevelInfo\n }\n case 'permission': {\n return EventLevel.LevelPermission\n }\n case 'warning': {\n return EventLevel.LevelWarning\n }\n default: {\n return EventLevel.LevelNone\n }\n }\n}\n\ninterface EventDetailProps {\n displayText: string\n events: Event[]\n type: EventGroup\n}\n\nexport const EventDetail: FC<EventDetailProps> = ({\n displayText,\n events,\n type,\n}) => {\n // Special handling for IAM permission events\n if (type === 'permission') {\n return (\n <Box>\n <Box\n sx={{\n alignItems: 'left',\n display: 'flex',\n mb: 1,\n }}\n >\n <Typography\n sx={{\n alignItems: 'left',\n display: 'flex',\n flexGrow: 1,\n fontWeight: 600,\n }}\n variant=\"subtitle1\"\n >\n {displayText}\n </Typography>\n </Box>\n\n <IAMPermissionDetail events={events} />\n </Box>\n )\n }\n\n const eventLevel = getEventLevelFromGroup(type)\n\n return (\n <Box>\n <Box\n sx={{\n alignItems: 'left',\n cursor: 'pointer',\n display: 'flex',\n mb: 1,\n }}\n >\n <StatusIcon errorLevel={eventLevel} />\n <Typography\n sx={{\n alignItems: 'left',\n color: 'text.secondary',\n display: 'flex',\n flexGrow: 1,\n fontWeight: 600,\n ml: 1,\n mr: 2,\n }}\n variant=\"subtitle1\"\n >\n {displayText}\n </Typography>\n </Box>\n\n <Box sx={{ mt: 2 }}>\n {events.map(event => (\n <Box\n key={`${event.span_id}-${event.event_id}`}\n sx={{\n maxWidth: '100%',\n mb: 1,\n }}\n >\n <EventMessage event={event} />\n </Box>\n ))}\n </Box>\n </Box>\n )\n}\n","import type { FC } from 'react'\nimport { Cancel, CheckCircle, Error, Info, RemoveCircle } from '@mui/icons-material'\nimport { Box } from '@mui/material'\n\nimport type { Event } from '@/types/events'\nimport type { EventLevel } from '@/utils/event-utils.ts'\nimport { calculateHighestEventLevel, EventLevel as EL } from '@/utils/event-utils.ts'\n\ninterface StatusIconProps {\n errorLevel: EventLevel\n}\n\nexport const StatusIcon: FC<StatusIconProps> = ({ errorLevel }) => {\n switch (errorLevel) {\n case EL.LevelError: {\n return <Cancel sx={{ color: 'red' }} />\n }\n case EL.LevelInfo: {\n return <Info sx={{ color: 'gray' }} />\n }\n case EL.LevelPermission: {\n return <RemoveCircle sx={{ color: 'blue' }} />\n }\n case EL.LevelWarning: {\n return <Error sx={{ color: 'orange' }} />\n }\n default: {\n return <CheckCircle sx={{ color: 'lightgray' }} />\n }\n }\n}\n\ninterface StatusCellProps {\n events: Event[]\n}\n\nexport const StatusCell: FC<StatusCellProps> = ({ events }) => (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n }}\n >\n <StatusIcon errorLevel={calculateHighestEventLevel(events)} />\n </Box>\n)\n","import type { FC } from 'react'\nimport { CheckCircle, Error as ErrorIcon, Warning } from '@mui/icons-material'\nimport { Box, Chip, Grid, Typography } from '@mui/material'\n\nimport type { Event } from '@/types/events'\nimport type { IAMPermissionStatus } from '@/utils/iam-utils.ts'\nimport { formatPermissionStatus, getPermissionStatusColor, parseIAMEvent } from '@/utils/iam-utils.ts'\n\ninterface IAMEventDetailProps {\n event: Event\n}\n\nconst DetailRow: FC<{ content: React.ReactNode | string, label: string }> = ({ content, label }) => (\n <Grid container spacing={0} sx={{ mb: 1 }}>\n <Grid item sx={{ pr: 1 }} xs={3}>\n <Typography\n sx={{\n color: 'text.secondary',\n fontWeight: 600,\n }}\n variant=\"body2\"\n >\n {label}\n </Typography>\n </Grid>\n <Grid item xs={9}>\n {typeof content === 'string'\n ? (\n <Typography\n sx={{\n color: 'text.primary',\n wordBreak: 'break-word',\n }}\n variant=\"body2\"\n >\n {content}\n </Typography>\n )\n : (\n content\n )}\n </Grid>\n </Grid>\n)\n\nconst PermissionIcon: FC<{ status: IAMPermissionStatus }> = ({ status }) => {\n switch (status) {\n case 'explicitly_allowed':\n case 'implicitly_allowed': {\n return <CheckCircle sx={{ color: 'success.main', fontSize: '1rem' }} />\n }\n case 'explicitly_denied': {\n return <ErrorIcon sx={{ color: 'error.main', fontSize: '1rem' }} />\n }\n case 'implicitly_denied': {\n return <Warning sx={{ color: 'warning.main', fontSize: '1rem' }} />\n }\n }\n}\n\nexport const IAMEventDetail: FC<IAMEventDetailProps> = ({ event }) => {\n // Parse IAM event payload\n const payloadString = event.attributes?.payload as string | undefined\n if (!payloadString) {\n return (\n <Box sx={{ p: 2 }}>\n <Typography sx={{ fontWeight: 600 }} variant=\"body2\">\n No IAM policy evaluation data available\n </Typography>\n </Box>\n )\n }\n\n const parsedIAM = parseIAMEvent(payloadString)\n\n if (!parsedIAM) {\n return (\n <Box sx={{ p: 2 }}>\n <Typography sx={{ fontWeight: 600 }} variant=\"body2\">\n Failed to parse IAM event data\n </Typography>\n </Box>\n )\n }\n\n return (\n <Box sx={{ p: 2 }}>\n {/* Permission Status */}\n <Box sx={{ mb: 2 }}>\n <Chip\n icon={<PermissionIcon status={parsedIAM.permission} />}\n label={formatPermissionStatus(parsedIAM.permission)}\n size=\"small\"\n sx={{\n borderColor: getPermissionStatusColor(parsedIAM.permission),\n color: getPermissionStatusColor(parsedIAM.permission),\n }}\n variant=\"outlined\"\n />\n </Box>\n\n {/* Basic Info */}\n <DetailRow content={`${parsedIAM.service}:${parsedIAM.operation}`} label=\"Operation\" />\n <DetailRow content={parsedIAM.principal} label=\"Principal\" />\n\n {/* Actions */}\n {parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && (\n <DetailRow\n content={(\n <Box>\n {parsedIAM.details.actions.map(action => (\n <Typography\n key={action}\n sx={{\n color: 'text.primary',\n }}\n variant=\"body2\"\n >\n {action}\n </Typography>\n ))}\n </Box>\n )}\n label=\"Actions\"\n />\n )}\n\n {/* Resources */}\n {parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && (\n <DetailRow\n content={(\n <Box>\n {parsedIAM.details.resources.map(resource => (\n <Typography\n key={resource}\n sx={{\n color: 'text.primary',\n wordBreak: 'break-all',\n }}\n variant=\"body2\"\n >\n {resource}\n </Typography>\n ))}\n </Box>\n )}\n label=\"Resources\"\n />\n )}\n\n {/* Policy Counts */}\n <Box sx={{ mt: 2 }}>\n <Typography sx={{ fontWeight: 600, mb: 1 }} variant=\"caption\">\n Policy Evaluation\n </Typography>\n <Grid container spacing={2}>\n {parsedIAM.details.explicitAllows !== undefined && (\n <Grid item xs={4}>\n <Box sx={{ textAlign: 'center' }}>\n <Typography color=\"success.main\" sx={{ fontWeight: 'bold' }} variant=\"h6\">\n {parsedIAM.details.explicitAllows}\n </Typography>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Explicit Allows\n </Typography>\n </Box>\n </Grid>\n )}\n {parsedIAM.details.explicitDenies !== undefined && (\n <Grid item xs={4}>\n <Box sx={{ textAlign: 'center' }}>\n <Typography color=\"error.main\" sx={{ fontWeight: 'bold' }} variant=\"h6\">\n {parsedIAM.details.explicitDenies}\n </Typography>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Explicit Denies\n </Typography>\n </Box>\n </Grid>\n )}\n {parsedIAM.details.implicitDenies !== undefined && (\n <Grid item xs={4}>\n <Box sx={{ textAlign: 'center' }}>\n <Typography color=\"warning.main\" sx={{ fontWeight: 'bold' }} variant=\"h6\">\n {parsedIAM.details.implicitDenies}\n </Typography>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Implicit Denies\n </Typography>\n </Box>\n </Grid>\n )}\n </Grid>\n </Box>\n </Box>\n )\n}\n","import type { FC } from 'react'\nimport { KeyboardArrowDown, KeyboardArrowRight } from '@mui/icons-material'\nimport { Box, Chip, IconButton, Typography } from '@mui/material'\nimport { useMemo, useState } from 'react'\n\nimport type { Event } from '@/types/events'\nimport type { IAMPermissionStatus } from '@/utils/iam-utils.ts'\nimport { formatPermissionStatus, parseIAMEvent } from '@/utils/iam-utils.ts'\n\ninterface IAMPermissionDetailProps {\n events: Event[]\n}\n\n// Determine chip color based on permission status\nconst getChipColors = (status: IAMPermissionStatus) => {\n const isAllowed = status === 'explicitly_allowed' || status === 'implicitly_allowed'\n return {\n backgroundColor: isAllowed ? 'success.main' : 'error.main',\n color: 'white',\n }\n}\n\nconst IAMPermissionItem: FC<{ event: Event }> = ({ event }) => {\n const [isOpen, setIsOpen] = useState(false)\n\n // Parse IAM event payload\n const parsedData = useMemo(() => {\n const payloadString = event.attributes?.payload as string | undefined\n if (!payloadString) {\n return\n }\n\n const parsedIAM = parseIAMEvent(payloadString)\n if (!parsedIAM) {\n return\n }\n\n return {\n chipColors: getChipColors(parsedIAM.permission),\n parsedIAM,\n }\n }, [event.attributes?.payload])\n\n if (!parsedData) {\n // eslint-disable-next-line unicorn/no-null\n return null\n }\n\n const { chipColors, parsedIAM } = parsedData\n\n return (\n <Box sx={{ mb: 1 }}>\n <Box sx={{ alignItems: 'center', display: 'flex' }}>\n <IconButton onClick={() => { setIsOpen(!isOpen) }} size=\"small\" sx={{ mr: 1, p: 0 }}>\n {isOpen ? <KeyboardArrowDown /> : <KeyboardArrowRight />}\n </IconButton>\n\n <Chip\n label={formatPermissionStatus(parsedIAM.permission)}\n size=\"small\"\n sx={{\n ...chipColors,\n fontWeight: 500,\n }}\n />\n </Box>\n\n {isOpen && (\n <Box sx={{ ml: 4, mt: 1 }}>\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Principal\n </Typography>\n <Typography variant=\"body2\">\n {parsedIAM.principal}\n </Typography>\n </Box>\n </Box>\n )}\n </Box>\n )\n}\n\nexport const IAMPermissionDetail: FC<IAMPermissionDetailProps> = ({ events }) => (\n <Box sx={{ mt: 2 }}>\n {events.map(event => (\n <IAMPermissionItem event={event} key={`${event.span_id}-${event.event_id}`} />\n ))}\n </Box>\n)\n","import type { FC, ReactNode } from 'react'\nimport { KeyboardArrowDown, KeyboardArrowRight } from '@mui/icons-material'\nimport { Box, Typography } from '@mui/material'\nimport { useState } from 'react'\n\nexport interface ToggleSectionProps {\n children: ReactNode\n headline: string\n initialOpen?: boolean\n}\n\nexport const ToggleSection: FC<ToggleSectionProps> = ({ children, headline, initialOpen = true }) => {\n const [isOpen, setIsOpen] = useState(initialOpen)\n\n return (\n <Box sx={{ mt: 4 }}>\n {/* <Divider sx={{ mb: 2, mx: -2 }} /> */}\n <Box\n onClick={() => { setIsOpen(!isOpen) }}\n sx={{\n cursor: 'pointer',\n mb: 1,\n }}\n >\n <Box\n role=\"button\"\n sx={{\n alignItems: 'center',\n display: 'flex',\n gap: 1,\n }}\n >\n <Typography sx={{ fontWeight: 600 }} variant=\"subtitle2\">\n {headline}\n </Typography>\n {isOpen\n ? (\n <KeyboardArrowDown sx={{ color: 'text.secondary', height: 20, width: 20 }} />\n )\n : (\n <KeyboardArrowRight sx={{ color: 'text.secondary', height: 20, width: 20 }} />\n )}\n </Box>\n </Box>\n {isOpen && <Box>{children}</Box>}\n </Box>\n )\n}\n","import '@xyflow/react/dist/base.css'\n\nimport './xyflow/style.css'\n\nimport type { Edge, NodeTypes } from '@xyflow/react'\nimport type { FC, ReactElement } from 'react'\nimport { Alert, Button, useTheme } from '@mui/material'\nimport { Background, ReactFlow, useNodesState } from '@xyflow/react'\nimport { useEffect, useState } from 'react'\n\nimport type { Span } from '@/types/spans.ts'\nimport type { ServiceNodeData } from './service-node.tsx'\n\nimport { ServiceNode } from './service-node.tsx'\nimport { generateNodesAndEdges, getLayoutedNodesAndEdges } from './utils.ts'\nimport { Controls } from './xyflow/controls.tsx'\n\nconst nodeTypes = {\n service: ServiceNode,\n} satisfies NodeTypes\n\ntype SpanWithChildren = Span & {\n children?: SpanWithChildren[]\n}\n\ninterface TraceGraphProps {\n initialFocusEventId?: string\n onEventSelect: (spanId: string) => void\n onRefresh: () => void\n spans: {\n data: Span[] | undefined\n error: Error | undefined\n loading: boolean\n }\n}\n\nexport const TraceGraph: FC<TraceGraphProps> = ({\n initialFocusEventId,\n onEventSelect,\n onRefresh,\n spans,\n}): ReactElement => {\n const [nodes, setNodes, onNodesChange] = useNodesState<ServiceNodeData>([])\n const [edges, setEdges] = useState<Edge[]>([])\n\n useEffect(() => {\n const spansMap = new Map<string, SpanWithChildren>()\n const rootSpans: SpanWithChildren[] = []\n\n // First pass: create map of all spans\n for (const span of spans.data ?? []) {\n spansMap.set(span.span_id, { ...span, children: [] })\n }\n\n // Second pass: build hierarchy\n for (const span of spans.data ?? []) {\n const currentSpan = spansMap.get(span.span_id)\n if (!currentSpan) continue\n\n if (span.parent_span_id && spansMap.has(span.parent_span_id)) {\n const parentSpan = spansMap.get(span.parent_span_id)\n if (parentSpan) {\n parentSpan.children ??= []\n parentSpan.children.push(currentSpan)\n }\n }\n else {\n // This is a root span (no parent or parent not in trace)\n rootSpans.push(currentSpan)\n }\n }\n\n // Generate nodes and edges from the hierarchical structure\n let allNodes: ServiceNodeData[] = []\n let allEdges: Edge[] = []\n\n for (const rootSpan of rootSpans) {\n const { edges: newEdges, nodes: newNodes } = generateNodesAndEdges(rootSpan)\n allNodes = [...allNodes, ...newNodes]\n allEdges = [...allEdges, ...newEdges]\n }\n\n const { edges: layoutedEdges, nodes: layoutedNodes } = getLayoutedNodesAndEdges(allNodes, allEdges)\n\n for (const node of layoutedNodes) {\n if (node.id === initialFocusEventId) {\n node.selected = true\n }\n }\n\n setNodes(layoutedNodes)\n setEdges(layoutedEdges)\n }, [spans.data, initialFocusEventId, setNodes])\n\n const theme = useTheme()\n\n return (\n <>\n {spans.error && (\n <Alert\n action={\n <Button onClick={() => { onRefresh() }}>Retry</Button>\n }\n severity=\"error\"\n >\n Unexpected error:\n {' '}\n {spans.error.message}\n </Alert>\n )}\n\n <ReactFlow\n data-testid=\"trace-graph\"\n edges={edges}\n fitView\n fitViewOptions={initialFocusEventId ? { maxZoom: 1, nodes: [{ id: initialFocusEventId }], padding: 0.2 } : undefined}\n maxZoom={1.5}\n minZoom={0.1}\n nodes={nodes}\n nodesDraggable={false}\n nodeTypes={nodeTypes}\n onNodeClick={(_event, node) => { onEventSelect(node.data.event.span_id) }}\n onNodesChange={onNodesChange}\n selectNodesOnDrag={false}\n\n >\n <Controls />\n <Background\n bgColor={theme.palette.background.paper}\n color={theme.palette.text.disabled}\n />\n </ReactFlow>\n </>\n )\n}\n","import type { Node, NodeProps } from '@xyflow/react'\nimport type { CSSProperties, FC } from 'react'\nimport { Box, Stack, Typography } from '@mui/material'\nimport '@xyflow/react/dist/style.css'\nimport { Handle, Position } from '@xyflow/react'\nimport { memo } from 'react'\n\nimport type { Span } from '@/types/spans.ts'\n\nimport { ServiceCell } from '../cells/service-cell.tsx'\nimport { ProblemIndicator } from './problem-indicator.tsx'\n\nconst handleStyle: CSSProperties = {\n backgroundColor: 'white',\n borderColor: 'lightgray',\n opacity: 0,\n}\n\nexport type ServiceNodeData = Node<{\n data: Record<string, Span>\n event: Span\n height: number\n id: string\n position: {\n x: number\n y: number\n }\n width: number\n}>\n\nexport const ServiceNode: FC<NodeProps<ServiceNodeData>> = memo(({ data, selected }) => {\n const hasErrors = (data.event.errors && data.event.errors.length > 0) ?? false\n\n return (\n <Box sx={{ maxWidth: 200 }}>\n <Box\n role=\"button\"\n sx={{\n '&:hover': {\n opacity: 1,\n },\n 'alignItems': 'flex-start',\n 'borderRadius': 1,\n 'cursor': 'pointer',\n 'display': 'flex',\n 'flexDirection': 'column',\n 'maxWidth': '100%',\n 'opacity': selected ? 1 : 0.7,\n 'position': 'relative',\n 'transition': 'all 0.3s ease',\n 'width': 'min-content',\n }}\n tabIndex={0}\n >\n <Handle position={Position.Left} style={handleStyle} type=\"target\" />\n <Handle position={Position.Right} style={handleStyle} type=\"source\" />\n\n <ServiceCell\n height=\"32px\"\n resource={data.event.resource_name}\n selected={selected}\n service={data.event.service_name}\n width=\"32px\"\n />\n </Box>\n\n <Stack\n alignItems=\"center\"\n direction=\"row\"\n spacing={0.5}\n sx={{\n ml: 1,\n mt: 0.5,\n }}\n >\n {hasErrors && (\n <Stack\n direction=\"row\"\n spacing={0.5}\n sx={{\n flexWrap: 'wrap',\n gap: '2px',\n }}\n >\n {data.event.errors?.map(error => (\n <ProblemIndicator error={error} key={error.span_id} />\n ))}\n </Stack>\n )}\n <Typography\n sx={{\n fontSize: '0.9rem',\n maxWidth: '100%',\n ml: hasErrors ? 2 : 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n variant=\"caption\"\n >\n {data.event.operation_name}\n </Typography>\n </Stack>\n </Box>\n )\n})\n","import type { FC } from 'react'\nimport { Error as ErrorIcon, Info, Warning } from '@mui/icons-material'\nimport { Box, Tooltip } from '@mui/material'\nimport { useMemo } from 'react'\n\ninterface ProblemIndicatorProps {\n error: {\n level?: 'error' | 'info' | 'warning'\n message?: string\n span_id: string\n }\n}\n\nexport const ProblemIndicator: FC<ProblemIndicatorProps> = ({ error }) => {\n const icon = useMemo(() => {\n switch (error.level) {\n case 'error': {\n return <ErrorIcon sx={{ color: '#d32f2f', fontSize: '14px' }} />\n }\n case 'warning': {\n return <Warning sx={{ color: '#ff9800', fontSize: '14px' }} />\n }\n default: {\n return <Info sx={{ color: '#2196f3', fontSize: '14px' }} />\n }\n }\n }, [error.level])\n\n const color = useMemo(() => {\n switch (error.level) {\n case 'error': {\n return '#d32f2f'\n }\n case 'warning': {\n return '#ff9800'\n }\n default: {\n return '#2196f3'\n }\n }\n }, [error.level])\n\n return (\n <Tooltip arrow title={error.message ?? 'Issue detected'}>\n <Box\n sx={{\n alignItems: 'center',\n backgroundColor: `${color}15`,\n border: `1px solid ${color}`,\n borderRadius: '50%',\n cursor: 'pointer',\n display: 'inline-flex',\n height: '18px',\n justifyContent: 'center',\n width: '18px',\n }}\n >\n {icon}\n </Box>\n </Tooltip>\n )\n}\n","import type { Edge } from '@xyflow/react'\nimport dagre from '@dagrejs/dagre'\nimport { MarkerType, Position } from '@xyflow/react'\n\nimport type { Span } from '@/types/spans.ts'\nimport type { ServiceNodeData } from './service-node.tsx'\n\ninterface NodesAndEdges {\n edges: Edge[]\n nodes: ServiceNodeData[]\n}\n\nexport const generateNodesAndEdges = (\n event: Span,\n parentId?: string,\n): NodesAndEdges => {\n const nodes: ServiceNodeData[] = []\n const edges: Edge[] = []\n\n nodes.push({\n data: {\n data: { [event.span_id]: event },\n event,\n height: 28,\n id: event.span_id,\n position: { x: 0, y: 0 },\n width: 28,\n },\n id: event.span_id,\n position: { x: 0, y: 0 }, // Will be set by layout\n sourcePosition: Position.Right,\n targetPosition: Position.Left,\n type: 'service',\n })\n\n if (parentId) {\n edges.push({\n animated: false,\n id: `e-${parentId}-${event.span_id}`,\n markerEnd: {\n color: 'lightgray',\n height: 16,\n type: MarkerType.Arrow,\n width: 16,\n },\n source: parentId,\n style: {\n stroke: 'lightgray',\n strokeWidth: 1,\n },\n target: event.span_id,\n })\n }\n\n // Process children if they exist\n if (event.children && event.children.length > 0) {\n for (const child of event.children) {\n const { edges: childEdges, nodes: childNodes } = generateNodesAndEdges(child,\n event.span_id)\n nodes.push(...childNodes)\n edges.push(...childEdges)\n }\n }\n\n return { edges, nodes }\n}\n\nexport const getLayoutedNodesAndEdges = (inputNodes: ServiceNodeData[], inputEdges: Edge[]): NodesAndEdges => {\n const dagreGraph = new dagre.graphlib.Graph().setDefaultEdgeLabel(() => ({}))\n\n const direction = 'LR' // Left to Right layout\n const nodeWidth = 200\n const nodeHeight = 70\n\n dagreGraph.setGraph({ rankdir: direction })\n\n for (const node of inputNodes) {\n dagreGraph.setNode(node.id, { height: nodeHeight, width: nodeWidth })\n }\n\n for (const edge of inputEdges) {\n dagreGraph.setEdge(edge.source, edge.target)\n }\n\n dagre.layout(dagreGraph)\n\n const layoutedNodes = inputNodes.map((node) => {\n const nodeWithPosition = dagreGraph.node(node.id)\n return {\n ...node,\n position: {\n x: nodeWithPosition.x - nodeWidth / 2,\n y: nodeWithPosition.y - nodeHeight / 2,\n },\n selectable: true,\n }\n })\n\n return { edges: inputEdges, nodes: layoutedNodes }\n}\n","import type { ReactFlowState } from '@xyflow/react'\nimport type { FC } from 'react'\nimport { Add, FitScreen, Remove } from '@mui/icons-material'\nimport { Box, IconButton } from '@mui/material'\nimport { useReactFlow, useStore } from '@xyflow/react'\nimport { memo } from 'react'\nimport { shallow } from 'zustand/shallow'\n\nconst selector = (s: ReactFlowState) => ({\n isInteractive: s.nodesDraggable || s.nodesConnectable || s.elementsSelectable,\n maxZoomReached: s.transform[2] >= s.maxZoom,\n minZoomReached: s.transform[2] <= s.minZoom,\n})\n\nexport const Controls: FC = memo(() => {\n const { maxZoomReached, minZoomReached } = useStore(selector, shallow)\n const { fitView, zoomIn, zoomOut } = useReactFlow()\n\n const onZoomInHandler = () => {\n void zoomIn()\n }\n\n const onZoomOutHandler = () => {\n void zoomOut()\n }\n\n const onFitViewHandler = () => {\n void fitView()\n }\n\n return (\n <Box\n sx={{\n bottom: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n left: 0,\n m: 2,\n position: 'absolute',\n zIndex: 5,\n }}\n >\n <IconButton\n className=\"react-flow__controls-zoomin\"\n disabled={maxZoomReached}\n onClick={onZoomInHandler}\n size=\"small\"\n >\n <Add />\n </IconButton>\n <IconButton\n className=\"react-flow__controls-zoomout\"\n disabled={minZoomReached}\n onClick={onZoomOutHandler}\n size=\"small\"\n >\n <Remove />\n </IconButton>\n\n <IconButton\n className=\"react-flow__controls-fitview\"\n onClick={onFitViewHandler}\n size=\"small\"\n >\n <FitScreen />\n </IconButton>\n </Box>\n )\n})\n","function shallow$1(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size) return false;\n for (const [key, value] of objA) {\n if (!Object.is(value, objB.get(key))) {\n return false;\n }\n }\n return true;\n }\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size) return false;\n for (const value of objA) {\n if (!objB.has(value)) {\n return false;\n }\n }\n return true;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (const keyA of keysA) {\n if (!Object.prototype.hasOwnProperty.call(objB, keyA) || !Object.is(objA[keyA], objB[keyA])) {\n return false;\n }\n }\n return true;\n}\n\nvar shallow = (objA, objB) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { shallow } from 'zustand/shallow'`.\"\n );\n }\n return shallow$1(objA, objB);\n};\n\nexport { shallow as default, shallow$1 as shallow };\n","type RoutesMap = Record<string, string>\n\nexport const routes = {\n APP_INSPECTOR_SPANS_LIST: 'spans',\n} as const satisfies RoutesMap\n","import type { FC, PropsWithChildren, ReactNode } from 'react'\nimport { createContext, useContext } from 'react'\nimport { useCallback, useMemo } from 'react'\n\nimport { createApiClientMock } from './api/client-mock.ts'\nimport { createApiClient } from './api/client.ts'\nimport { ApiProvider } from './api/use-api.tsx'\n\ninterface AppInspectorContextValue {\n /**\n * A component that renders a link.\n */\n linkComponent: FC<{ children: ReactNode, to: string }>\n\n /**\n * The endpoint to LocalStack.\n */\n localstackEndpoint: string\n\n /**\n * A function that resolves a link URL.\n */\n resolveLink: (options: ResolveLinkOptions) => string\n}\n\ntype ResolveLinkOptions\n = | {\n to: 'settings'\n }\n | {\n to: 'spans-list'\n }\n | {\n to: 'trace-graph'\n traceId: string\n }\n\nconst AppInspectorContext = createContext<AppInspectorContextValue | undefined>(undefined)\n\nexport const useAppInspector = () => {\n const context = useContext(AppInspectorContext)\n if (!context) {\n throw new Error('@localstack-studio/ui: components must be used within a <AppInspectorContextProvider>')\n }\n return context\n}\n\ninterface AppInspectorContextProviderProps {\n /**\n * A component that renders a link.\n */\n linkComponent: FC<{ children: ReactNode, to: string }>\n\n /**\n * The endpoint to LocalStack.\n */\n localstackEndpoint: string\n\n /**\n * The prefix for the event studio routes.\n */\n routePrefix: string\n}\n\nexport const AppInspectorContextProvider = (props: PropsWithChildren<AppInspectorContextProviderProps>) => {\n const api = useMemo(() => {\n return import.meta.env.VITE_LOCALSTACK_API_MOCK === 'true'\n ? createApiClientMock()\n : createApiClient({ localstackEndpoint: props.localstackEndpoint })\n }, [props.localstackEndpoint])\n\n const resolveLink = useCallback(\n (options: ResolveLinkOptions) => {\n if (options.to === 'settings') {\n return `${props.routePrefix}/settings`\n }\n if (options.to === 'trace-graph') {\n return `${props.routePrefix}/traces/${options.traceId}`\n }\n return `${props.routePrefix}/spans`\n },\n [props.routePrefix],\n )\n\n const contextValue = useMemo(\n () => ({\n linkComponent: props.linkComponent,\n localstackEndpoint: props.localstackEndpoint,\n resolveLink,\n }),\n [props.linkComponent, props.localstackEndpoint, resolveLink],\n )\n\n return (\n <ApiProvider api={api}>\n <AppInspectorContext.Provider value={contextValue}>\n {props.children}\n </AppInspectorContext.Provider>\n </ApiProvider>\n )\n}\n","/**\n * Error message constants for consistent error handling\n */\n\nexport const ERROR_MESSAGES = {\n APP_INSPECTOR_DISABLED: 'App Inspector is currently disabled.',\n APP_INSPECTOR_NOT_FOUND: 'App Inspector extension not found. Please ensure App Inspector is licensed and enabled.',\n CONNECTION_FAILED: 'Failed to connect to LocalStack. Please ensure LocalStack is running and accessible.',\n} as const\n","import { unixNanoToDate } from '@/utils/time.ts'\nimport type { DeleteSpansResponse, EventsRequest, EventsResponse, ExtendedSpansResponse, SpansRequest, SpansResponse, StatusResponse } from '../types/api'\nimport type { Api } from './api.ts'\n\nimport { API_ENDPOINTS, getAppInspectorApiUrl } from '../config.ts'\nimport { ERROR_MESSAGES } from '../constants/error-messages.ts'\nimport { createScopedLogger } from '../utils/logger.ts'\nimport { AppInspectorNotFoundError, ConnectionError } from './errors.ts'\n\nconst apiLogger = createScopedLogger('API')\n\nconst makeRequest = async <T>(options: {\n endpoint: string\n localstackEndpoint: string\n request?: RequestInit\n}): Promise<T> => {\n const url = getAppInspectorApiUrl(options.localstackEndpoint, options.endpoint)\n\n try {\n apiLogger.info('Making request to:', { options, url })\n\n const headers = new Headers(options.request?.headers)\n headers.set('Content-Type', 'application/json')\n\n const response = await fetch(url, {\n ...options.request,\n headers,\n })\n\n if (!response.ok) {\n if (response.status === 404) {\n // All endpoints in this app are AppInspector endpoints\n // 404 means extension is not licensed or not enabled\n throw new AppInspectorNotFoundError(\n ERROR_MESSAGES.APP_INSPECTOR_NOT_FOUND,\n new Error(`404 from ${url}: ${response.statusText}`),\n )\n }\n throw new Error(`API request failed: ${response.status.toString()} ${response.statusText}`)\n }\n\n return (await response.json()) as T\n }\n catch (error: unknown) {\n // Global error handling for all endpoints\n if (error instanceof TypeError) {\n // Network/connection errors - TypeErrors from fetch indicate network failures\n const message = error.message.toLowerCase()\n const isNetworkError = message.includes('fetch')\n || message.includes('network')\n || message.includes('failed to fetch')\n\n if (isNetworkError) {\n throw new ConnectionError(ERROR_MESSAGES.CONNECTION_FAILED, error)\n }\n }\n if (error instanceof Error) {\n throw error\n }\n throw new Error('Unknown error occurred')\n }\n}\n\nconst buildSpansEndpoint = (request?: SpansRequest): string => {\n if (!request) {\n return API_ENDPOINTS.SPANS\n }\n\n const queryParameters = new URLSearchParams()\n\n // Add pagination parameters\n if (request.limit !== undefined) {\n queryParameters.set('limit', request.limit.toString())\n }\n if (request.pagination_token) {\n queryParameters.set('pagination_token', request.pagination_token)\n }\n\n // Add filter parameters (only if they have values)\n for (const [key, value] of Object.entries(request)) {\n if (value !== undefined && key !== 'limit' && key !== 'pagination_token' && value !== null) {\n queryParameters.set(key, String(value))\n }\n }\n\n const queryString = queryParameters.toString()\n return queryString ? `${API_ENDPOINTS.SPANS}?${queryString}` : API_ENDPOINTS.SPANS\n}\n\nconst buildEventsEndpoint = (request?: EventsRequest): string => {\n if (!request) {\n return API_ENDPOINTS.EVENTS\n }\n\n // Always use wildcard path for events endpoints\n const basePath = API_ENDPOINTS.EVENTS\n\n const queryParameters = new URLSearchParams()\n\n // Add pagination parameters\n if (request.limit !== undefined) {\n queryParameters.set('limit', request.limit.toString())\n }\n if (request.pagination_token) {\n queryParameters.set('pagination_token', request.pagination_token)\n }\n\n // Add filter parameters (all filters go in query string)\n for (const [key, value] of Object.entries(request)) {\n if (\n value !== undefined\n && key !== 'limit'\n && key !== 'pagination_token'\n && value !== null\n ) {\n queryParameters.set(key, String(value))\n }\n }\n\n const queryString = queryParameters.toString()\n return queryString ? `${basePath}?${queryString}` : basePath\n}\n\nexport interface ApiClientOptions {\n localstackEndpoint: string\n}\n\nexport const createApiClient = ({ localstackEndpoint }: ApiClientOptions): Api => {\n return {\n deleteSpans: async (_request): Promise<DeleteSpansResponse> => {\n return makeRequest<DeleteSpansResponse>({\n endpoint: API_ENDPOINTS.SPANS,\n localstackEndpoint,\n request: {\n method: 'DELETE',\n },\n })\n },\n getEvents: async (request): Promise<EventsResponse> => {\n const endpoint = buildEventsEndpoint(request)\n return makeRequest<EventsResponse>({ endpoint, localstackEndpoint })\n },\n getIamEvents: async (request): Promise<EventsResponse> => {\n const iamEventsRequest: EventsRequest = {\n ...request,\n event_type: 'iam.policy_evaluation',\n }\n const endpoint = buildEventsEndpoint(iamEventsRequest)\n return makeRequest<EventsResponse>({ endpoint, localstackEndpoint })\n },\n getSpans: async (request): Promise<ExtendedSpansResponse> => {\n const endpoint = buildSpansEndpoint(request)\n const response = await makeRequest<SpansResponse>({ endpoint, localstackEndpoint })\n return {\n ...response,\n spans: response.spans.map(span => ({\n ...span,\n endTime: unixNanoToDate(span.end_time_unix_nano),\n startTime: unixNanoToDate(span.start_time_unix_nano),\n })),\n }\n },\n getStatus: async () => {\n return makeRequest<StatusResponse>({\n endpoint: API_ENDPOINTS.STATUS,\n localstackEndpoint,\n })\n },\n }\n}\n"],"mappings":"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","names":["import_material","import_react","import_material","import_material","import_react","import_react","import_jsx_runtime","import_material","import_react","import_react","import_react","import_react","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_material","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_icons_material","import_material","import_jsx_runtime","import_react","import_react","import_icons_material","import_material","import_react","import_material","import_react","headline","import_icons_material","import_material","import_jsx_runtime","import_material","import_icons_material","import_material","import_react","import_icons_material","import_material","import_jsx_runtime","import_icons_material","import_material","import_jsx_runtime","ErrorIcon","import_icons_material","import_material","import_react","import_jsx_runtime","parsedIAM","import_jsx_runtime","DetailRow","import_icons_material","import_material","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","attributes","import_material","import_react","import_material","import_react","import_icons_material","import_material","import_react","import_jsx_runtime","ErrorIcon","import_jsx_runtime","import_react","dagre","import_icons_material","import_material","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","spanId","import_jsx_runtime","import_react","import_jsx_runtime"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/pages/spans-list-page.tsx","../src/api/use-api.tsx","../src/components/spans-list/spans-list.tsx","../src/components/spans-list/spans-data-grid.tsx","../node_modules/@tanstack/table-core/src/columnHelper.ts","../node_modules/@tanstack/table-core/src/utils.ts","../node_modules/@tanstack/table-core/src/core/cell.ts","../node_modules/@tanstack/table-core/src/core/column.ts","../node_modules/@tanstack/table-core/src/core/headers.ts","../node_modules/@tanstack/table-core/src/core/row.ts","../node_modules/@tanstack/table-core/src/features/ColumnFaceting.ts","../node_modules/@tanstack/table-core/src/filterFns.ts","../node_modules/@tanstack/table-core/src/features/ColumnFiltering.ts","../node_modules/@tanstack/table-core/src/aggregationFns.ts","../node_modules/@tanstack/table-core/src/features/ColumnGrouping.ts","../node_modules/@tanstack/table-core/src/features/ColumnOrdering.ts","../node_modules/@tanstack/table-core/src/features/ColumnPinning.ts","../node_modules/@tanstack/table-core/src/utils/document.ts","../node_modules/@tanstack/table-core/src/features/ColumnSizing.ts","../node_modules/@tanstack/table-core/src/features/ColumnVisibility.ts","../node_modules/@tanstack/table-core/src/features/GlobalFaceting.ts","../node_modules/@tanstack/table-core/src/features/GlobalFiltering.ts","../node_modules/@tanstack/table-core/src/features/RowExpanding.ts","../node_modules/@tanstack/table-core/src/features/RowPagination.ts","../node_modules/@tanstack/table-core/src/features/RowPinning.ts","../node_modules/@tanstack/table-core/src/features/RowSelection.ts","../node_modules/@tanstack/table-core/src/sortingFns.ts","../node_modules/@tanstack/table-core/src/features/RowSorting.ts","../node_modules/@tanstack/table-core/src/core/table.ts","../node_modules/@tanstack/table-core/src/utils/getCoreRowModel.ts","../node_modules/@tanstack/table-core/src/utils/getExpandedRowModel.ts","../node_modules/@tanstack/table-core/src/utils/getFacetedMinMaxValues.ts","../node_modules/@tanstack/table-core/src/utils/filterRowsUtils.ts","../node_modules/@tanstack/table-core/src/utils/getFacetedRowModel.ts","../node_modules/@tanstack/table-core/src/utils/getFacetedUniqueValues.ts","../node_modules/@tanstack/table-core/src/utils/getFilteredRowModel.ts","../node_modules/@tanstack/table-core/src/utils/getGroupedRowModel.ts","../node_modules/@tanstack/table-core/src/utils/getPaginationRowModel.ts","../node_modules/@tanstack/table-core/src/utils/getSortedRowModel.ts","../node_modules/@tanstack/react-table/src/index.tsx","../src/components/cells/responsive-timestamp-cell.tsx","../src/components/cells/service-cell.tsx","../src/components/aws-service-icon/aws-service-icon.tsx","../src/utils/wrap-in-component.tsx","../src/components/aws-service-icon/icons/index.tsx","../src/types/service-names.ts","../src/components/aws-service-icon/icons/account.svg","../src/components/aws-service-icon/icons/acm-pca.svg","../src/components/aws-service-icon/icons/acm.svg","../src/components/aws-service-icon/icons/amplify.svg","../src/components/aws-service-icon/icons/apigateway.svg","../src/components/aws-service-icon/icons/apigatewaymanagementapi.svg","../src/components/aws-service-icon/icons/apigatewayv2.svg","../src/components/aws-service-icon/icons/appconfig.svg","../src/components/aws-service-icon/icons/application-autoscaling.svg","../src/components/aws-service-icon/icons/appsync.svg","../src/components/aws-service-icon/icons/athena.svg","../src/components/aws-service-icon/icons/autoscaling.svg","../src/components/aws-service-icon/icons/backup.svg","../src/components/aws-service-icon/icons/batch.svg","../src/components/aws-service-icon/icons/bedrock.svg","../src/components/aws-service-icon/icons/ce.svg","../src/components/aws-service-icon/icons/cloudcontrol.svg","../src/components/aws-service-icon/icons/cloudformation.svg","../src/components/aws-service-icon/icons/cloudfront.svg","../src/components/aws-service-icon/icons/cloudtrail.svg","../src/components/aws-service-icon/icons/cloudwatch.svg","../src/components/aws-service-icon/icons/codeartifact.svg","../src/components/aws-service-icon/icons/codebuild.svg","../src/components/aws-service-icon/icons/codecommit.svg","../src/components/aws-service-icon/icons/codeconnections.svg","../src/components/aws-service-icon/icons/codedeploy.svg","../src/components/aws-service-icon/icons/codepipeline.svg","../src/components/aws-service-icon/icons/codestar-connections.svg","../src/components/aws-service-icon/icons/cognito-identity.svg","../src/components/aws-service-icon/icons/cognito-idp.svg","../src/components/aws-service-icon/icons/config.svg","../src/components/aws-service-icon/icons/dms.svg","../src/components/aws-service-icon/icons/docdb.svg","../src/components/aws-service-icon/icons/dynamodb.svg","../src/components/aws-service-icon/icons/dynamodbstreams.svg","../src/components/aws-service-icon/icons/ec2.svg","../src/components/aws-service-icon/icons/ecr.svg","../src/components/aws-service-icon/icons/ecs.svg","../src/components/aws-service-icon/icons/efs.svg","../src/components/aws-service-icon/icons/eks.svg","../src/components/aws-service-icon/icons/elasticache.svg","../src/components/aws-service-icon/icons/elasticbeanstalk.svg","../src/components/aws-service-icon/icons/elasticsearch.svg","../src/components/aws-service-icon/icons/elastictranscoder.svg","../src/components/aws-service-icon/icons/elb.svg","../src/components/aws-service-icon/icons/elbv2.svg","../src/components/aws-service-icon/icons/emr-serverless.svg","../src/components/aws-service-icon/icons/emr.svg","../src/components/aws-service-icon/icons/events.svg","../src/components/aws-service-icon/icons/firehose.svg","../src/components/aws-service-icon/icons/fis.svg","../src/components/aws-service-icon/icons/glacier.svg","../src/components/aws-service-icon/icons/glue.svg","../src/components/aws-service-icon/icons/iam.svg","../src/components/aws-service-icon/icons/identitystore.svg","../src/components/aws-service-icon/icons/infrastructure.svg","../src/components/aws-service-icon/icons/iot-data.svg","../src/components/aws-service-icon/icons/iot.svg","../src/components/aws-service-icon/icons/iotanalytics.svg","../src/components/aws-service-icon/icons/iotwireless.svg","../src/components/aws-service-icon/icons/kafka.svg","../src/components/aws-service-icon/icons/kinesis.svg","../src/components/aws-service-icon/icons/kinesisanalytics.svg","../src/components/aws-service-icon/icons/kinesisanalyticsv2.svg","../src/components/aws-service-icon/icons/kms.svg","../src/components/aws-service-icon/icons/lakeformation.svg","../src/components/aws-service-icon/icons/lambda.svg","../src/components/aws-service-icon/icons/logs.svg","../src/components/aws-service-icon/icons/managedblockchain.svg","../src/components/aws-service-icon/icons/mediaconvert.svg","../src/components/aws-service-icon/icons/mediastore-data.svg","../src/components/aws-service-icon/icons/mediastore.svg","../src/components/aws-service-icon/icons/memorydb.svg","../src/components/aws-service-icon/icons/mq.svg","../src/components/aws-service-icon/icons/mwaa.svg","../src/components/aws-service-icon/icons/neptune.svg","../src/components/aws-service-icon/icons/opensearch.svg","../src/components/aws-service-icon/icons/organizations.svg","../src/components/aws-service-icon/icons/pinpoint.svg","../src/components/aws-service-icon/icons/pipes.svg","../src/components/aws-service-icon/icons/qldb-session.svg","../src/components/aws-service-icon/icons/qldb.svg","../src/components/aws-service-icon/icons/ram.svg","../src/components/aws-service-icon/icons/rds-data.svg","../src/components/aws-service-icon/icons/rds.svg","../src/components/aws-service-icon/icons/redshift-data.svg","../src/components/aws-service-icon/icons/redshift.svg","../src/components/aws-service-icon/icons/resource-groups.svg","../src/components/aws-service-icon/icons/resourcegroupstaggingapi.svg","../src/components/aws-service-icon/icons/route53.svg","../src/components/aws-service-icon/icons/route53resolver.svg","../src/components/aws-service-icon/icons/s3.svg","../src/components/aws-service-icon/icons/s3control.svg","../src/components/aws-service-icon/icons/sagemaker-runtime.svg","../src/components/aws-service-icon/icons/sagemaker.svg","../src/components/aws-service-icon/icons/scheduler.svg","../src/components/aws-service-icon/icons/secretsmanager.svg","../src/components/aws-service-icon/icons/serverlessrepo.svg","../src/components/aws-service-icon/icons/servicediscovery.svg","../src/components/aws-service-icon/icons/ses.svg","../src/components/aws-service-icon/icons/sesv2.svg","../src/components/aws-service-icon/icons/shield.svg","../src/components/aws-service-icon/icons/sns.svg","../src/components/aws-service-icon/icons/sqs.svg","../src/components/aws-service-icon/icons/ssm.svg","../src/components/aws-service-icon/icons/sso-admin.svg","../src/components/aws-service-icon/icons/stepfunctions.svg","../src/components/aws-service-icon/icons/sts.svg","../src/components/aws-service-icon/icons/support.svg","../src/components/aws-service-icon/icons/swf.svg","../src/components/aws-service-icon/icons/textract.svg","../src/components/aws-service-icon/icons/timestream-query.svg","../src/components/aws-service-icon/icons/timestream-write.svg","../src/components/aws-service-icon/icons/transcribe.svg","../src/components/aws-service-icon/icons/transfer.svg","../src/components/aws-service-icon/icons/verifiedpermissions.svg","../src/components/aws-service-icon/icons/wafv2.svg","../src/components/aws-service-icon/icons/xray.svg","../src/components/cells/pill-cell.tsx","../src/components/status-message/status-message.tsx","../src/api/errors.ts","../src/config.ts","../src/hooks/use-local-storage.tsx","../src/hooks/use-status.tsx","../src/pages/trace-graph-page.tsx","../src/components/event-details/event-details.tsx","../src/utils/iam-utils.ts","../src/utils/event-utils.ts","../src/utils/time.ts","../src/components/event-details/event-details-header.tsx","../src/components/event-details/event-section.tsx","../src/components/event-details/event-detail.tsx","../src/components/status-icon.tsx","../src/components/event-details/iam-event-detail.tsx","../src/components/event-details/iam-permission-detail.tsx","../src/components/event-details/toggle-section.tsx","../src/components/trace-graph/trace-graph.tsx","../src/components/trace-graph/service-node.tsx","../src/components/trace-graph/problem-indicator.tsx","../src/components/trace-graph/utils.ts","../src/components/trace-graph/xyflow/controls.tsx","../node_modules/zustand/esm/shallow.mjs","../src/routes.ts","../src/context.tsx","../src/constants/error-messages.ts","../src/utils/logger.ts","../src/api/client.ts"],"sourcesContent":["import type { FC } from 'react'\n\nimport { SpansListPage } from './pages/spans-list-page.tsx'\nimport { routes } from './routes.ts'\n\nexport { AppInspectorContextProvider } from './context.tsx'\n\nexport type PagesMap = Record<keyof typeof routes, readonly [string, FC]>\n\nexport const pages = {\n APP_INSPECTOR_SPANS_LIST: [routes.APP_INSPECTOR_SPANS_LIST, SpansListPage],\n} as const satisfies PagesMap\n","import type { FC } from 'react'\nimport { Box } from '@mui/material'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { ExtendedSpan, SpansRequest } from '@/types/api.ts'\nimport type { Span } from '@/types/spans.ts'\nimport { useAppInspectorApi } from '@/api/use-api.tsx'\nimport { SpansList } from '@/components/spans-list/spans-list.tsx'\nimport { StatusMessage } from '@/components/status-message/status-message.tsx'\nimport { useLocalStorage } from '@/hooks/use-local-storage.tsx'\nimport { useStatus } from '@/hooks/use-status.tsx'\n\nimport { TraceGraphPage } from './trace-graph-page.tsx'\n\nconst spansPerPageOptions = [25, 50, 100]\n\nexport const SpansListPage: FC = () => {\n const api = useAppInspectorApi()\n const [spans, setSpans] = useState<ExtendedSpan[]>()\n const [loading, setLoading] = useState(false)\n const hasFetched = useRef(false)\n const [includeReadOperations, setIncludeReadOperations] = useLocalStorage('includeReadOperations', false)\n\n const mapPageToNextCursor = useRef<Record<number, string>>({})\n\n const [page, setPage] = useState(0)\n const [pageSize, setPageSize] = useState(100)\n const [spanCount, setSpanCount] = useState(0)\n const queryOptions = useMemo<SpansRequest>(() => {\n return {\n is_write_operation: includeReadOperations ? undefined : true,\n limit: pageSize,\n pagination_token: mapPageToNextCursor.current[page - 1],\n }\n }, [includeReadOperations, pageSize, page])\n\n const [fetchError, setFetchError] = useState<Error>()\n const { checkStatus, error: statusError, status } = useStatus()\n const fetchSpans = useCallback(async () => {\n setLoading(true)\n try {\n const response = await api.getSpans(queryOptions)\n setSpans(response.spans)\n setSpanCount(response.pagination.total_count)\n setFetchError(undefined)\n if (response.pagination.cursor) {\n mapPageToNextCursor.current[page] = response.pagination.cursor\n }\n }\n catch (error) {\n console.error(error)\n setFetchError(error instanceof Error ? error : new Error('Unknown error', { cause: error }))\n }\n finally {\n setLoading(false)\n }\n }, [api, page, queryOptions])\n\n const fetchSpansSync = useCallback(() => {\n void fetchSpans()\n }, [fetchSpans])\n\n useEffect(() => {\n if (hasFetched.current) return\n // Only fetch spans if status is ENABLED (avoid redundant API calls when disabled)\n if (status?.status !== 'ENABLED') return\n\n hasFetched.current = true\n void fetchSpans()\n }, [fetchSpans, status])\n\n // Re-fetch when filter changes\n useEffect(() => {\n if (!hasFetched.current) return\n void fetchSpans()\n }, [fetchSpans])\n\n const [selectedTraceId, setSelectedTraceId] = useState<string>()\n const [selectedSpanId, setSelectedSpanId] = useState<string>()\n const navigateToSpan = useCallback((span: Span) => {\n setSelectedTraceId(span.trace_id)\n setSelectedSpanId(span.span_id)\n }, [])\n\n const clearSpans = useCallback(async () => {\n setLoading(true)\n try {\n await api.deleteSpans()\n setSpans([])\n setFetchError(undefined)\n // Refresh the list after deletion\n await fetchSpans()\n }\n catch (error) {\n console.error('Failed to delete spans:', error)\n setFetchError(error instanceof Error ? error : new Error('Failed to delete spans', { cause: error }))\n }\n finally {\n setLoading(false)\n }\n }, [api, fetchSpans])\n\n const handleRetry = useCallback(() => {\n // Check status first, then fetch spans only if no error\n void checkStatus()\n // Fetch will happen automatically via useEffect when status changes to ENABLED\n }, [checkStatus])\n\n // Show helpful message if connection failed or AppInspector is disabled\n const shouldShowStatusMessage = Boolean(statusError) || (status?.status === 'DISABLED')\n\n return (\n <>\n <Box\n data-testid=\"spans-list-page\"\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n // Do not consume vertical space if trace graph is open\n flexGrow: selectedTraceId ? 0 : 1,\n height: selectedTraceId ? 0 : undefined,\n // Do not show if trace graph is open\n visibility: selectedTraceId ? 'hidden' : 'visible',\n width: '100%',\n }}\n >\n {shouldShowStatusMessage\n ? (\n <StatusMessage\n error={statusError}\n onRetry={handleRetry}\n status={status}\n />\n )\n : (\n <SpansList\n includeReadOperations={includeReadOperations}\n onClearSpans={() => { void clearSpans() }}\n onIncludeReadOperationsChange={(value) => { setIncludeReadOperations(value) }}\n onPageChange={setPage}\n onPageSizeChange={setPageSize}\n onRefresh={() => { fetchSpansSync() }}\n onSpanClick={(span) => { navigateToSpan(span) }}\n page={page}\n pageSize={pageSize}\n spanCount={spanCount}\n spans={{\n data: spans,\n error: fetchError,\n loading,\n }}\n spansPerPageOptions={spansPerPageOptions}\n />\n )}\n </Box>\n\n {selectedTraceId !== undefined && (\n <TraceGraphPage onClose={() => { setSelectedTraceId(undefined) }} spanId={selectedSpanId} traceId={selectedTraceId} />\n )}\n </>\n )\n}\n","import type { FC, PropsWithChildren } from 'react'\nimport { createContext, useContext } from 'react'\n\nimport type { Api } from './api.ts'\n\nconst AppInspectorApiContext = createContext<Api | undefined>(undefined)\n\nexport interface ApiProviderProps {\n api: Api\n}\n\nexport const ApiProvider: FC<PropsWithChildren<ApiProviderProps>> = (props) => {\n return <AppInspectorApiContext.Provider value={props.api}>{props.children}</AppInspectorApiContext.Provider>\n}\n\nexport const useAppInspectorApi = (): Api => {\n const api = useContext(AppInspectorApiContext)\n if (!api) {\n throw new Error('useAppInspectorApi must be used within AppInspectorApiProvider')\n }\n return api\n}\n","import type { FC } from 'react'\nimport { Alert, Box, Button } from '@mui/material'\n\nimport type { ExtendedSpan } from '@/types/api.ts'\nimport { SpansDataGrid } from '@/components/spans-list/spans-data-grid.tsx'\n\ninterface SpansListProps {\n includeReadOperations: boolean\n onClearSpans: () => void\n onIncludeReadOperationsChange: (value: boolean) => void\n onPageChange: (page: number) => void\n onPageSizeChange: (pageSize: number) => void\n onRefresh: () => void\n onSpanClick: (span: ExtendedSpan) => void\n page: number\n pageSize: number\n spanCount: number\n spans: {\n data: ExtendedSpan[] | undefined\n error: Error | undefined\n loading: boolean\n }\n spansPerPageOptions: number[]\n}\n\nexport const SpansList: FC<SpansListProps> = (props) => {\n return (\n <Box data-testid=\"spans-data-grid\" sx={{ display: 'flex', flexDirection: 'column', flexGrow: 1, gap: 2, width: '100%' }}>\n {props.spans.error && (\n <Alert\n action={\n <Button onClick={props.onRefresh}>Retry</Button>\n }\n severity=\"error\"\n >\n Unexpected error:\n {' '}\n {props.spans.error.message}\n </Alert>\n )}\n {(props.spans.data !== undefined || props.spans.loading) && (\n <SpansDataGrid\n includeReadOperations={props.includeReadOperations}\n loading={props.spans.loading}\n onClearSpans={props.onClearSpans}\n onIncludeReadOperationsChange={props.onIncludeReadOperationsChange}\n onPageChange={props.onPageChange}\n onPageSizeChange={props.onPageSizeChange}\n onRefresh={props.onRefresh}\n onSpanClick={props.onSpanClick}\n page={props.page}\n pageSize={props.pageSize}\n rowCount={props.spanCount}\n rows={props.spans.data ?? []}\n rowsPerPageOptions={props.spansPerPageOptions}\n sortingOption={{ field: 'start_time_unix_nano', sort: 'asc' }}\n />\n )}\n </Box>\n )\n}\n","import type { FC } from 'react'\nimport { Cached, DeleteForeverOutlined } from '@mui/icons-material'\nimport {\n Box,\n Button,\n FormControlLabel,\n Grid,\n Paper,\n Switch,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n Tooltip,\n} from '@mui/material'\nimport { createColumnHelper, flexRender, getCoreRowModel, useReactTable } from '@tanstack/react-table'\n\nimport type { ExtendedSpan } from '@/types/api.ts'\nimport { ResponsiveTimestampCell } from '@/components/cells/responsive-timestamp-cell.tsx'\n\nimport { ServiceCell } from '../cells/service-cell.tsx'\n\ninterface SortingOption {\n field: string\n sort: 'asc' | 'desc'\n}\n\ninterface SpansDataGridProps {\n includeReadOperations?: boolean\n loading: boolean\n onClearSpans: () => void\n onIncludeReadOperationsChange?: (checked: boolean) => void\n onPageChange: (page: number) => void\n onPageSizeChange: (pageSize: number) => void\n onRefresh: () => void\n onSpanClick: (span: ExtendedSpan) => void\n page: number\n pageSize: number\n rowCount: number\n rows: ExtendedSpan[]\n rowsPerPageOptions: number[]\n sortingOption?: SortingOption\n}\n\nconst columnHelper = createColumnHelper<ExtendedSpan>()\n\nconst columns = [\n columnHelper.accessor('trace_id', {\n cell: props => (\n <Box sx={{ maxWidth: '120px', overflow: 'hidden', textOverflow: 'ellipsis' }}>\n <Tooltip arrow title={props.getValue()}>\n <span>\n {props.getValue()}\n </span>\n </Tooltip>\n </Box>\n ),\n header: 'Trace',\n id: 'traceId',\n }),\n columnHelper.accessor('startTime', {\n cell: props => (\n <ResponsiveTimestampCell date={props.getValue()} />\n ),\n header: 'Time',\n id: 'startTime',\n size: 180,\n }),\n columnHelper.display({\n cell: (props) => {\n if (!props.row.original.parent_service_name || !props.row.original.parent_resource_name) {\n return <></>\n }\n return (\n <ServiceCell resource={props.row.original.parent_resource_name} service={props.row.original.parent_service_name} />\n )\n },\n header: 'Producer',\n id: 'producer',\n size: 180,\n }),\n columnHelper.accessor('operation_name', {\n header: 'Action',\n id: 'operationName',\n size: 180,\n }),\n columnHelper.display({\n cell: (props) => {\n return (\n <ServiceCell resource={props.row.original.resource_name} service={props.row.original.service_name} />\n )\n },\n header: 'Consumer',\n id: 'consumer',\n size: 260,\n }),\n]\n\nexport const SpansDataGrid: FC<SpansDataGridProps> = ({\n includeReadOperations = false,\n loading,\n onClearSpans,\n onIncludeReadOperationsChange,\n onRefresh,\n onSpanClick,\n rows,\n}) => {\n const table = useReactTable({\n columns,\n data: rows,\n getCoreRowModel: getCoreRowModel(),\n })\n\n return (\n <>\n <Grid item xs={12}>\n <Box sx={{ alignItems: 'center', display: 'flex', gap: '0.5rem' }}>\n <Box sx={{ flexGrow: 1 }} />\n\n <FormControlLabel\n control={(\n <Switch\n checked={includeReadOperations}\n onChange={(event) => { onIncludeReadOperationsChange?.(event.target.checked) }}\n size=\"small\"\n />\n )}\n label=\"Include Read Operations\"\n />\n\n <Button onClick={onClearSpans} startIcon={<DeleteForeverOutlined />}>\n Clear Spans\n </Button>\n <Button disabled={loading} onClick={onRefresh} startIcon={<Cached />}>\n Refresh\n </Button>\n </Box>\n </Grid>\n <div style={{ display: 'flex', flexDirection: 'column', flexGrow: 1 }}>\n <Paper\n sx={{\n boxShadow: 2,\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n minHeight: 120,\n p: 2,\n }}\n >\n <TableContainer component={Paper}>\n <Table>\n <TableHead>\n {table.getHeaderGroups().map((headerGroup) => {\n return (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map(header => (\n <TableCell\n colSpan={header.colSpan}\n key={header.id}\n style={{\n maxWidth: `${header.getSize().toString()}px`,\n minWidth: `${header.getSize().toString()}px`,\n width: `${header.getSize().toString()}px`,\n }}\n >\n {flexRender(header.column.columnDef.header, header.getContext())}\n </TableCell>\n ))}\n </TableRow>\n )\n })}\n </TableHead>\n <TableBody>\n {table.getRowModel().rows.map(row => (\n <TableRow key={row.id}>\n {row.getVisibleCells().map((cell) => {\n return (\n <TableCell\n key={cell.id}\n onClick={() => { onSpanClick(row.original) }}\n style={{\n maxWidth: `${cell.column.getSize().toString()}px`,\n minWidth: `${cell.column.getSize().toString()}px`,\n width: `${cell.column.getSize().toString()}px`,\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n )\n })}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n </Paper>\n </div>\n </>\n )\n}\n","import {\n AccessorFn,\n AccessorFnColumnDef,\n AccessorKeyColumnDef,\n DisplayColumnDef,\n GroupColumnDef,\n IdentifiedColumnDef,\n RowData,\n} from './types'\nimport { DeepKeys, DeepValue } from './utils'\n\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nexport type ColumnHelper<TData extends RowData> = {\n accessor: <\n TAccessor extends AccessorFn<TData> | DeepKeys<TData>,\n TValue extends TAccessor extends AccessorFn<TData, infer TReturn>\n ? TReturn\n : TAccessor extends DeepKeys<TData>\n ? DeepValue<TData, TAccessor>\n : never,\n >(\n accessor: TAccessor,\n column: TAccessor extends AccessorFn<TData>\n ? DisplayColumnDef<TData, TValue>\n : IdentifiedColumnDef<TData, TValue>\n ) => TAccessor extends AccessorFn<TData>\n ? AccessorFnColumnDef<TData, TValue>\n : AccessorKeyColumnDef<TData, TValue>\n display: (column: DisplayColumnDef<TData>) => DisplayColumnDef<TData, unknown>\n group: (column: GroupColumnDef<TData>) => GroupColumnDef<TData, unknown>\n}\n\nexport function createColumnHelper<\n TData extends RowData,\n>(): ColumnHelper<TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function'\n ? ({\n ...column,\n accessorFn: accessor,\n } as any)\n : {\n ...column,\n accessorKey: accessor,\n }\n },\n display: column => column,\n group: column => column,\n }\n}\n","import { TableOptionsResolved, TableState, Updater } from './types'\n\nexport type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\nexport type RequiredKeys<T, K extends keyof T> = Omit<T, K> &\n Required<Pick<T, K>>\nexport type Overwrite<T, U extends { [TKey in keyof T]?: any }> = Omit<\n T,\n keyof U\n> &\n U\n\nexport type UnionToIntersection<T> = (\n T extends any ? (x: T) => any : never\n) extends (x: infer R) => any\n ? R\n : never\n\nexport type IsAny<T, Y, N> = 1 extends 0 & T ? Y : N\nexport type IsKnown<T, Y, N> = unknown extends T ? N : Y\n\ntype ComputeRange<\n N extends number,\n Result extends Array<unknown> = [],\n> = Result['length'] extends N\n ? Result\n : ComputeRange<N, [...Result, Result['length']]>\ntype Index40 = ComputeRange<40>[number]\n\n// Is this type a tuple?\ntype IsTuple<T> = T extends readonly any[] & { length: infer Length }\n ? Length extends Index40\n ? T\n : never\n : never\n\n// If this type is a tuple, what indices are allowed?\ntype AllowedIndexes<\n Tuple extends ReadonlyArray<any>,\n Keys extends number = never,\n> = Tuple extends readonly []\n ? Keys\n : Tuple extends readonly [infer _, ...infer Tail]\n ? AllowedIndexes<Tail, Keys | Tail['length']>\n : Keys\n\nexport type DeepKeys<T, TDepth extends any[] = []> = TDepth['length'] extends 5\n ? never\n : unknown extends T\n ? string\n : T extends readonly any[] & IsTuple<T>\n ? AllowedIndexes<T> | DeepKeysPrefix<T, AllowedIndexes<T>, TDepth>\n : T extends any[]\n ? DeepKeys<T[number], [...TDepth, any]>\n : T extends Date\n ? never\n : T extends object\n ? (keyof T & string) | DeepKeysPrefix<T, keyof T, TDepth>\n : never\n\ntype DeepKeysPrefix<\n T,\n TPrefix,\n TDepth extends any[],\n> = TPrefix extends keyof T & (number | string)\n ? `${TPrefix}.${DeepKeys<T[TPrefix], [...TDepth, any]> & string}`\n : never\n\nexport type DeepValue<T, TProp> =\n T extends Record<string | number, any>\n ? TProp extends `${infer TBranch}.${infer TDeepProp}`\n ? DeepValue<T[TBranch], TDeepProp>\n : T[TProp & string]\n : never\n\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport type Getter<TValue> = <TTValue = TValue>() => NoInfer<TTValue>\n\n///\n\nexport function functionalUpdate<T>(updater: Updater<T>, input: T): T {\n return typeof updater === 'function'\n ? (updater as (input: T) => T)(input)\n : updater\n}\n\nexport function noop() {\n //\n}\n\nexport function makeStateUpdater<K extends keyof TableState>(\n key: K,\n instance: unknown\n) {\n return (updater: Updater<TableState[K]>) => {\n ;(instance as any).setState(<TTableState>(old: TTableState) => {\n return {\n ...old,\n [key]: functionalUpdate(updater, (old as any)[key]),\n }\n })\n }\n}\n\ntype AnyFunction = (...args: any) => any\n\nexport function isFunction<T extends AnyFunction>(d: any): d is T {\n return d instanceof Function\n}\n\nexport function isNumberArray(d: any): d is number[] {\n return Array.isArray(d) && d.every(val => typeof val === 'number')\n}\n\nexport function flattenBy<TNode>(\n arr: TNode[],\n getChildren: (item: TNode) => TNode[]\n) {\n const flat: TNode[] = []\n\n const recurse = (subArr: TNode[]) => {\n subArr.forEach(item => {\n flat.push(item)\n const children = getChildren(item)\n if (children?.length) {\n recurse(children)\n }\n })\n }\n\n recurse(arr)\n\n return flat\n}\n\nexport function memo<TDeps extends readonly any[], TDepArgs, TResult>(\n getDeps: (depArgs?: TDepArgs) => [...TDeps],\n fn: (...args: NoInfer<[...TDeps]>) => TResult,\n opts: {\n key: any\n debug?: () => any\n onChange?: (result: TResult) => void\n }\n): (depArgs?: TDepArgs) => TResult {\n let deps: any[] = []\n let result: TResult | undefined\n\n return depArgs => {\n let depTime: number\n if (opts.key && opts.debug) depTime = Date.now()\n\n const newDeps = getDeps(depArgs)\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (!depsChanged) {\n return result!\n }\n\n deps = newDeps\n\n let resultTime: number\n if (opts.key && opts.debug) resultTime = Date.now()\n\n result = fn(...newDeps)\n opts?.onChange?.(result)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100\n const resultEndTime = Math.round((Date.now() - resultTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / 16\n\n const pad = (str: number | string, num: number) => {\n str = String(str)\n while (str.length < num) {\n str = ' ' + str\n }\n return str\n }\n\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts?.key\n )\n }\n }\n\n return result!\n }\n}\n\nexport function getMemoOptions(\n tableOptions: Partial<TableOptionsResolved<any>>,\n debugLevel:\n | 'debugAll'\n | 'debugCells'\n | 'debugTable'\n | 'debugColumns'\n | 'debugRows'\n | 'debugHeaders',\n key: string,\n onChange?: (result: any) => void\n) {\n return {\n debug: () => tableOptions?.debugAll ?? tableOptions[debugLevel],\n key: process.env.NODE_ENV === 'development' && key,\n onChange,\n }\n}\n","import { RowData, Cell, Column, Row, Table } from '../types'\nimport { Getter, getMemoOptions, memo } from '../utils'\n\nexport interface CellContext<TData extends RowData, TValue> {\n cell: Cell<TData, TValue>\n column: Column<TData, TValue>\n getValue: Getter<TValue>\n renderValue: Getter<TValue | null>\n row: Row<TData>\n table: Table<TData>\n}\n\nexport interface CoreCell<TData extends RowData, TValue> {\n /**\n * The associated Column object for the cell.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#column)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/cells)\n */\n column: Column<TData, TValue>\n /**\n * Returns the rendering context (or props) for cell-based components like cells and aggregated cells. Use these props with your framework's `flexRender` utility to render these using the template of your choice:\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#getcontext)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/cells)\n */\n getContext: () => CellContext<TData, TValue>\n /**\n * Returns the value for the cell, accessed via the associated column's accessor key or accessor function.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#getvalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/cells)\n */\n getValue: CellContext<TData, TValue>['getValue']\n /**\n * The unique ID for the cell across the entire table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#id)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/cells)\n */\n id: string\n /**\n * Renders the value for a cell the same as `getValue`, but will return the `renderFallbackValue` if no value is found.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#rendervalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/cells)\n */\n renderValue: CellContext<TData, TValue>['renderValue']\n /**\n * The associated Row object for the cell.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#row)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/cells)\n */\n row: Row<TData>\n}\n\nexport function createCell<TData extends RowData, TValue>(\n table: Table<TData>,\n row: Row<TData>,\n column: Column<TData, TValue>,\n columnId: string\n): Cell<TData, TValue> {\n const getRenderValue = () =>\n cell.getValue() ?? table.options.renderFallbackValue\n\n const cell: CoreCell<TData, TValue> = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(\n () => [table, column, row, cell],\n (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell as Cell<TData, TValue>,\n getValue: cell.getValue,\n renderValue: cell.renderValue,\n }),\n getMemoOptions(table.options, 'debugCells', 'cell.getContext')\n ),\n }\n\n table._features.forEach(feature => {\n feature.createCell?.(\n cell as Cell<TData, TValue>,\n column,\n row as Row<TData>,\n table\n )\n }, {})\n\n return cell as Cell<TData, TValue>\n}\n","import {\n Column,\n Table,\n AccessorFn,\n ColumnDef,\n RowData,\n ColumnDefResolved,\n} from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nexport interface CoreColumn<TData extends RowData, TValue> {\n /**\n * The resolved accessor function to use when extracting the value for the column from each row. Will only be defined if the column def has a valid accessor key or function defined.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#accessorfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n accessorFn?: AccessorFn<TData, TValue>\n /**\n * The original column def used to create the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#columndef)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n columnDef: ColumnDef<TData, TValue>\n /**\n * The child column (if the column is a group column). Will be an empty array if the column is not a group column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#columns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n columns: Column<TData, TValue>[]\n /**\n * The depth of the column (if grouped) relative to the root column def array.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#depth)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n depth: number\n /**\n * Returns the flattened array of this column and all child/grand-child columns for this column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#getflatcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n getFlatColumns: () => Column<TData, TValue>[]\n /**\n * Returns an array of all leaf-node columns for this column. If a column has no children, it is considered the only leaf-node column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#getleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n getLeafColumns: () => Column<TData, TValue>[]\n /**\n * The resolved unique identifier for the column resolved in this priority:\n - A manual `id` property from the column def\n - The accessor key from the column def\n - The header string from the column def\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#id)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n id: string\n /**\n * The parent column for this column. Will be undefined if this is a root column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#parent)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n parent?: Column<TData, TValue>\n}\n\nexport function createColumn<TData extends RowData, TValue>(\n table: Table<TData>,\n columnDef: ColumnDef<TData, TValue>,\n depth: number,\n parent?: Column<TData, TValue>\n): Column<TData, TValue> {\n const defaultColumn = table._getDefaultColumnDef()\n\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef,\n } as ColumnDefResolved<TData>\n\n const accessorKey = resolvedColumnDef.accessorKey\n\n let id =\n resolvedColumnDef.id ??\n (accessorKey\n ? typeof String.prototype.replaceAll === 'function'\n ? accessorKey.replaceAll('.', '_')\n : accessorKey.replace(/\\./g, '_')\n : undefined) ??\n (typeof resolvedColumnDef.header === 'string'\n ? resolvedColumnDef.header\n : undefined)\n\n let accessorFn: AccessorFn<TData> | undefined\n\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = (originalRow: TData) => {\n let result = originalRow as Record<string, any>\n\n for (const key of accessorKey.split('.')) {\n result = result?.[key]\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(\n `\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`\n )\n }\n }\n\n return result\n }\n } else {\n accessorFn = (originalRow: TData) =>\n (originalRow as any)[resolvedColumnDef.accessorKey]\n }\n }\n\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n resolvedColumnDef.accessorFn\n ? `Columns require an id when using an accessorFn`\n : `Columns require an id when using a non-string header`\n )\n }\n throw new Error()\n }\n\n let column: CoreColumn<TData, any> = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent as any,\n depth,\n columnDef: resolvedColumnDef as ColumnDef<TData, any>,\n columns: [],\n getFlatColumns: memo(\n () => [true],\n () => {\n return [\n column as Column<TData, TValue>,\n ...column.columns?.flatMap(d => d.getFlatColumns()),\n ]\n },\n getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')\n ),\n getLeafColumns: memo(\n () => [table._getOrderColumnsFn()],\n orderColumns => {\n if (column.columns?.length) {\n let leafColumns = column.columns.flatMap(column =>\n column.getLeafColumns()\n )\n\n return orderColumns(leafColumns)\n }\n\n return [column as Column<TData, TValue>]\n },\n getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns')\n ),\n }\n\n for (const feature of table._features) {\n feature.createColumn?.(column as Column<TData, TValue>, table)\n }\n\n // Yes, we have to convert table to unknown, because we know more than the compiler here.\n return column as Column<TData, TValue>\n}\n","import {\n RowData,\n Column,\n Header,\n HeaderGroup,\n Table,\n TableFeature,\n} from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nconst debug = 'debugHeaders'\n\nexport interface CoreHeaderGroup<TData extends RowData> {\n depth: number\n headers: Header<TData, unknown>[]\n id: string\n}\n\nexport interface HeaderContext<TData, TValue> {\n /**\n * An instance of a column.\n */\n column: Column<TData, TValue>\n /**\n * An instance of a header.\n */\n header: Header<TData, TValue>\n /**\n * The table instance.\n */\n table: Table<TData>\n}\n\nexport interface CoreHeader<TData extends RowData, TValue> {\n /**\n * The col-span for the header.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#colspan)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n colSpan: number\n /**\n * The header's associated column object.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#column)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n column: Column<TData, TValue>\n /**\n * The depth of the header, zero-indexed based.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#depth)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n depth: number\n /**\n * Returns the rendering context (or props) for column-based components like headers, footers and filters.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#getcontext)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getContext: () => HeaderContext<TData, TValue>\n /**\n * Returns the leaf headers hierarchically nested under this header.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#getleafheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getLeafHeaders: () => Header<TData, unknown>[]\n /**\n * The header's associated header group object.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#headergroup)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n headerGroup: HeaderGroup<TData>\n /**\n * The unique identifier for the header.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#id)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n id: string\n /**\n * The index for the header within the header group.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#index)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n index: number\n /**\n * A boolean denoting if the header is a placeholder header.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#isplaceholder)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n isPlaceholder: boolean\n /**\n * If the header is a placeholder header, this will be a unique header ID that does not conflict with any other headers across the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#placeholderid)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n placeholderId?: string\n /**\n * The row-span for the header.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#rowspan)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n rowSpan: number\n /**\n * The header's hierarchical sub/child headers. Will be empty if the header's associated column is a leaf-column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#subheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n subHeaders: Header<TData, TValue>[]\n}\n\nexport interface HeadersInstance<TData extends RowData> {\n /**\n * Returns all header groups for the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getheadergroups)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getHeaderGroups: () => HeaderGroup<TData>[]\n /**\n * If pinning, returns the header groups for the left pinned columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getleftheadergroups)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getLeftHeaderGroups: () => HeaderGroup<TData>[]\n /**\n * If pinning, returns the header groups for columns that are not pinned.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getcenterheadergroups)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getCenterHeaderGroups: () => HeaderGroup<TData>[]\n /**\n * If pinning, returns the header groups for the right pinned columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getrightheadergroups)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getRightHeaderGroups: () => HeaderGroup<TData>[]\n\n /**\n * Returns the footer groups for the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getfootergroups)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getFooterGroups: () => HeaderGroup<TData>[]\n /**\n * If pinning, returns the footer groups for the left pinned columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getleftfootergroups)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getLeftFooterGroups: () => HeaderGroup<TData>[]\n /**\n * If pinning, returns the footer groups for columns that are not pinned.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getcenterfootergroups)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getCenterFooterGroups: () => HeaderGroup<TData>[]\n /**\n * If pinning, returns the footer groups for the right pinned columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getrightfootergroups)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getRightFooterGroups: () => HeaderGroup<TData>[]\n\n /**\n * Returns headers for all columns in the table, including parent headers.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getflatheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getFlatHeaders: () => Header<TData, unknown>[]\n /**\n * If pinning, returns headers for all left pinned columns in the table, including parent headers.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getleftflatheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getLeftFlatHeaders: () => Header<TData, unknown>[]\n /**\n * If pinning, returns headers for all columns that are not pinned, including parent headers.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getcenterflatheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getCenterFlatHeaders: () => Header<TData, unknown>[]\n /**\n * If pinning, returns headers for all right pinned columns in the table, including parent headers.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getrightflatheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getRightFlatHeaders: () => Header<TData, unknown>[]\n\n /**\n * Returns headers for all leaf columns in the table, (not including parent headers).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getleafheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getLeafHeaders: () => Header<TData, unknown>[]\n /**\n * If pinning, returns headers for all left pinned leaf columns in the table, (not including parent headers).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getleftleafheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getLeftLeafHeaders: () => Header<TData, unknown>[]\n /**\n * If pinning, returns headers for all columns that are not pinned, (not including parent headers).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getcenterleafheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getCenterLeafHeaders: () => Header<TData, unknown>[]\n /**\n * If pinning, returns headers for all right pinned leaf columns in the table, (not including parent headers).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getrightleafheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getRightLeafHeaders: () => Header<TData, unknown>[]\n}\n\n//\n\nfunction createHeader<TData extends RowData, TValue>(\n table: Table<TData>,\n column: Column<TData, TValue>,\n options: {\n id?: string\n isPlaceholder?: boolean\n placeholderId?: string\n index: number\n depth: number\n }\n): Header<TData, TValue> {\n const id = options.id ?? column.id\n\n let header: CoreHeader<TData, TValue> = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null!,\n getLeafHeaders: (): Header<TData, unknown>[] => {\n const leafHeaders: Header<TData, unknown>[] = []\n\n const recurseHeader = (h: CoreHeader<TData, any>) => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader)\n }\n leafHeaders.push(h as Header<TData, unknown>)\n }\n\n recurseHeader(header)\n\n return leafHeaders\n },\n getContext: () => ({\n table,\n header: header as Header<TData, TValue>,\n column,\n }),\n }\n\n table._features.forEach(feature => {\n feature.createHeader?.(header as Header<TData, TValue>, table)\n })\n\n return header as Header<TData, TValue>\n}\n\nexport const Headers: TableFeature = {\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n // Header Groups\n\n table.getHeaderGroups = memo(\n () => [\n table.getAllColumns(),\n table.getVisibleLeafColumns(),\n table.getState().columnPinning.left,\n table.getState().columnPinning.right,\n ],\n (allColumns, leafColumns, left, right) => {\n const leftColumns =\n left\n ?.map(columnId => leafColumns.find(d => d.id === columnId)!)\n .filter(Boolean) ?? []\n\n const rightColumns =\n right\n ?.map(columnId => leafColumns.find(d => d.id === columnId)!)\n .filter(Boolean) ?? []\n\n const centerColumns = leafColumns.filter(\n column => !left?.includes(column.id) && !right?.includes(column.id)\n )\n\n const headerGroups = buildHeaderGroups(\n allColumns,\n [...leftColumns, ...centerColumns, ...rightColumns],\n table\n )\n\n return headerGroups\n },\n getMemoOptions(table.options, debug, 'getHeaderGroups')\n )\n\n table.getCenterHeaderGroups = memo(\n () => [\n table.getAllColumns(),\n table.getVisibleLeafColumns(),\n table.getState().columnPinning.left,\n table.getState().columnPinning.right,\n ],\n (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(\n column => !left?.includes(column.id) && !right?.includes(column.id)\n )\n return buildHeaderGroups(allColumns, leafColumns, table, 'center')\n },\n getMemoOptions(table.options, debug, 'getCenterHeaderGroups')\n )\n\n table.getLeftHeaderGroups = memo(\n () => [\n table.getAllColumns(),\n table.getVisibleLeafColumns(),\n table.getState().columnPinning.left,\n ],\n (allColumns, leafColumns, left) => {\n const orderedLeafColumns =\n left\n ?.map(columnId => leafColumns.find(d => d.id === columnId)!)\n .filter(Boolean) ?? []\n\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left')\n },\n getMemoOptions(table.options, debug, 'getLeftHeaderGroups')\n )\n\n table.getRightHeaderGroups = memo(\n () => [\n table.getAllColumns(),\n table.getVisibleLeafColumns(),\n table.getState().columnPinning.right,\n ],\n (allColumns, leafColumns, right) => {\n const orderedLeafColumns =\n right\n ?.map(columnId => leafColumns.find(d => d.id === columnId)!)\n .filter(Boolean) ?? []\n\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right')\n },\n getMemoOptions(table.options, debug, 'getRightHeaderGroups')\n )\n\n // Footer Groups\n\n table.getFooterGroups = memo(\n () => [table.getHeaderGroups()],\n headerGroups => {\n return [...headerGroups].reverse()\n },\n getMemoOptions(table.options, debug, 'getFooterGroups')\n )\n\n table.getLeftFooterGroups = memo(\n () => [table.getLeftHeaderGroups()],\n headerGroups => {\n return [...headerGroups].reverse()\n },\n getMemoOptions(table.options, debug, 'getLeftFooterGroups')\n )\n\n table.getCenterFooterGroups = memo(\n () => [table.getCenterHeaderGroups()],\n headerGroups => {\n return [...headerGroups].reverse()\n },\n getMemoOptions(table.options, debug, 'getCenterFooterGroups')\n )\n\n table.getRightFooterGroups = memo(\n () => [table.getRightHeaderGroups()],\n headerGroups => {\n return [...headerGroups].reverse()\n },\n getMemoOptions(table.options, debug, 'getRightFooterGroups')\n )\n\n // Flat Headers\n\n table.getFlatHeaders = memo(\n () => [table.getHeaderGroups()],\n headerGroups => {\n return headerGroups\n .map(headerGroup => {\n return headerGroup.headers\n })\n .flat()\n },\n getMemoOptions(table.options, debug, 'getFlatHeaders')\n )\n\n table.getLeftFlatHeaders = memo(\n () => [table.getLeftHeaderGroups()],\n left => {\n return left\n .map(headerGroup => {\n return headerGroup.headers\n })\n .flat()\n },\n getMemoOptions(table.options, debug, 'getLeftFlatHeaders')\n )\n\n table.getCenterFlatHeaders = memo(\n () => [table.getCenterHeaderGroups()],\n left => {\n return left\n .map(headerGroup => {\n return headerGroup.headers\n })\n .flat()\n },\n getMemoOptions(table.options, debug, 'getCenterFlatHeaders')\n )\n\n table.getRightFlatHeaders = memo(\n () => [table.getRightHeaderGroups()],\n left => {\n return left\n .map(headerGroup => {\n return headerGroup.headers\n })\n .flat()\n },\n getMemoOptions(table.options, debug, 'getRightFlatHeaders')\n )\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(\n () => [table.getCenterFlatHeaders()],\n flatHeaders => {\n return flatHeaders.filter(header => !header.subHeaders?.length)\n },\n getMemoOptions(table.options, debug, 'getCenterLeafHeaders')\n )\n\n table.getLeftLeafHeaders = memo(\n () => [table.getLeftFlatHeaders()],\n flatHeaders => {\n return flatHeaders.filter(header => !header.subHeaders?.length)\n },\n getMemoOptions(table.options, debug, 'getLeftLeafHeaders')\n )\n\n table.getRightLeafHeaders = memo(\n () => [table.getRightFlatHeaders()],\n flatHeaders => {\n return flatHeaders.filter(header => !header.subHeaders?.length)\n },\n getMemoOptions(table.options, debug, 'getRightLeafHeaders')\n )\n\n table.getLeafHeaders = memo(\n () => [\n table.getLeftHeaderGroups(),\n table.getCenterHeaderGroups(),\n table.getRightHeaderGroups(),\n ],\n (left, center, right) => {\n return [\n ...(left[0]?.headers ?? []),\n ...(center[0]?.headers ?? []),\n ...(right[0]?.headers ?? []),\n ]\n .map(header => {\n return header.getLeafHeaders()\n })\n .flat()\n },\n getMemoOptions(table.options, debug, 'getLeafHeaders')\n )\n },\n}\n\nexport function buildHeaderGroups<TData extends RowData>(\n allColumns: Column<TData, unknown>[],\n columnsToGroup: Column<TData, unknown>[],\n table: Table<TData>,\n headerFamily?: 'center' | 'left' | 'right'\n) {\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0\n\n const findMaxDepth = (columns: Column<TData, unknown>[], depth = 1) => {\n maxDepth = Math.max(maxDepth, depth)\n\n columns\n .filter(column => column.getIsVisible())\n .forEach(column => {\n if (column.columns?.length) {\n findMaxDepth(column.columns, depth + 1)\n }\n }, 0)\n }\n\n findMaxDepth(allColumns)\n\n let headerGroups: HeaderGroup<TData>[] = []\n\n const createHeaderGroup = (\n headersToGroup: Header<TData, unknown>[],\n depth: number\n ) => {\n // The header group we are creating\n const headerGroup: HeaderGroup<TData> = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: [],\n }\n\n // The parent columns we're going to scan next\n const pendingParentHeaders: Header<TData, unknown>[] = []\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0]\n\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth\n\n let column: Column<TData, unknown>\n let isPlaceholder = false\n\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent\n } else {\n // The parent header is repeated\n column = headerToGroup.column\n isPlaceholder = true\n }\n\n if (\n latestPendingParentHeader &&\n latestPendingParentHeader?.column === column\n ) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup)\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup?.id]\n .filter(Boolean)\n .join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder\n ? `${pendingParentHeaders.filter(d => d.column === column).length}`\n : undefined,\n depth,\n index: pendingParentHeaders.length,\n })\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup)\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header)\n }\n\n headerGroup.headers.push(headerToGroup)\n headerToGroup.headerGroup = headerGroup\n })\n\n headerGroups.push(headerGroup)\n\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1)\n }\n }\n\n const bottomHeaders = columnsToGroup.map((column, index) =>\n createHeader(table, column, {\n depth: maxDepth,\n index,\n })\n )\n\n createHeaderGroup(bottomHeaders, maxDepth - 1)\n\n headerGroups.reverse()\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = (\n headers: Header<TData, unknown>[]\n ): { colSpan: number; rowSpan: number }[] => {\n const filteredHeaders = headers.filter(header =>\n header.column.getIsVisible()\n )\n\n return filteredHeaders.map(header => {\n let colSpan = 0\n let rowSpan = 0\n let childRowSpans = [0]\n\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = []\n\n recurseHeadersForSpans(header.subHeaders).forEach(\n ({ colSpan: childColSpan, rowSpan: childRowSpan }) => {\n colSpan += childColSpan\n childRowSpans.push(childRowSpan)\n }\n )\n } else {\n colSpan = 1\n }\n\n const minChildRowSpan = Math.min(...childRowSpans)\n rowSpan = rowSpan + minChildRowSpan\n\n header.colSpan = colSpan\n header.rowSpan = rowSpan\n\n return { colSpan, rowSpan }\n })\n }\n\n recurseHeadersForSpans(headerGroups[0]?.headers ?? [])\n\n return headerGroups\n}\n","import { RowData, Cell, Row, Table } from '../types'\nimport { flattenBy, getMemoOptions, memo } from '../utils'\nimport { createCell } from './cell'\n\nexport interface CoreRow<TData extends RowData> {\n _getAllCellsByColumnId: () => Record<string, Cell<TData, unknown>>\n _uniqueValuesCache: Record<string, unknown>\n _valuesCache: Record<string, unknown>\n /**\n * The depth of the row (if nested or grouped) relative to the root row array.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#depth)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n depth: number\n /**\n * Returns all of the cells for the row.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#getallcells)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n getAllCells: () => Cell<TData, unknown>[]\n /**\n * Returns the leaf rows for the row, not including any parent rows.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#getleafrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n getLeafRows: () => Row<TData>[]\n /**\n * Returns the parent row for the row, if it exists.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#getparentrow)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n getParentRow: () => Row<TData> | undefined\n /**\n * Returns the parent rows for the row, all the way up to a root row.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#getparentrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n getParentRows: () => Row<TData>[]\n /**\n * Returns a unique array of values from the row for a given columnId.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#getuniquevalues)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n getUniqueValues: <TValue>(columnId: string) => TValue[]\n /**\n * Returns the value from the row for a given columnId.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#getvalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n getValue: <TValue>(columnId: string) => TValue\n /**\n * The resolved unique identifier for the row resolved via the `options.getRowId` option. Defaults to the row's index (or relative index if it is a subRow).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#id)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n id: string\n /**\n * The index of the row within its parent array (or the root data array).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#index)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n index: number\n /**\n * The original row object provided to the table. If the row is a grouped row, the original row object will be the first original in the group.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#original)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n original: TData\n /**\n * An array of the original subRows as returned by the `options.getSubRows` option.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#originalsubrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n originalSubRows?: TData[]\n /**\n * If nested, this row's parent row id.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#parentid)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n parentId?: string\n /**\n * Renders the value for the row in a given columnId the same as `getValue`, but will return the `renderFallbackValue` if no value is found.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#rendervalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n renderValue: <TValue>(columnId: string) => TValue\n /**\n * An array of subRows for the row as returned and created by the `options.getSubRows` option.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#subrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n subRows: Row<TData>[]\n}\n\nexport const createRow = <TData extends RowData>(\n table: Table<TData>,\n id: string,\n original: TData,\n rowIndex: number,\n depth: number,\n subRows?: Row<TData>[],\n parentId?: string\n): Row<TData> => {\n let row: CoreRow<TData> = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId]\n }\n\n const column = table.getColumn(columnId)\n\n if (!column?.accessorFn) {\n return undefined\n }\n\n row._valuesCache[columnId] = column.accessorFn(\n row.original as TData,\n rowIndex\n )\n\n return row._valuesCache[columnId] as any\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId]\n }\n\n const column = table.getColumn(columnId)\n\n if (!column?.accessorFn) {\n return undefined\n }\n\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)]\n return row._uniqueValuesCache[columnId]\n }\n\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(\n row.original as TData,\n rowIndex\n )\n\n return row._uniqueValuesCache[columnId] as any\n },\n renderValue: columnId =>\n row.getValue(columnId) ?? table.options.renderFallbackValue,\n subRows: subRows ?? [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getParentRow: () =>\n row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows: Row<TData>[] = []\n let currentRow = row\n while (true) {\n const parentRow = currentRow.getParentRow()\n if (!parentRow) break\n parentRows.push(parentRow)\n currentRow = parentRow\n }\n return parentRows.reverse()\n },\n getAllCells: memo(\n () => [table.getAllLeafColumns()],\n leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row as Row<TData>, column, column.id)\n })\n },\n getMemoOptions(table.options, 'debugRows', 'getAllCells')\n ),\n\n _getAllCellsByColumnId: memo(\n () => [row.getAllCells()],\n allCells => {\n return allCells.reduce(\n (acc, cell) => {\n acc[cell.column.id] = cell\n return acc\n },\n {} as Record<string, Cell<TData, unknown>>\n )\n },\n getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId')\n ),\n }\n\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i]\n feature?.createRow?.(row as Row<TData>, table)\n }\n\n return row as Row<TData>\n}\n","import { RowModel } from '..'\nimport { Column, RowData, Table, TableFeature } from '../types'\n\nexport interface FacetedColumn<TData extends RowData> {\n _getFacetedMinMaxValues?: () => undefined | [number, number]\n _getFacetedRowModel?: () => RowModel<TData>\n _getFacetedUniqueValues?: () => Map<any, number>\n /**\n * A function that **computes and returns** a min/max tuple derived from `column.getFacetedRowModel`. Useful for displaying faceted result values.\n * > ⚠️ Requires that you pass a valid `getFacetedMinMaxValues` function to `options.getFacetedMinMaxValues`. A default implementation is provided via the exported `getFacetedMinMaxValues` function.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-faceting#getfacetedminmaxvalues)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-faceting)\n */\n getFacetedMinMaxValues: () => undefined | [number, number]\n /**\n * Returns the row model with all other column filters applied, excluding its own filter. Useful for displaying faceted result counts.\n * > ⚠️ Requires that you pass a valid `getFacetedRowModel` function to `options.facetedRowModel`. A default implementation is provided via the exported `getFacetedRowModel` function.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-faceting#getfacetedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-faceting)\n */\n getFacetedRowModel: () => RowModel<TData>\n /**\n * A function that **computes and returns** a `Map` of unique values and their occurrences derived from `column.getFacetedRowModel`. Useful for displaying faceted result values.\n * > ⚠️ Requires that you pass a valid `getFacetedUniqueValues` function to `options.getFacetedUniqueValues`. A default implementation is provided via the exported `getFacetedUniqueValues` function.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-faceting#getfaceteduniquevalues)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-faceting)\n */\n getFacetedUniqueValues: () => Map<any, number>\n}\n\nexport interface FacetedOptions<TData extends RowData> {\n getFacetedMinMaxValues?: (\n table: Table<TData>,\n columnId: string\n ) => () => undefined | [number, number]\n getFacetedRowModel?: (\n table: Table<TData>,\n columnId: string\n ) => () => RowModel<TData>\n getFacetedUniqueValues?: (\n table: Table<TData>,\n columnId: string\n ) => () => Map<any, number>\n}\n\n//\n\nexport const ColumnFaceting: TableFeature = {\n createColumn: <TData extends RowData>(\n column: Column<TData, unknown>,\n table: Table<TData>\n ): void => {\n column._getFacetedRowModel =\n table.options.getFacetedRowModel &&\n table.options.getFacetedRowModel(table, column.id)\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel()\n }\n\n return column._getFacetedRowModel()\n }\n column._getFacetedUniqueValues =\n table.options.getFacetedUniqueValues &&\n table.options.getFacetedUniqueValues(table, column.id)\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map()\n }\n\n return column._getFacetedUniqueValues()\n }\n column._getFacetedMinMaxValues =\n table.options.getFacetedMinMaxValues &&\n table.options.getFacetedMinMaxValues(table, column.id)\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined\n }\n\n return column._getFacetedMinMaxValues()\n }\n },\n}\n","import { FilterFn } from './features/ColumnFiltering'\n\nconst includesString: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: string\n) => {\n const search = filterValue?.toString()?.toLowerCase()\n return Boolean(\n row\n .getValue<string | null>(columnId)\n ?.toString()\n ?.toLowerCase()\n ?.includes(search)\n )\n}\n\nincludesString.autoRemove = (val: any) => testFalsey(val)\n\nconst includesStringSensitive: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: string\n) => {\n return Boolean(\n row.getValue<string | null>(columnId)?.toString()?.includes(filterValue)\n )\n}\n\nincludesStringSensitive.autoRemove = (val: any) => testFalsey(val)\n\nconst equalsString: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: string\n) => {\n return (\n row.getValue<string | null>(columnId)?.toString()?.toLowerCase() ===\n filterValue?.toLowerCase()\n )\n}\n\nequalsString.autoRemove = (val: any) => testFalsey(val)\n\nconst arrIncludes: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown\n) => {\n return row.getValue<unknown[]>(columnId)?.includes(filterValue)\n}\n\narrIncludes.autoRemove = (val: any) => testFalsey(val)\n\nconst arrIncludesAll: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown[]\n) => {\n return !filterValue.some(\n val => !row.getValue<unknown[]>(columnId)?.includes(val)\n )\n}\n\narrIncludesAll.autoRemove = (val: any) => testFalsey(val) || !val?.length\n\nconst arrIncludesSome: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown[]\n) => {\n return filterValue.some(val =>\n row.getValue<unknown[]>(columnId)?.includes(val)\n )\n}\n\narrIncludesSome.autoRemove = (val: any) => testFalsey(val) || !val?.length\n\nconst equals: FilterFn<any> = (row, columnId: string, filterValue: unknown) => {\n return row.getValue(columnId) === filterValue\n}\n\nequals.autoRemove = (val: any) => testFalsey(val)\n\nconst weakEquals: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown\n) => {\n return row.getValue(columnId) == filterValue\n}\n\nweakEquals.autoRemove = (val: any) => testFalsey(val)\n\nconst inNumberRange: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: [number, number]\n) => {\n let [min, max] = filterValue\n\n const rowValue = row.getValue<number>(columnId)\n return rowValue >= min && rowValue <= max\n}\n\ninNumberRange.resolveFilterValue = (val: [any, any]) => {\n let [unsafeMin, unsafeMax] = val\n\n let parsedMin =\n typeof unsafeMin !== 'number' ? parseFloat(unsafeMin as string) : unsafeMin\n let parsedMax =\n typeof unsafeMax !== 'number' ? parseFloat(unsafeMax as string) : unsafeMax\n\n let min =\n unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax\n\n if (min > max) {\n const temp = min\n min = max\n max = temp\n }\n\n return [min, max] as const\n}\n\ninNumberRange.autoRemove = (val: any) =>\n testFalsey(val) || (testFalsey(val[0]) && testFalsey(val[1]))\n\n// Export\n\nexport const filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange,\n}\n\nexport type BuiltInFilterFn = keyof typeof filterFns\n\n// Utils\n\nfunction testFalsey(val: any) {\n return val === undefined || val === null || val === ''\n}\n","import { RowModel } from '..'\nimport { BuiltInFilterFn, filterFns } from '../filterFns'\nimport {\n Column,\n FilterFns,\n FilterMeta,\n OnChangeFn,\n Row,\n RowData,\n Table,\n TableFeature,\n Updater,\n} from '../types'\nimport { functionalUpdate, isFunction, makeStateUpdater } from '../utils'\n\nexport interface ColumnFiltersTableState {\n columnFilters: ColumnFiltersState\n}\n\nexport type ColumnFiltersState = ColumnFilter[]\n\nexport interface ColumnFilter {\n id: string\n value: unknown\n}\n\nexport interface ResolvedColumnFilter<TData extends RowData> {\n filterFn: FilterFn<TData>\n id: string\n resolvedValue: unknown\n}\n\nexport interface FilterFn<TData extends RowData> {\n (\n row: Row<TData>,\n columnId: string,\n filterValue: any,\n addMeta: (meta: FilterMeta) => void\n ): boolean\n autoRemove?: ColumnFilterAutoRemoveTestFn<TData>\n resolveFilterValue?: TransformFilterValueFn<TData>\n}\n\nexport type TransformFilterValueFn<TData extends RowData> = (\n value: any,\n column?: Column<TData, unknown>\n) => unknown\n\nexport type ColumnFilterAutoRemoveTestFn<TData extends RowData> = (\n value: any,\n column?: Column<TData, unknown>\n) => boolean\n\nexport type CustomFilterFns<TData extends RowData> = Record<\n string,\n FilterFn<TData>\n>\n\nexport type FilterFnOption<TData extends RowData> =\n | 'auto'\n | BuiltInFilterFn\n | keyof FilterFns\n | FilterFn<TData>\n\nexport interface ColumnFiltersColumnDef<TData extends RowData> {\n /**\n * Enables/disables the **column** filter for this column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#enablecolumnfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n enableColumnFilter?: boolean\n /**\n * The filter function to use with this column. Can be the name of a built-in filter function or a custom filter function.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#filterfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n filterFn?: FilterFnOption<TData>\n}\n\nexport interface ColumnFiltersColumn<TData extends RowData> {\n /**\n * Returns an automatically calculated filter function for the column based off of the columns first known value.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#getautofilterfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n getAutoFilterFn: () => FilterFn<TData> | undefined\n /**\n * Returns whether or not the column can be **column** filtered.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#getcanfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n getCanFilter: () => boolean\n /**\n * Returns the filter function (either user-defined or automatic, depending on configuration) for the columnId specified.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#getfilterfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n getFilterFn: () => FilterFn<TData> | undefined\n /**\n * Returns the index (including `-1`) of the column filter in the table's `state.columnFilters` array.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#getfilterindex)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n getFilterIndex: () => number\n /**\n * Returns the current filter value for the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#getfiltervalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n getFilterValue: () => unknown\n /**\n * Returns whether or not the column is currently filtered.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#getisfiltered)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n getIsFiltered: () => boolean\n /**\n * A function that sets the current filter value for the column. You can pass it a value or an updater function for immutability-safe operations on existing values.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#setfiltervalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n setFilterValue: (updater: Updater<any>) => void\n}\n\nexport interface ColumnFiltersRow<TData extends RowData> {\n /**\n * The column filters map for the row. This object tracks whether a row is passing/failing specific filters by their column ID.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#columnfilters)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n columnFilters: Record<string, boolean>\n /**\n * The column filters meta map for the row. This object tracks any filter meta for a row as optionally provided during the filtering process.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#columnfiltersmeta)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n columnFiltersMeta: Record<string, FilterMeta>\n}\n\ninterface ColumnFiltersOptionsBase<TData extends RowData> {\n /**\n * Enables/disables **column** filtering for all columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#enablecolumnfilters)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n enableColumnFilters?: boolean\n /**\n * Enables/disables all filtering for the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#enablefilters)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n enableFilters?: boolean\n /**\n * By default, filtering is done from parent rows down (so if a parent row is filtered out, all of its children will be filtered out as well). Setting this option to `true` will cause filtering to be done from leaf rows up (which means parent rows will be included so long as one of their child or grand-child rows is also included).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#filterfromleafrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n filterFromLeafRows?: boolean\n /**\n * If provided, this function is called **once** per table and should return a **new function** which will calculate and return the row model for the table when it's filtered.\n * - For server-side filtering, this function is unnecessary and can be ignored since the server should already return the filtered row model.\n * - For client-side filtering, this function is required. A default implementation is provided via any table adapter's `{ getFilteredRowModel }` export.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#getfilteredrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n getFilteredRowModel?: (table: Table<any>) => () => RowModel<any>\n /**\n * Disables the `getFilteredRowModel` from being used to filter data. This may be useful if your table needs to dynamically support both client-side and server-side filtering.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#manualfiltering)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n manualFiltering?: boolean\n /**\n * By default, filtering is done for all rows (max depth of 100), no matter if they are root level parent rows or the child leaf rows of a parent row. Setting this option to `0` will cause filtering to only be applied to the root level parent rows, with all sub-rows remaining unfiltered. Similarly, setting this option to `1` will cause filtering to only be applied to child leaf rows 1 level deep, and so on.\n\n * This is useful for situations where you want a row's entire child hierarchy to be visible regardless of the applied filter.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#maxleafrowfilterdepth)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n maxLeafRowFilterDepth?: number\n /**\n * If provided, this function will be called with an `updaterFn` when `state.columnFilters` changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#oncolumnfilterschange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>\n}\n\ntype ResolvedFilterFns = keyof FilterFns extends never\n ? {\n filterFns?: Record<string, FilterFn<any>>\n }\n : {\n filterFns: Record<keyof FilterFns, FilterFn<any>>\n }\n\nexport interface ColumnFiltersOptions<TData extends RowData>\n extends ColumnFiltersOptionsBase<TData>,\n ResolvedFilterFns {}\n\nexport interface ColumnFiltersInstance<TData extends RowData> {\n _getFilteredRowModel?: () => RowModel<TData>\n /**\n * Returns the row model for the table after **column** filtering has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#getfilteredrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n getFilteredRowModel: () => RowModel<TData>\n /**\n * Returns the row model for the table before any **column** filtering has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#getprefilteredrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n getPreFilteredRowModel: () => RowModel<TData>\n /**\n * Resets the **columnFilters** state to `initialState.columnFilters`, or `true` can be passed to force a default blank state reset to `[]`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#resetcolumnfilters)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n resetColumnFilters: (defaultState?: boolean) => void\n /**\n * Resets the **globalFilter** state to `initialState.globalFilter`, or `true` can be passed to force a default blank state reset to `undefined`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#resetglobalfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n resetGlobalFilter: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.columnFilters` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#setcolumnfilters)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n setColumnFilters: (updater: Updater<ColumnFiltersState>) => void\n /**\n * Sets or updates the `state.globalFilter` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#setglobalfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n setGlobalFilter: (updater: Updater<any>) => void\n}\n\n//\n\nexport const ColumnFiltering: TableFeature = {\n getDefaultColumnDef: <\n TData extends RowData,\n >(): ColumnFiltersColumnDef<TData> => {\n return {\n filterFn: 'auto',\n }\n },\n\n getInitialState: (state): ColumnFiltersTableState => {\n return {\n columnFilters: [],\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): ColumnFiltersOptions<TData> => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100,\n } as ColumnFiltersOptions<TData>\n },\n\n createColumn: <TData extends RowData>(\n column: Column<TData, unknown>,\n table: Table<TData>\n ): void => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'string') {\n return filterFns.includesString\n }\n\n if (typeof value === 'number') {\n return filterFns.inNumberRange\n }\n\n if (typeof value === 'boolean') {\n return filterFns.equals\n }\n\n if (value !== null && typeof value === 'object') {\n return filterFns.equals\n }\n\n if (Array.isArray(value)) {\n return filterFns.arrIncludes\n }\n\n return filterFns.weakEquals\n }\n column.getFilterFn = () => {\n return isFunction(column.columnDef.filterFn)\n ? column.columnDef.filterFn\n : column.columnDef.filterFn === 'auto'\n ? column.getAutoFilterFn()\n : // @ts-ignore\n table.options.filterFns?.[column.columnDef.filterFn as string] ??\n filterFns[column.columnDef.filterFn as BuiltInFilterFn]\n }\n column.getCanFilter = () => {\n return (\n (column.columnDef.enableColumnFilter ?? true) &&\n (table.options.enableColumnFilters ?? true) &&\n (table.options.enableFilters ?? true) &&\n !!column.accessorFn\n )\n }\n\n column.getIsFiltered = () => column.getFilterIndex() > -1\n\n column.getFilterValue = () =>\n table.getState().columnFilters?.find(d => d.id === column.id)?.value\n\n column.getFilterIndex = () =>\n table.getState().columnFilters?.findIndex(d => d.id === column.id) ?? -1\n\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn()\n const previousFilter = old?.find(d => d.id === column.id)\n\n const newFilter = functionalUpdate(\n value,\n previousFilter ? previousFilter.value : undefined\n )\n\n //\n if (\n shouldAutoRemoveFilter(filterFn as FilterFn<TData>, newFilter, column)\n ) {\n return old?.filter(d => d.id !== column.id) ?? []\n }\n\n const newFilterObj = { id: column.id, value: newFilter }\n\n if (previousFilter) {\n return (\n old?.map(d => {\n if (d.id === column.id) {\n return newFilterObj\n }\n return d\n }) ?? []\n )\n }\n\n if (old?.length) {\n return [...old, newFilterObj]\n }\n\n return [newFilterObj]\n })\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n _table: Table<TData>\n ): void => {\n row.columnFilters = {}\n row.columnFiltersMeta = {}\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table.setColumnFilters = (updater: Updater<ColumnFiltersState>) => {\n const leafColumns = table.getAllLeafColumns()\n\n const updateFn = (old: ColumnFiltersState) => {\n return functionalUpdate(updater, old)?.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id)\n\n if (column) {\n const filterFn = column.getFilterFn()\n\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false\n }\n }\n\n return true\n })\n }\n\n table.options.onColumnFiltersChange?.(updateFn)\n }\n\n table.resetColumnFilters = defaultState => {\n table.setColumnFilters(\n defaultState ? [] : table.initialState?.columnFilters ?? []\n )\n }\n\n table.getPreFilteredRowModel = () => table.getCoreRowModel()\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table)\n }\n\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel()\n }\n\n return table._getFilteredRowModel()\n }\n },\n}\n\nexport function shouldAutoRemoveFilter<TData extends RowData>(\n filterFn?: FilterFn<TData>,\n value?: any,\n column?: Column<TData, unknown>\n) {\n return (\n (filterFn && filterFn.autoRemove\n ? filterFn.autoRemove(value, column)\n : false) ||\n typeof value === 'undefined' ||\n (typeof value === 'string' && !value)\n )\n}\n","import { AggregationFn } from './features/ColumnGrouping'\nimport { isNumberArray } from './utils'\n\nconst sum: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId)\n return sum + (typeof nextValue === 'number' ? nextValue : 0)\n }, 0)\n}\n\nconst min: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let min: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n\n if (\n value != null &&\n (min! > value || (min === undefined && value >= value))\n ) {\n min = value\n }\n })\n\n return min\n}\n\nconst max: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let max: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n if (\n value != null &&\n (max! < value || (max === undefined && value >= value))\n ) {\n max = value\n }\n })\n\n return max\n}\n\nconst extent: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let min: number | undefined\n let max: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value\n } else {\n if (min > value) min = value\n if (max! < value) max = value\n }\n }\n })\n\n return [min, max]\n}\n\nconst mean: AggregationFn<any> = (columnId, leafRows) => {\n let count = 0\n let sum = 0\n\n leafRows.forEach(row => {\n let value = row.getValue<number>(columnId)\n if (value != null && (value = +value) >= value) {\n ++count, (sum += value)\n }\n })\n\n if (count) return sum / count\n\n return\n}\n\nconst median: AggregationFn<any> = (columnId, leafRows) => {\n if (!leafRows.length) {\n return\n }\n\n const values = leafRows.map(row => row.getValue(columnId))\n if (!isNumberArray(values)) {\n return\n }\n if (values.length === 1) {\n return values[0]\n }\n\n const mid = Math.floor(values.length / 2)\n const nums = values.sort((a, b) => a - b)\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1]! + nums[mid]!) / 2\n}\n\nconst unique: AggregationFn<any> = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values())\n}\n\nconst uniqueCount: AggregationFn<any> = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size\n}\n\nconst count: AggregationFn<any> = (_columnId, leafRows) => {\n return leafRows.length\n}\n\nexport const aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count,\n}\n\nexport type BuiltInAggregationFn = keyof typeof aggregationFns\n","import { RowModel } from '..'\nimport { BuiltInAggregationFn, aggregationFns } from '../aggregationFns'\nimport {\n AggregationFns,\n Cell,\n Column,\n ColumnDefTemplate,\n OnChangeFn,\n Row,\n RowData,\n Table,\n TableFeature,\n Updater,\n} from '../types'\nimport { isFunction, makeStateUpdater } from '../utils'\n\nexport type GroupingState = string[]\n\nexport interface GroupingTableState {\n grouping: GroupingState\n}\n\nexport type AggregationFn<TData extends RowData> = (\n columnId: string,\n leafRows: Row<TData>[],\n childRows: Row<TData>[]\n) => any\n\nexport type CustomAggregationFns = Record<string, AggregationFn<any>>\n\nexport type AggregationFnOption<TData extends RowData> =\n | 'auto'\n | keyof AggregationFns\n | BuiltInAggregationFn\n | AggregationFn<TData>\n\nexport interface GroupingColumnDef<TData extends RowData, TValue> {\n /**\n * The cell to display each row for the column if the cell is an aggregate. If a function is passed, it will be passed a props object with the context of the cell and should return the property type for your adapter (the exact type depends on the adapter being used).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#aggregatedcell)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n aggregatedCell?: ColumnDefTemplate<\n ReturnType<Cell<TData, TValue>['getContext']>\n >\n /**\n * The resolved aggregation function for the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#aggregationfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n aggregationFn?: AggregationFnOption<TData>\n /**\n * Enables/disables grouping for this column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#enablegrouping)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n enableGrouping?: boolean\n /**\n * Specify a value to be used for grouping rows on this column. If this option is not specified, the value derived from `accessorKey` / `accessorFn` will be used instead.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getgroupingvalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getGroupingValue?: (row: TData) => any\n}\n\nexport interface GroupingColumn<TData extends RowData> {\n /**\n * Returns the aggregation function for the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getaggregationfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getAggregationFn: () => AggregationFn<TData> | undefined\n /**\n * Returns the automatically inferred aggregation function for the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getautoaggregationfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getAutoAggregationFn: () => AggregationFn<TData> | undefined\n /**\n * Returns whether or not the column can be grouped.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getcangroup)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getCanGroup: () => boolean\n /**\n * Returns the index of the column in the grouping state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getgroupedindex)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getGroupedIndex: () => number\n /**\n * Returns whether or not the column is currently grouped.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getisgrouped)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getIsGrouped: () => boolean\n /**\n * Returns a function that toggles the grouping state of the column. This is useful for passing to the `onClick` prop of a button.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#gettogglegroupinghandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getToggleGroupingHandler: () => () => void\n /**\n * Toggles the grouping state of the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#togglegrouping)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n toggleGrouping: () => void\n}\n\nexport interface GroupingRow {\n _groupingValuesCache: Record<string, any>\n /**\n * Returns the grouping value for any row and column (including leaf rows).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getgroupingvalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getGroupingValue: (columnId: string) => unknown\n /**\n * Returns whether or not the row is currently grouped.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getisgrouped)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getIsGrouped: () => boolean\n /**\n * If this row is grouped, this is the id of the column that this row is grouped by.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#groupingcolumnid)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n groupingColumnId?: string\n /**\n * If this row is grouped, this is the unique/shared value for the `groupingColumnId` for all of the rows in this group.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#groupingvalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n groupingValue?: unknown\n}\n\nexport interface GroupingCell {\n /**\n * Returns whether or not the cell is currently aggregated.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getisaggregated)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getIsAggregated: () => boolean\n /**\n * Returns whether or not the cell is currently grouped.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getisgrouped)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getIsGrouped: () => boolean\n /**\n * Returns whether or not the cell is currently a placeholder cell.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getisplaceholder)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getIsPlaceholder: () => boolean\n}\n\nexport interface ColumnDefaultOptions {\n enableGrouping: boolean\n onGroupingChange: OnChangeFn<GroupingState>\n}\n\ninterface GroupingOptionsBase {\n /**\n * Enables/disables grouping for the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#enablegrouping)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n enableGrouping?: boolean\n /**\n * Returns the row model after grouping has taken place, but no further.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getgroupedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getGroupedRowModel?: (table: Table<any>) => () => RowModel<any>\n /**\n * Grouping columns are automatically reordered by default to the start of the columns list. If you would rather remove them or leave them as-is, set the appropriate mode here.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#groupedcolumnmode)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n groupedColumnMode?: false | 'reorder' | 'remove'\n /**\n * Enables manual grouping. If this option is set to `true`, the table will not automatically group rows using `getGroupedRowModel()` and instead will expect you to manually group the rows before passing them to the table. This is useful if you are doing server-side grouping and aggregation.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#manualgrouping)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n manualGrouping?: boolean\n /**\n * If this function is provided, it will be called when the grouping state changes and you will be expected to manage the state yourself. You can pass the managed state back to the table via the `tableOptions.state.grouping` option.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#ongroupingchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n onGroupingChange?: OnChangeFn<GroupingState>\n}\n\ntype ResolvedAggregationFns = keyof AggregationFns extends never\n ? {\n aggregationFns?: Record<string, AggregationFn<any>>\n }\n : {\n aggregationFns: Record<keyof AggregationFns, AggregationFn<any>>\n }\n\nexport interface GroupingOptions\n extends GroupingOptionsBase,\n ResolvedAggregationFns {}\n\nexport type GroupingColumnMode = false | 'reorder' | 'remove'\n\nexport interface GroupingInstance<TData extends RowData> {\n _getGroupedRowModel?: () => RowModel<TData>\n /**\n * Returns the row model for the table after grouping has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getgroupedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getGroupedRowModel: () => RowModel<TData>\n /**\n * Returns the row model for the table before any grouping has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getpregroupedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getPreGroupedRowModel: () => RowModel<TData>\n /**\n * Resets the **grouping** state to `initialState.grouping`, or `true` can be passed to force a default blank state reset to `[]`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#resetgrouping)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n resetGrouping: (defaultState?: boolean) => void\n /**\n * Updates the grouping state of the table via an update function or value.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#setgrouping)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n setGrouping: (updater: Updater<GroupingState>) => void\n}\n\n//\n\nexport const ColumnGrouping: TableFeature = {\n getDefaultColumnDef: <TData extends RowData>(): GroupingColumnDef<\n TData,\n unknown\n > => {\n return {\n aggregatedCell: props => (props.getValue() as any)?.toString?.() ?? null,\n aggregationFn: 'auto',\n }\n },\n\n getInitialState: (state): GroupingTableState => {\n return {\n grouping: [],\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): GroupingOptions => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder',\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): void => {\n column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old?.includes(column.id)) {\n return old.filter(d => d !== column.id)\n }\n\n return [...(old ?? []), column.id]\n })\n }\n\n column.getCanGroup = () => {\n return (\n (column.columnDef.enableGrouping ?? true) &&\n (table.options.enableGrouping ?? true) &&\n (!!column.accessorFn || !!column.columnDef.getGroupingValue)\n )\n }\n\n column.getIsGrouped = () => {\n return table.getState().grouping?.includes(column.id)\n }\n\n column.getGroupedIndex = () => table.getState().grouping?.indexOf(column.id)\n\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup()\n\n return () => {\n if (!canGroup) return\n column.toggleGrouping()\n }\n }\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'number') {\n return aggregationFns.sum\n }\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent\n }\n }\n column.getAggregationFn = () => {\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.columnDef.aggregationFn)\n ? column.columnDef.aggregationFn\n : column.columnDef.aggregationFn === 'auto'\n ? column.getAutoAggregationFn()\n : table.options.aggregationFns?.[\n column.columnDef.aggregationFn as string\n ] ??\n aggregationFns[\n column.columnDef.aggregationFn as BuiltInAggregationFn\n ]\n }\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table.setGrouping = updater => table.options.onGroupingChange?.(updater)\n\n table.resetGrouping = defaultState => {\n table.setGrouping(defaultState ? [] : table.initialState?.grouping ?? [])\n }\n\n table.getPreGroupedRowModel = () => table.getFilteredRowModel()\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table)\n }\n\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel()\n }\n\n return table._getGroupedRowModel()\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): void => {\n row.getIsGrouped = () => !!row.groupingColumnId\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n const column = table.getColumn(columnId)\n\n if (!column?.columnDef.getGroupingValue) {\n return row.getValue(columnId)\n }\n\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(\n row.original\n )\n\n return row._groupingValuesCache[columnId]\n }\n row._groupingValuesCache = {}\n },\n\n createCell: <TData extends RowData, TValue>(\n cell: Cell<TData, TValue>,\n column: Column<TData, TValue>,\n row: Row<TData>,\n table: Table<TData>\n ): void => {\n const getRenderValue = () =>\n cell.getValue() ?? table.options.renderFallbackValue\n\n cell.getIsGrouped = () =>\n column.getIsGrouped() && column.id === row.groupingColumnId\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped()\n cell.getIsAggregated = () =>\n !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!row.subRows?.length\n },\n}\n\nexport function orderColumns<TData extends RowData>(\n leafColumns: Column<TData, unknown>[],\n grouping: string[],\n groupedColumnMode?: GroupingColumnMode\n) {\n if (!grouping?.length || !groupedColumnMode) {\n return leafColumns\n }\n\n const nonGroupingColumns = leafColumns.filter(\n col => !grouping.includes(col.id)\n )\n\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns\n }\n\n const groupingColumns = grouping\n .map(g => leafColumns.find(col => col.id === g)!)\n .filter(Boolean)\n\n return [...groupingColumns, ...nonGroupingColumns]\n}\n","import { getMemoOptions, makeStateUpdater, memo } from '../utils'\n\nimport {\n Column,\n OnChangeFn,\n RowData,\n Table,\n TableFeature,\n Updater,\n} from '../types'\n\nimport { orderColumns } from './ColumnGrouping'\nimport { ColumnPinningPosition, _getVisibleLeafColumns } from '..'\n\nexport interface ColumnOrderTableState {\n columnOrder: ColumnOrderState\n}\n\nexport type ColumnOrderState = string[]\n\nexport interface ColumnOrderOptions {\n /**\n * If provided, this function will be called with an `updaterFn` when `state.columnOrder` changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-ordering#oncolumnorderchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-ordering)\n */\n onColumnOrderChange?: OnChangeFn<ColumnOrderState>\n}\n\nexport interface ColumnOrderColumn {\n /**\n * Returns the index of the column in the order of the visible columns. Optionally pass a `position` parameter to get the index of the column in a sub-section of the table\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-ordering#getindex)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-ordering)\n */\n getIndex: (position?: ColumnPinningPosition | 'center') => number\n /**\n * Returns `true` if the column is the first column in the order of the visible columns. Optionally pass a `position` parameter to check if the column is the first in a sub-section of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-ordering#getisfirstcolumn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-ordering)\n */\n getIsFirstColumn: (position?: ColumnPinningPosition | 'center') => boolean\n /**\n * Returns `true` if the column is the last column in the order of the visible columns. Optionally pass a `position` parameter to check if the column is the last in a sub-section of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-ordering#getislastcolumn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-ordering)\n */\n getIsLastColumn: (position?: ColumnPinningPosition | 'center') => boolean\n}\n\nexport interface ColumnOrderDefaultOptions {\n onColumnOrderChange: OnChangeFn<ColumnOrderState>\n}\n\nexport interface ColumnOrderInstance<TData extends RowData> {\n _getOrderColumnsFn: () => (\n columns: Column<TData, unknown>[]\n ) => Column<TData, unknown>[]\n /**\n * Resets the **columnOrder** state to `initialState.columnOrder`, or `true` can be passed to force a default blank state reset to `[]`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-ordering#resetcolumnorder)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-ordering)\n */\n resetColumnOrder: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.columnOrder` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-ordering#setcolumnorder)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-ordering)\n */\n setColumnOrder: (updater: Updater<ColumnOrderState>) => void\n}\n\n//\n\nexport const ColumnOrdering: TableFeature = {\n getInitialState: (state): ColumnOrderTableState => {\n return {\n columnOrder: [],\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): ColumnOrderDefaultOptions => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table),\n }\n },\n\n createColumn: <TData extends RowData>(\n column: Column<TData, unknown>,\n table: Table<TData>\n ): void => {\n column.getIndex = memo(\n position => [_getVisibleLeafColumns(table, position)],\n columns => columns.findIndex(d => d.id === column.id),\n getMemoOptions(table.options, 'debugColumns', 'getIndex')\n )\n column.getIsFirstColumn = position => {\n const columns = _getVisibleLeafColumns(table, position)\n return columns[0]?.id === column.id\n }\n column.getIsLastColumn = position => {\n const columns = _getVisibleLeafColumns(table, position)\n return columns[columns.length - 1]?.id === column.id\n }\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table.setColumnOrder = updater =>\n table.options.onColumnOrderChange?.(updater)\n table.resetColumnOrder = defaultState => {\n table.setColumnOrder(\n defaultState ? [] : table.initialState.columnOrder ?? []\n )\n }\n table._getOrderColumnsFn = memo(\n () => [\n table.getState().columnOrder,\n table.getState().grouping,\n table.options.groupedColumnMode,\n ],\n (columnOrder, grouping, groupedColumnMode) =>\n (columns: Column<TData, unknown>[]) => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns: Column<TData, unknown>[] = []\n\n // If there is no order, return the normal columns\n if (!columnOrder?.length) {\n orderedColumns = columns\n } else {\n const columnOrderCopy = [...columnOrder]\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns]\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift()\n const foundIndex = columnsCopy.findIndex(\n d => d.id === targetColumnId\n )\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]!)\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy]\n }\n\n return orderColumns(orderedColumns, grouping, groupedColumnMode)\n },\n getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn')\n )\n },\n}\n","import {\n OnChangeFn,\n Updater,\n Table,\n Column,\n Row,\n Cell,\n RowData,\n TableFeature,\n} from '../types'\nimport { getMemoOptions, makeStateUpdater, memo } from '../utils'\n\nexport type ColumnPinningPosition = false | 'left' | 'right'\n\nexport interface ColumnPinningState {\n left?: string[]\n right?: string[]\n}\n\nexport interface ColumnPinningTableState {\n columnPinning: ColumnPinningState\n}\n\nexport interface ColumnPinningOptions {\n /**\n * Enables/disables column pinning for the table. Defaults to `true`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#enablecolumnpinning)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n enableColumnPinning?: boolean\n /**\n * @deprecated Use `enableColumnPinning` or `enableRowPinning` instead.\n * Enables/disables all pinning for the table. Defaults to `true`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#enablepinning)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n enablePinning?: boolean\n /**\n * If provided, this function will be called with an `updaterFn` when `state.columnPinning` changes. This overrides the default internal state management, so you will also need to supply `state.columnPinning` from your own managed state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#oncolumnpinningchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/oncolumnpinningchange)\n */\n onColumnPinningChange?: OnChangeFn<ColumnPinningState>\n}\n\nexport interface ColumnPinningDefaultOptions {\n onColumnPinningChange: OnChangeFn<ColumnPinningState>\n}\n\nexport interface ColumnPinningColumnDef {\n /**\n * Enables/disables column pinning for this column. Defaults to `true`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#enablepinning-1)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n enablePinning?: boolean\n}\n\nexport interface ColumnPinningColumn {\n /**\n * Returns whether or not the column can be pinned.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getcanpin)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getCanPin: () => boolean\n /**\n * Returns the pinned position of the column. (`'left'`, `'right'` or `false`)\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getispinned)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getIsPinned: () => ColumnPinningPosition\n /**\n * Returns the numeric pinned index of the column within a pinned column group.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getpinnedindex)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getPinnedIndex: () => number\n /**\n * Pins a column to the `'left'` or `'right'`, or unpins the column to the center if `false` is passed.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#pin)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n pin: (position: ColumnPinningPosition) => void\n}\n\nexport interface ColumnPinningRow<TData extends RowData> {\n /**\n * Returns all center pinned (unpinned) leaf cells in the row.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getcentervisiblecells)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getCenterVisibleCells: () => Cell<TData, unknown>[]\n /**\n * Returns all left pinned leaf cells in the row.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getleftvisiblecells)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getLeftVisibleCells: () => Cell<TData, unknown>[]\n /**\n * Returns all right pinned leaf cells in the row.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getrightvisiblecells)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getRightVisibleCells: () => Cell<TData, unknown>[]\n}\n\nexport interface ColumnPinningInstance<TData extends RowData> {\n /**\n * Returns all center pinned (unpinned) leaf columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getcenterleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getCenterLeafColumns: () => Column<TData, unknown>[]\n /**\n * Returns whether or not any columns are pinned. Optionally specify to only check for pinned columns in either the `left` or `right` position.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getissomecolumnspinned)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getIsSomeColumnsPinned: (position?: ColumnPinningPosition) => boolean\n /**\n * Returns all left pinned leaf columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getleftleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getLeftLeafColumns: () => Column<TData, unknown>[]\n /**\n * Returns all right pinned leaf columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getrightleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getRightLeafColumns: () => Column<TData, unknown>[]\n /**\n * Resets the **columnPinning** state to `initialState.columnPinning`, or `true` can be passed to force a default blank state reset to `{ left: [], right: [], }`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#resetcolumnpinning)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n resetColumnPinning: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.columnPinning` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#setcolumnpinning)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n setColumnPinning: (updater: Updater<ColumnPinningState>) => void\n}\n\n//\n\nconst getDefaultColumnPinningState = (): ColumnPinningState => ({\n left: [],\n right: [],\n})\n\nexport const ColumnPinning: TableFeature = {\n getInitialState: (state): ColumnPinningTableState => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): ColumnPinningDefaultOptions => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table),\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): void => {\n column.pin = position => {\n const columnIds = column\n .getLeafColumns()\n .map(d => d.id)\n .filter(Boolean) as string[]\n\n table.setColumnPinning(old => {\n if (position === 'right') {\n return {\n left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),\n right: [\n ...(old?.right ?? []).filter(d => !columnIds?.includes(d)),\n ...columnIds,\n ],\n }\n }\n\n if (position === 'left') {\n return {\n left: [\n ...(old?.left ?? []).filter(d => !columnIds?.includes(d)),\n ...columnIds,\n ],\n right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),\n }\n }\n\n return {\n left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),\n right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),\n }\n })\n }\n\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns()\n\n return leafColumns.some(\n d =>\n (d.columnDef.enablePinning ?? true) &&\n (table.options.enableColumnPinning ??\n table.options.enablePinning ??\n true)\n )\n }\n\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id)\n\n const { left, right } = table.getState().columnPinning\n\n const isLeft = leafColumnIds.some(d => left?.includes(d))\n const isRight = leafColumnIds.some(d => right?.includes(d))\n\n return isLeft ? 'left' : isRight ? 'right' : false\n }\n\n column.getPinnedIndex = () => {\n const position = column.getIsPinned()\n\n return position\n ? table.getState().columnPinning?.[position]?.indexOf(column.id) ?? -1\n : 0\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): void => {\n row.getCenterVisibleCells = memo(\n () => [\n row._getAllVisibleCells(),\n table.getState().columnPinning.left,\n table.getState().columnPinning.right,\n ],\n (allCells, left, right) => {\n const leftAndRight: string[] = [...(left ?? []), ...(right ?? [])]\n\n return allCells.filter(d => !leftAndRight.includes(d.column.id))\n },\n getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells')\n )\n row.getLeftVisibleCells = memo(\n () => [row._getAllVisibleCells(), table.getState().columnPinning.left],\n (allCells, left) => {\n const cells = (left ?? [])\n .map(columnId => allCells.find(cell => cell.column.id === columnId)!)\n .filter(Boolean)\n .map(d => ({ ...d, position: 'left' }) as Cell<TData, unknown>)\n\n return cells\n },\n getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells')\n )\n row.getRightVisibleCells = memo(\n () => [row._getAllVisibleCells(), table.getState().columnPinning.right],\n (allCells, right) => {\n const cells = (right ?? [])\n .map(columnId => allCells.find(cell => cell.column.id === columnId)!)\n .filter(Boolean)\n .map(d => ({ ...d, position: 'right' }) as Cell<TData, unknown>)\n\n return cells\n },\n getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells')\n )\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table.setColumnPinning = updater =>\n table.options.onColumnPinningChange?.(updater)\n\n table.resetColumnPinning = defaultState =>\n table.setColumnPinning(\n defaultState\n ? getDefaultColumnPinningState()\n : table.initialState?.columnPinning ?? getDefaultColumnPinningState()\n )\n\n table.getIsSomeColumnsPinned = position => {\n const pinningState = table.getState().columnPinning\n\n if (!position) {\n return Boolean(pinningState.left?.length || pinningState.right?.length)\n }\n return Boolean(pinningState[position]?.length)\n }\n\n table.getLeftLeafColumns = memo(\n () => [table.getAllLeafColumns(), table.getState().columnPinning.left],\n (allColumns, left) => {\n return (left ?? [])\n .map(columnId => allColumns.find(column => column.id === columnId)!)\n .filter(Boolean)\n },\n getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns')\n )\n\n table.getRightLeafColumns = memo(\n () => [table.getAllLeafColumns(), table.getState().columnPinning.right],\n (allColumns, right) => {\n return (right ?? [])\n .map(columnId => allColumns.find(column => column.id === columnId)!)\n .filter(Boolean)\n },\n getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns')\n )\n\n table.getCenterLeafColumns = memo(\n () => [\n table.getAllLeafColumns(),\n table.getState().columnPinning.left,\n table.getState().columnPinning.right,\n ],\n (allColumns, left, right) => {\n const leftAndRight: string[] = [...(left ?? []), ...(right ?? [])]\n\n return allColumns.filter(d => !leftAndRight.includes(d.id))\n },\n getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns')\n )\n },\n}\n","export function safelyAccessDocument(_document?: Document): Document | null {\n return _document || (typeof document !== 'undefined' ? document : null)\n}\n\nexport function safelyAccessDocumentEvent(event: Event): Document | null {\n return !!event &&\n !!event.target &&\n typeof event.target === 'object' &&\n 'ownerDocument' in event.target\n ? (event.target.ownerDocument as Document | null)\n : null\n}\n","import { _getVisibleLeafColumns } from '..'\nimport {\n RowData,\n Column,\n Header,\n OnChangeFn,\n Table,\n Updater,\n TableFeature,\n} from '../types'\nimport { getMemoOptions, makeStateUpdater, memo } from '../utils'\nimport { ColumnPinningPosition } from './ColumnPinning'\nimport { safelyAccessDocument } from '../utils/document'\n\n//\n\nexport interface ColumnSizingTableState {\n columnSizing: ColumnSizingState\n columnSizingInfo: ColumnSizingInfoState\n}\n\nexport type ColumnSizingState = Record<string, number>\n\nexport interface ColumnSizingInfoState {\n columnSizingStart: [string, number][]\n deltaOffset: null | number\n deltaPercentage: null | number\n isResizingColumn: false | string\n startOffset: null | number\n startSize: null | number\n}\n\nexport type ColumnResizeMode = 'onChange' | 'onEnd'\n\nexport type ColumnResizeDirection = 'ltr' | 'rtl'\n\nexport interface ColumnSizingOptions {\n /**\n * Determines when the columnSizing state is updated. `onChange` updates the state when the user is dragging the resize handle. `onEnd` updates the state when the user releases the resize handle.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#columnresizemode)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n columnResizeMode?: ColumnResizeMode\n /**\n * Enables or disables column resizing for the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#enablecolumnresizing)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n enableColumnResizing?: boolean\n /**\n * Enables or disables right-to-left support for resizing the column. defaults to 'ltr'.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#columnResizeDirection)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n columnResizeDirection?: ColumnResizeDirection\n /**\n * If provided, this function will be called with an `updaterFn` when `state.columnSizing` changes. This overrides the default internal state management, so you will also need to supply `state.columnSizing` from your own managed state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#oncolumnsizingchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n onColumnSizingChange?: OnChangeFn<ColumnSizingState>\n /**\n * If provided, this function will be called with an `updaterFn` when `state.columnSizingInfo` changes. This overrides the default internal state management, so you will also need to supply `state.columnSizingInfo` from your own managed state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#oncolumnsizinginfochange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n onColumnSizingInfoChange?: OnChangeFn<ColumnSizingInfoState>\n}\n\nexport type ColumnSizingDefaultOptions = Pick<\n ColumnSizingOptions,\n | 'columnResizeMode'\n | 'onColumnSizingChange'\n | 'onColumnSizingInfoChange'\n | 'columnResizeDirection'\n>\n\nexport interface ColumnSizingInstance {\n /**\n * If pinning, returns the total size of the center portion of the table by calculating the sum of the sizes of all unpinned/center leaf-columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getcentertotalsize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getCenterTotalSize: () => number\n /**\n * Returns the total size of the left portion of the table by calculating the sum of the sizes of all left leaf-columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getlefttotalsize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getLeftTotalSize: () => number\n /**\n * Returns the total size of the right portion of the table by calculating the sum of the sizes of all right leaf-columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getrighttotalsize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getRightTotalSize: () => number\n /**\n * Returns the total size of the table by calculating the sum of the sizes of all leaf-columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#gettotalsize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getTotalSize: () => number\n /**\n * Resets column sizing to its initial state. If `defaultState` is `true`, the default state for the table will be used instead of the initialValue provided to the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#resetcolumnsizing)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n resetColumnSizing: (defaultState?: boolean) => void\n /**\n * Resets column sizing info to its initial state. If `defaultState` is `true`, the default state for the table will be used instead of the initialValue provided to the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#resetheadersizeinfo)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n resetHeaderSizeInfo: (defaultState?: boolean) => void\n /**\n * Sets the column sizing state using an updater function or a value. This will trigger the underlying `onColumnSizingChange` function if one is passed to the table options, otherwise the state will be managed automatically by the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#setcolumnsizing)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n setColumnSizing: (updater: Updater<ColumnSizingState>) => void\n /**\n * Sets the column sizing info state using an updater function or a value. This will trigger the underlying `onColumnSizingInfoChange` function if one is passed to the table options, otherwise the state will be managed automatically by the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#setcolumnsizinginfo)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n setColumnSizingInfo: (updater: Updater<ColumnSizingInfoState>) => void\n}\n\nexport interface ColumnSizingColumnDef {\n /**\n * Enables or disables column resizing for the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#enableresizing)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n enableResizing?: boolean\n /**\n * The maximum allowed size for the column\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#maxsize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n maxSize?: number\n /**\n * The minimum allowed size for the column\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#minsize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n minSize?: number\n /**\n * The desired size for the column\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#size)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n size?: number\n}\n\nexport interface ColumnSizingColumn {\n /**\n * Returns `true` if the column can be resized.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getcanresize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getCanResize: () => boolean\n /**\n * Returns `true` if the column is currently being resized.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getisresizing)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getIsResizing: () => boolean\n /**\n * Returns the current size of the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getsize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getSize: () => number\n /**\n * Returns the offset measurement along the row-axis (usually the x-axis for standard tables) for the header. This is effectively a sum of the offset measurements of all preceding (left) headers in relation to the current column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getstart)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getStart: (position?: ColumnPinningPosition | 'center') => number\n /**\n * Returns the offset measurement along the row-axis (usually the x-axis for standard tables) for the header. This is effectively a sum of the offset measurements of all succeeding (right) headers in relation to the current column.\n */\n getAfter: (position?: ColumnPinningPosition | 'center') => number\n /**\n * Resets the column to its initial size.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#resetsize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n resetSize: () => void\n}\n\nexport interface ColumnSizingHeader {\n /**\n * Returns an event handler function that can be used to resize the header. It can be used as an:\n * - `onMouseDown` handler\n * - `onTouchStart` handler\n *\n * The dragging and release events are automatically handled for you.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getresizehandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getResizeHandler: (context?: Document) => (event: unknown) => void\n /**\n * Returns the current size of the header.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getsize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getSize: () => number\n /**\n * Returns the offset measurement along the row-axis (usually the x-axis for standard tables) for the header. This is effectively a sum of the offset measurements of all preceding headers.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getstart)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getStart: (position?: ColumnPinningPosition) => number\n}\n\n//\n\nexport const defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER,\n}\n\nconst getDefaultColumnSizingInfoState = (): ColumnSizingInfoState => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: [],\n})\n\nexport const ColumnSizing: TableFeature = {\n getDefaultColumnDef: (): ColumnSizingColumnDef => {\n return defaultColumnSizing\n },\n getInitialState: (state): ColumnSizingTableState => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): ColumnSizingDefaultOptions => {\n return {\n columnResizeMode: 'onEnd',\n columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table),\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): void => {\n column.getSize = () => {\n const columnSize = table.getState().columnSizing[column.id]\n\n return Math.min(\n Math.max(\n column.columnDef.minSize ?? defaultColumnSizing.minSize,\n columnSize ?? column.columnDef.size ?? defaultColumnSizing.size\n ),\n column.columnDef.maxSize ?? defaultColumnSizing.maxSize\n )\n }\n\n column.getStart = memo(\n position => [\n position,\n _getVisibleLeafColumns(table, position),\n table.getState().columnSizing,\n ],\n (position, columns) =>\n columns\n .slice(0, column.getIndex(position))\n .reduce((sum, column) => sum + column.getSize(), 0),\n getMemoOptions(table.options, 'debugColumns', 'getStart')\n )\n\n column.getAfter = memo(\n position => [\n position,\n _getVisibleLeafColumns(table, position),\n table.getState().columnSizing,\n ],\n (position, columns) =>\n columns\n .slice(column.getIndex(position) + 1)\n .reduce((sum, column) => sum + column.getSize(), 0),\n getMemoOptions(table.options, 'debugColumns', 'getAfter')\n )\n\n column.resetSize = () => {\n table.setColumnSizing(({ [column.id]: _, ...rest }) => {\n return rest\n })\n }\n column.getCanResize = () => {\n return (\n (column.columnDef.enableResizing ?? true) &&\n (table.options.enableColumnResizing ?? true)\n )\n }\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id\n }\n },\n\n createHeader: <TData extends RowData, TValue>(\n header: Header<TData, TValue>,\n table: Table<TData>\n ): void => {\n header.getSize = () => {\n let sum = 0\n\n const recurse = (header: Header<TData, TValue>) => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse)\n } else {\n sum += header.column.getSize() ?? 0\n }\n }\n\n recurse(header)\n\n return sum\n }\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1]!\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize()\n }\n\n return 0\n }\n header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id)\n const canResize = column?.getCanResize()\n\n return (e: unknown) => {\n if (!column || !canResize) {\n return\n }\n\n ;(e as any).persist?.()\n\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return\n }\n }\n\n const startSize = header.getSize()\n\n const columnSizingStart: [string, number][] = header\n ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()])\n : [[column.id, column.getSize()]]\n\n const clientX = isTouchStartEvent(e)\n ? Math.round(e.touches[0]!.clientX)\n : (e as MouseEvent).clientX\n\n const newColumnSizing: ColumnSizingState = {}\n\n const updateOffset = (\n eventType: 'move' | 'end',\n clientXPos?: number\n ) => {\n if (typeof clientXPos !== 'number') {\n return\n }\n\n table.setColumnSizingInfo(old => {\n const deltaDirection =\n table.options.columnResizeDirection === 'rtl' ? -1 : 1\n const deltaOffset =\n (clientXPos - (old?.startOffset ?? 0)) * deltaDirection\n const deltaPercentage = Math.max(\n deltaOffset / (old?.startSize ?? 0),\n -0.999999\n )\n\n old.columnSizingStart.forEach(([columnId, headerSize]) => {\n newColumnSizing[columnId] =\n Math.round(\n Math.max(headerSize + headerSize * deltaPercentage, 0) * 100\n ) / 100\n })\n\n return {\n ...old,\n deltaOffset,\n deltaPercentage,\n }\n })\n\n if (\n table.options.columnResizeMode === 'onChange' ||\n eventType === 'end'\n ) {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing,\n }))\n }\n }\n\n const onMove = (clientXPos?: number) => updateOffset('move', clientXPos)\n\n const onEnd = (clientXPos?: number) => {\n updateOffset('end', clientXPos)\n\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: [],\n }))\n }\n\n const contextDocument = safelyAccessDocument(_contextDocument)\n\n const mouseEvents = {\n moveHandler: (e: MouseEvent) => onMove(e.clientX),\n upHandler: (e: MouseEvent) => {\n contextDocument?.removeEventListener(\n 'mousemove',\n mouseEvents.moveHandler\n )\n contextDocument?.removeEventListener(\n 'mouseup',\n mouseEvents.upHandler\n )\n onEnd(e.clientX)\n },\n }\n\n const touchEvents = {\n moveHandler: (e: TouchEvent) => {\n if (e.cancelable) {\n e.preventDefault()\n e.stopPropagation()\n }\n onMove(e.touches[0]!.clientX)\n return false\n },\n upHandler: (e: TouchEvent) => {\n contextDocument?.removeEventListener(\n 'touchmove',\n touchEvents.moveHandler\n )\n contextDocument?.removeEventListener(\n 'touchend',\n touchEvents.upHandler\n )\n if (e.cancelable) {\n e.preventDefault()\n e.stopPropagation()\n }\n onEnd(e.touches[0]?.clientX)\n },\n }\n\n const passiveIfSupported = passiveEventSupported()\n ? { passive: false }\n : false\n\n if (isTouchStartEvent(e)) {\n contextDocument?.addEventListener(\n 'touchmove',\n touchEvents.moveHandler,\n passiveIfSupported\n )\n contextDocument?.addEventListener(\n 'touchend',\n touchEvents.upHandler,\n passiveIfSupported\n )\n } else {\n contextDocument?.addEventListener(\n 'mousemove',\n mouseEvents.moveHandler,\n passiveIfSupported\n )\n contextDocument?.addEventListener(\n 'mouseup',\n mouseEvents.upHandler,\n passiveIfSupported\n )\n }\n\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id,\n }))\n }\n }\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table.setColumnSizing = updater =>\n table.options.onColumnSizingChange?.(updater)\n table.setColumnSizingInfo = updater =>\n table.options.onColumnSizingInfoChange?.(updater)\n table.resetColumnSizing = defaultState => {\n table.setColumnSizing(\n defaultState ? {} : table.initialState.columnSizing ?? {}\n )\n }\n table.resetHeaderSizeInfo = defaultState => {\n table.setColumnSizingInfo(\n defaultState\n ? getDefaultColumnSizingInfoState()\n : table.initialState.columnSizingInfo ??\n getDefaultColumnSizingInfoState()\n )\n }\n table.getTotalSize = () =>\n table.getHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize()\n }, 0) ?? 0\n table.getLeftTotalSize = () =>\n table.getLeftHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize()\n }, 0) ?? 0\n table.getCenterTotalSize = () =>\n table.getCenterHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize()\n }, 0) ?? 0\n table.getRightTotalSize = () =>\n table.getRightHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize()\n }, 0) ?? 0\n },\n}\n\nlet passiveSupported: boolean | null = null\nexport function passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported\n\n let supported = false\n try {\n const options = {\n get passive() {\n supported = true\n return false\n },\n }\n\n const noop = () => {}\n\n window.addEventListener('test', noop, options)\n window.removeEventListener('test', noop)\n } catch (err) {\n supported = false\n }\n passiveSupported = supported\n return passiveSupported\n}\n\nfunction isTouchStartEvent(e: unknown): e is TouchEvent {\n return (e as TouchEvent).type === 'touchstart'\n}\n","import { ColumnPinningPosition } from '..'\nimport {\n Cell,\n Column,\n OnChangeFn,\n Table,\n Updater,\n Row,\n RowData,\n TableFeature,\n} from '../types'\nimport { getMemoOptions, makeStateUpdater, memo } from '../utils'\n\nexport type VisibilityState = Record<string, boolean>\n\nexport interface VisibilityTableState {\n columnVisibility: VisibilityState\n}\n\nexport interface VisibilityOptions {\n /**\n * Whether to enable column hiding. Defaults to `true`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#enablehiding)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n enableHiding?: boolean\n /**\n * If provided, this function will be called with an `updaterFn` when `state.columnVisibility` changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#oncolumnvisibilitychange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n onColumnVisibilityChange?: OnChangeFn<VisibilityState>\n}\n\nexport type VisibilityDefaultOptions = Pick<\n VisibilityOptions,\n 'onColumnVisibilityChange'\n>\n\nexport interface VisibilityInstance<TData extends RowData> {\n /**\n * If column pinning, returns a flat array of leaf-node columns that are visible in the unpinned/center portion of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getcentervisibleleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getCenterVisibleLeafColumns: () => Column<TData, unknown>[]\n /**\n * Returns whether all columns are visible\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getisallcolumnsvisible)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getIsAllColumnsVisible: () => boolean\n /**\n * Returns whether any columns are visible\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getissomecolumnsvisible)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getIsSomeColumnsVisible: () => boolean\n /**\n * If column pinning, returns a flat array of leaf-node columns that are visible in the left portion of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getleftvisibleleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getLeftVisibleLeafColumns: () => Column<TData, unknown>[]\n /**\n * If column pinning, returns a flat array of leaf-node columns that are visible in the right portion of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getrightvisibleleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getRightVisibleLeafColumns: () => Column<TData, unknown>[]\n /**\n * Returns a handler for toggling the visibility of all columns, meant to be bound to a `input[type=checkbox]` element.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#gettoggleallcolumnsvisibilityhandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getToggleAllColumnsVisibilityHandler: () => (event: unknown) => void\n /**\n * Returns a flat array of columns that are visible, including parent columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getvisibleflatcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getVisibleFlatColumns: () => Column<TData, unknown>[]\n /**\n * Returns a flat array of leaf-node columns that are visible.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getvisibleleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getVisibleLeafColumns: () => Column<TData, unknown>[]\n /**\n * Resets the column visibility state to the initial state. If `defaultState` is provided, the state will be reset to `{}`\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#resetcolumnvisibility)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n resetColumnVisibility: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.columnVisibility` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#setcolumnvisibility)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n setColumnVisibility: (updater: Updater<VisibilityState>) => void\n /**\n * Toggles the visibility of all columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#toggleallcolumnsvisible)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n toggleAllColumnsVisible: (value?: boolean) => void\n}\n\nexport interface VisibilityColumnDef {\n enableHiding?: boolean\n}\n\nexport interface VisibilityRow<TData extends RowData> {\n _getAllVisibleCells: () => Cell<TData, unknown>[]\n /**\n * Returns an array of cells that account for column visibility for the row.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getvisiblecells)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getVisibleCells: () => Cell<TData, unknown>[]\n}\n\nexport interface VisibilityColumn {\n /**\n * Returns whether the column can be hidden\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getcanhide)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getCanHide: () => boolean\n /**\n * Returns whether the column is visible\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getisvisible)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getIsVisible: () => boolean\n /**\n * Returns a function that can be used to toggle the column visibility. This function can be used to bind to an event handler to a checkbox.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#gettogglevisibilityhandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getToggleVisibilityHandler: () => (event: unknown) => void\n /**\n * Toggles the visibility of the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#togglevisibility)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n toggleVisibility: (value?: boolean) => void\n}\n\n//\n\nexport const ColumnVisibility: TableFeature = {\n getInitialState: (state): VisibilityTableState => {\n return {\n columnVisibility: {},\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): VisibilityDefaultOptions => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table),\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): void => {\n column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value ?? !column.getIsVisible(),\n }))\n }\n }\n column.getIsVisible = () => {\n const childColumns = column.columns\n return (\n (childColumns.length\n ? childColumns.some(c => c.getIsVisible())\n : table.getState().columnVisibility?.[column.id]) ?? true\n )\n }\n\n column.getCanHide = () => {\n return (\n (column.columnDef.enableHiding ?? true) &&\n (table.options.enableHiding ?? true)\n )\n }\n column.getToggleVisibilityHandler = () => {\n return (e: unknown) => {\n column.toggleVisibility?.(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): void => {\n row._getAllVisibleCells = memo(\n () => [row.getAllCells(), table.getState().columnVisibility],\n cells => {\n return cells.filter(cell => cell.column.getIsVisible())\n },\n getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells')\n )\n row.getVisibleCells = memo(\n () => [\n row.getLeftVisibleCells(),\n row.getCenterVisibleCells(),\n row.getRightVisibleCells(),\n ],\n (left, center, right) => [...left, ...center, ...right],\n getMemoOptions(table.options, 'debugRows', 'getVisibleCells')\n )\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n const makeVisibleColumnsMethod = (\n key: string,\n getColumns: () => Column<TData, unknown>[]\n ): (() => Column<TData, unknown>[]) => {\n return memo(\n () => [\n getColumns(),\n getColumns()\n .filter(d => d.getIsVisible())\n .map(d => d.id)\n .join('_'),\n ],\n columns => {\n return columns.filter(d => d.getIsVisible?.())\n },\n getMemoOptions(table.options, 'debugColumns', key)\n )\n }\n\n table.getVisibleFlatColumns = makeVisibleColumnsMethod(\n 'getVisibleFlatColumns',\n () => table.getAllFlatColumns()\n )\n table.getVisibleLeafColumns = makeVisibleColumnsMethod(\n 'getVisibleLeafColumns',\n () => table.getAllLeafColumns()\n )\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod(\n 'getLeftVisibleLeafColumns',\n () => table.getLeftLeafColumns()\n )\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod(\n 'getRightVisibleLeafColumns',\n () => table.getRightLeafColumns()\n )\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod(\n 'getCenterVisibleLeafColumns',\n () => table.getCenterLeafColumns()\n )\n\n table.setColumnVisibility = updater =>\n table.options.onColumnVisibilityChange?.(updater)\n\n table.resetColumnVisibility = defaultState => {\n table.setColumnVisibility(\n defaultState ? {} : table.initialState.columnVisibility ?? {}\n )\n }\n\n table.toggleAllColumnsVisible = value => {\n value = value ?? !table.getIsAllColumnsVisible()\n\n table.setColumnVisibility(\n table.getAllLeafColumns().reduce(\n (obj, column) => ({\n ...obj,\n [column.id]: !value ? !column.getCanHide?.() : value,\n }),\n {}\n )\n )\n }\n\n table.getIsAllColumnsVisible = () =>\n !table.getAllLeafColumns().some(column => !column.getIsVisible?.())\n\n table.getIsSomeColumnsVisible = () =>\n table.getAllLeafColumns().some(column => column.getIsVisible?.())\n\n table.getToggleAllColumnsVisibilityHandler = () => {\n return (e: unknown) => {\n table.toggleAllColumnsVisible(\n ((e as MouseEvent).target as HTMLInputElement)?.checked\n )\n }\n }\n },\n}\n\nexport function _getVisibleLeafColumns<TData extends RowData>(\n table: Table<TData>,\n position?: ColumnPinningPosition | 'center'\n) {\n return !position\n ? table.getVisibleLeafColumns()\n : position === 'center'\n ? table.getCenterVisibleLeafColumns()\n : position === 'left'\n ? table.getLeftVisibleLeafColumns()\n : table.getRightVisibleLeafColumns()\n}\n","import { RowModel } from '..'\nimport { Table, RowData, TableFeature } from '../types'\n\nexport interface GlobalFacetingInstance<TData extends RowData> {\n _getGlobalFacetedMinMaxValues?: () => undefined | [number, number]\n _getGlobalFacetedRowModel?: () => RowModel<TData>\n _getGlobalFacetedUniqueValues?: () => Map<any, number>\n /**\n * Currently, this function returns the built-in `includesString` filter function. In future releases, it may return more dynamic filter functions based on the nature of the data provided.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-faceting#getglobalautofilterfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-faceting)\n */\n getGlobalFacetedMinMaxValues: () => undefined | [number, number]\n /**\n * Returns the row model for the table after **global** filtering has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-faceting#getglobalfacetedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-faceting)\n */\n getGlobalFacetedRowModel: () => RowModel<TData>\n /**\n * Returns the faceted unique values for the global filter.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-faceting#getglobalfaceteduniquevalues)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-faceting)\n */\n getGlobalFacetedUniqueValues: () => Map<any, number>\n}\n\n//\n\nexport const GlobalFaceting: TableFeature = {\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table._getGlobalFacetedRowModel =\n table.options.getFacetedRowModel &&\n table.options.getFacetedRowModel(table, '__global__')\n\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel()\n }\n\n return table._getGlobalFacetedRowModel()\n }\n\n table._getGlobalFacetedUniqueValues =\n table.options.getFacetedUniqueValues &&\n table.options.getFacetedUniqueValues(table, '__global__')\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map()\n }\n\n return table._getGlobalFacetedUniqueValues()\n }\n\n table._getGlobalFacetedMinMaxValues =\n table.options.getFacetedMinMaxValues &&\n table.options.getFacetedMinMaxValues(table, '__global__')\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return\n }\n\n return table._getGlobalFacetedMinMaxValues()\n }\n },\n}\n","import { FilterFn, FilterFnOption } from '..'\nimport { BuiltInFilterFn, filterFns } from '../filterFns'\nimport {\n Column,\n OnChangeFn,\n Table,\n Updater,\n RowData,\n TableFeature,\n} from '../types'\nimport { isFunction, makeStateUpdater } from '../utils'\n\nexport interface GlobalFilterTableState {\n globalFilter: any\n}\n\nexport interface GlobalFilterColumnDef {\n /**\n * Enables/disables the **global** filter for this column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#enableglobalfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n enableGlobalFilter?: boolean\n}\n\nexport interface GlobalFilterColumn {\n /**\n * Returns whether or not the column can be **globally** filtered. Set to `false` to disable a column from being scanned during global filtering.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#getcanglobalfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n getCanGlobalFilter: () => boolean\n}\n\nexport interface GlobalFilterOptions<TData extends RowData> {\n /**\n * Enables/disables **global** filtering for all columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#enableglobalfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n enableGlobalFilter?: boolean\n /**\n * If provided, this function will be called with the column and should return `true` or `false` to indicate whether this column should be used for global filtering.\n *\n * This is useful if the column can contain data that is not `string` or `number` (i.e. `undefined`).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#getcolumncanglobalfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n getColumnCanGlobalFilter?: (column: Column<TData, unknown>) => boolean\n /**\n * The filter function to use for global filtering.\n * - A `string` referencing a built-in filter function\n * - A `string` that references a custom filter functions provided via the `tableOptions.filterFns` option\n * - A custom filter function\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#globalfilterfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n globalFilterFn?: FilterFnOption<TData>\n /**\n * If provided, this function will be called with an `updaterFn` when `state.globalFilter` changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#onglobalfilterchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n onGlobalFilterChange?: OnChangeFn<any>\n}\n\nexport interface GlobalFilterInstance<TData extends RowData> {\n /**\n * Currently, this function returns the built-in `includesString` filter function. In future releases, it may return more dynamic filter functions based on the nature of the data provided.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#getglobalautofilterfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n getGlobalAutoFilterFn: () => FilterFn<TData> | undefined\n /**\n * Returns the filter function (either user-defined or automatic, depending on configuration) for the global filter.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#getglobalfilterfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n getGlobalFilterFn: () => FilterFn<TData> | undefined\n /**\n * Resets the **globalFilter** state to `initialState.globalFilter`, or `true` can be passed to force a default blank state reset to `undefined`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#resetglobalfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n resetGlobalFilter: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.globalFilter` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#setglobalfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n setGlobalFilter: (updater: Updater<any>) => void\n}\n\n//\n\nexport const GlobalFiltering: TableFeature = {\n getInitialState: (state): GlobalFilterTableState => {\n return {\n globalFilter: undefined,\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): GlobalFilterOptions<TData> => {\n return {\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n const value = table\n .getCoreRowModel()\n .flatRows[0]?._getAllCellsByColumnId()\n [column.id]?.getValue()\n\n return typeof value === 'string' || typeof value === 'number'\n },\n } as GlobalFilterOptions<TData>\n },\n\n createColumn: <TData extends RowData>(\n column: Column<TData, unknown>,\n table: Table<TData>\n ): void => {\n column.getCanGlobalFilter = () => {\n return (\n (column.columnDef.enableGlobalFilter ?? true) &&\n (table.options.enableGlobalFilter ?? true) &&\n (table.options.enableFilters ?? true) &&\n (table.options.getColumnCanGlobalFilter?.(column) ?? true) &&\n !!column.accessorFn\n )\n }\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString\n }\n\n table.getGlobalFilterFn = () => {\n const { globalFilterFn: globalFilterFn } = table.options\n\n return isFunction(globalFilterFn)\n ? globalFilterFn\n : globalFilterFn === 'auto'\n ? table.getGlobalAutoFilterFn()\n : table.options.filterFns?.[globalFilterFn as string] ??\n filterFns[globalFilterFn as BuiltInFilterFn]\n }\n\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange?.(updater)\n }\n\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(\n defaultState ? undefined : table.initialState.globalFilter\n )\n }\n },\n}\n","import { RowModel } from '..'\nimport {\n OnChangeFn,\n Table,\n Row,\n Updater,\n RowData,\n TableFeature,\n} from '../types'\nimport { makeStateUpdater } from '../utils'\n\nexport type ExpandedStateList = Record<string, boolean>\nexport type ExpandedState = true | Record<string, boolean>\nexport interface ExpandedTableState {\n expanded: ExpandedState\n}\n\nexport interface ExpandedRow {\n /**\n * Returns whether the row can be expanded.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getcanexpand)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getCanExpand: () => boolean\n /**\n * Returns whether all parent rows of the row are expanded.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getisallparentsexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getIsAllParentsExpanded: () => boolean\n /**\n * Returns whether the row is expanded.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getisexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getIsExpanded: () => boolean\n /**\n * Returns a function that can be used to toggle the expanded state of the row. This function can be used to bind to an event handler to a button.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#gettoggleexpandedhandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getToggleExpandedHandler: () => () => void\n /**\n * Toggles the expanded state (or sets it if `expanded` is provided) for the row.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#toggleexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n toggleExpanded: (expanded?: boolean) => void\n}\n\nexport interface ExpandedOptions<TData extends RowData> {\n /**\n * Enable this setting to automatically reset the expanded state of the table when expanding state changes.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#autoresetexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n autoResetExpanded?: boolean\n /**\n * Enable/disable expanding for all rows.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#enableexpanding)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n enableExpanding?: boolean\n /**\n * This function is responsible for returning the expanded row model. If this function is not provided, the table will not expand rows. You can use the default exported `getExpandedRowModel` function to get the expanded row model or implement your own.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getexpandedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getExpandedRowModel?: (table: Table<any>) => () => RowModel<any>\n /**\n * If provided, allows you to override the default behavior of determining whether a row is currently expanded.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getisrowexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getIsRowExpanded?: (row: Row<TData>) => boolean\n /**\n * If provided, allows you to override the default behavior of determining whether a row can be expanded.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getrowcanexpand)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getRowCanExpand?: (row: Row<TData>) => boolean\n /**\n * Enables manual row expansion. If this is set to `true`, `getExpandedRowModel` will not be used to expand rows and you would be expected to perform the expansion in your own data model. This is useful if you are doing server-side expansion.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#manualexpanding)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n manualExpanding?: boolean\n /**\n * This function is called when the `expanded` table state changes. If a function is provided, you will be responsible for managing this state on your own. To pass the managed state back to the table, use the `tableOptions.state.expanded` option.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#onexpandedchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n onExpandedChange?: OnChangeFn<ExpandedState>\n /**\n * If `true` expanded rows will be paginated along with the rest of the table (which means expanded rows may span multiple pages). If `false` expanded rows will not be considered for pagination (which means expanded rows will always render on their parents page. This also means more rows will be rendered than the set page size)\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#paginateexpandedrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n paginateExpandedRows?: boolean\n}\n\nexport interface ExpandedInstance<TData extends RowData> {\n _autoResetExpanded: () => void\n _getExpandedRowModel?: () => RowModel<TData>\n /**\n * Returns whether there are any rows that can be expanded.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getcansomerowsexpand)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getCanSomeRowsExpand: () => boolean\n /**\n * Returns the maximum depth of the expanded rows.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getexpandeddepth)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getExpandedDepth: () => number\n /**\n * Returns the row model after expansion has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getexpandedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getExpandedRowModel: () => RowModel<TData>\n /**\n * Returns whether all rows are currently expanded.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getisallrowsexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getIsAllRowsExpanded: () => boolean\n /**\n * Returns whether there are any rows that are currently expanded.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getissomerowsexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getIsSomeRowsExpanded: () => boolean\n /**\n * Returns the row model before expansion has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getpreexpandedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getPreExpandedRowModel: () => RowModel<TData>\n /**\n * Returns a handler that can be used to toggle the expanded state of all rows. This handler is meant to be used with an `input[type=checkbox]` element.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#gettoggleallrowsexpandedhandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getToggleAllRowsExpandedHandler: () => (event: unknown) => void\n /**\n * Resets the expanded state of the table to the initial state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#resetexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n resetExpanded: (defaultState?: boolean) => void\n /**\n * Updates the expanded state of the table via an update function or value.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#setexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n setExpanded: (updater: Updater<ExpandedState>) => void\n /**\n * Toggles the expanded state for all rows.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#toggleallrowsexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n toggleAllRowsExpanded: (expanded?: boolean) => void\n}\n\n//\n\nexport const RowExpanding: TableFeature = {\n getInitialState: (state): ExpandedTableState => {\n return {\n expanded: {},\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): ExpandedOptions<TData> => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true,\n }\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n let registered = false\n let queued = false\n\n table._autoResetExpanded = () => {\n if (!registered) {\n table._queue(() => {\n registered = true\n })\n return\n }\n\n if (\n table.options.autoResetAll ??\n table.options.autoResetExpanded ??\n !table.options.manualExpanding\n ) {\n if (queued) return\n queued = true\n table._queue(() => {\n table.resetExpanded()\n queued = false\n })\n }\n }\n table.setExpanded = updater => table.options.onExpandedChange?.(updater)\n table.toggleAllRowsExpanded = expanded => {\n if (expanded ?? !table.getIsAllRowsExpanded()) {\n table.setExpanded(true)\n } else {\n table.setExpanded({})\n }\n }\n table.resetExpanded = defaultState => {\n table.setExpanded(defaultState ? {} : table.initialState?.expanded ?? {})\n }\n table.getCanSomeRowsExpand = () => {\n return table\n .getPrePaginationRowModel()\n .flatRows.some(row => row.getCanExpand())\n }\n table.getToggleAllRowsExpandedHandler = () => {\n return (e: unknown) => {\n ;(e as any).persist?.()\n table.toggleAllRowsExpanded()\n }\n }\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded\n return expanded === true || Object.values(expanded).some(Boolean)\n }\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true\n }\n\n if (!Object.keys(expanded).length) {\n return false\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false\n }\n\n // They must all be expanded :shrug:\n return true\n }\n table.getExpandedDepth = () => {\n let maxDepth = 0\n\n const rowIds =\n table.getState().expanded === true\n ? Object.keys(table.getRowModel().rowsById)\n : Object.keys(table.getState().expanded)\n\n rowIds.forEach(id => {\n const splitId = id.split('.')\n maxDepth = Math.max(maxDepth, splitId.length)\n })\n\n return maxDepth\n }\n table.getPreExpandedRowModel = () => table.getSortedRowModel()\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table)\n }\n\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel()\n }\n\n return table._getExpandedRowModel()\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): void => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n const exists = old === true ? true : !!old?.[row.id]\n\n let oldExpanded: ExpandedStateList = {}\n\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true\n })\n } else {\n oldExpanded = old\n }\n\n expanded = expanded ?? !exists\n\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true,\n }\n }\n\n if (exists && !expanded) {\n const { [row.id]: _, ...rest } = oldExpanded\n return rest\n }\n\n return old\n })\n }\n row.getIsExpanded = () => {\n const expanded = table.getState().expanded\n\n return !!(\n table.options.getIsRowExpanded?.(row) ??\n (expanded === true || expanded?.[row.id])\n )\n }\n row.getCanExpand = () => {\n return (\n table.options.getRowCanExpand?.(row) ??\n ((table.options.enableExpanding ?? true) && !!row.subRows?.length)\n )\n }\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true\n let currentRow = row\n\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true)\n isFullyExpanded = currentRow.getIsExpanded()\n }\n\n return isFullyExpanded\n }\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand()\n\n return () => {\n if (!canExpand) return\n row.toggleExpanded()\n }\n }\n },\n}\n","import {\n OnChangeFn,\n Table,\n RowModel,\n Updater,\n RowData,\n TableFeature,\n} from '../types'\nimport {\n functionalUpdate,\n getMemoOptions,\n makeStateUpdater,\n memo,\n} from '../utils'\n\nexport interface PaginationState {\n pageIndex: number\n pageSize: number\n}\n\nexport interface PaginationTableState {\n pagination: PaginationState\n}\n\nexport interface PaginationInitialTableState {\n pagination?: Partial<PaginationState>\n}\n\nexport interface PaginationOptions {\n /**\n * If set to `true`, pagination will be reset to the first page when page-altering state changes eg. `data` is updated, filters change, grouping changes, etc.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#autoresetpageindex)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n autoResetPageIndex?: boolean\n /**\n * Returns the row model after pagination has taken place, but no further.\n *\n * Pagination columns are automatically reordered by default to the start of the columns list. If you would rather remove them or leave them as-is, set the appropriate mode here.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#getpaginationrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n getPaginationRowModel?: (table: Table<any>) => () => RowModel<any>\n /**\n * Enables manual pagination. If this option is set to `true`, the table will not automatically paginate rows using `getPaginationRowModel()` and instead will expect you to manually paginate the rows before passing them to the table. This is useful if you are doing server-side pagination and aggregation.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#manualpagination)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n manualPagination?: boolean\n /**\n * If this function is provided, it will be called when the pagination state changes and you will be expected to manage the state yourself. You can pass the managed state back to the table via the `tableOptions.state.pagination` option.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#onpaginationchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n onPaginationChange?: OnChangeFn<PaginationState>\n /**\n * When manually controlling pagination, you can supply a total `pageCount` value to the table if you know it (Or supply a `rowCount` and `pageCount` will be calculated). If you do not know how many pages there are, you can set this to `-1`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#pagecount)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n pageCount?: number\n /**\n * When manually controlling pagination, you can supply a total `rowCount` value to the table if you know it. The `pageCount` can be calculated from this value and the `pageSize`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#rowcount)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n rowCount?: number\n}\n\nexport interface PaginationDefaultOptions {\n onPaginationChange: OnChangeFn<PaginationState>\n}\n\nexport interface PaginationInstance<TData extends RowData> {\n _autoResetPageIndex: () => void\n _getPaginationRowModel?: () => RowModel<TData>\n /**\n * Returns whether the table can go to the next page.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#getcannextpage)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n getCanNextPage: () => boolean\n /**\n * Returns whether the table can go to the previous page.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#getcanpreviouspage)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n getCanPreviousPage: () => boolean\n /**\n * Returns the page count. If manually paginating or controlling the pagination state, this will come directly from the `options.pageCount` table option, otherwise it will be calculated from the table data using the total row count and current page size.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#getpagecount)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n getPageCount: () => number\n /**\n * Returns the row count. If manually paginating or controlling the pagination state, this will come directly from the `options.rowCount` table option, otherwise it will be calculated from the table data.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#getrowcount)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n getRowCount: () => number\n /**\n * Returns an array of page options (zero-index-based) for the current page size.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#getpageoptions)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n getPageOptions: () => number[]\n /**\n * Returns the row model for the table after pagination has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#getpaginationrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n getPaginationRowModel: () => RowModel<TData>\n /**\n * Returns the row model for the table before any pagination has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#getprepaginationrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n getPrePaginationRowModel: () => RowModel<TData>\n /**\n * Increments the page index by one, if possible.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#nextpage)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n nextPage: () => void\n /**\n * Decrements the page index by one, if possible.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#previouspage)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n previousPage: () => void\n /**\n * Sets the page index to `0`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#firstpage)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n firstPage: () => void\n /**\n * Sets the page index to the last page.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#lastpage)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n lastPage: () => void\n /**\n * Resets the page index to its initial state. If `defaultState` is `true`, the page index will be reset to `0` regardless of initial state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#resetpageindex)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n resetPageIndex: (defaultState?: boolean) => void\n /**\n * Resets the page size to its initial state. If `defaultState` is `true`, the page size will be reset to `10` regardless of initial state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#resetpagesize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n resetPageSize: (defaultState?: boolean) => void\n /**\n * Resets the **pagination** state to `initialState.pagination`, or `true` can be passed to force a default blank state reset to `[]`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#resetpagination)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n resetPagination: (defaultState?: boolean) => void\n /**\n * @deprecated The page count no longer exists in the pagination state. Just pass as a table option instead.\n */\n setPageCount: (updater: Updater<number>) => void\n /**\n * Updates the page index using the provided function or value in the `state.pagination.pageIndex` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#setpageindex)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n setPageIndex: (updater: Updater<number>) => void\n /**\n * Updates the page size using the provided function or value in the `state.pagination.pageSize` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#setpagesize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n setPageSize: (updater: Updater<number>) => void\n /**\n * Sets or updates the `state.pagination` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#setpagination)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n setPagination: (updater: Updater<PaginationState>) => void\n}\n\n//\n\nconst defaultPageIndex = 0\nconst defaultPageSize = 10\n\nconst getDefaultPaginationState = (): PaginationState => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize,\n})\n\nexport const RowPagination: TableFeature = {\n getInitialState: (state): PaginationTableState => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...state?.pagination,\n },\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): PaginationDefaultOptions => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table),\n }\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n let registered = false\n let queued = false\n\n table._autoResetPageIndex = () => {\n if (!registered) {\n table._queue(() => {\n registered = true\n })\n return\n }\n\n if (\n table.options.autoResetAll ??\n table.options.autoResetPageIndex ??\n !table.options.manualPagination\n ) {\n if (queued) return\n queued = true\n table._queue(() => {\n table.resetPageIndex()\n queued = false\n })\n }\n }\n table.setPagination = updater => {\n const safeUpdater: Updater<PaginationState> = old => {\n let newState = functionalUpdate(updater, old)\n\n return newState\n }\n\n return table.options.onPaginationChange?.(safeUpdater)\n }\n table.resetPagination = defaultState => {\n table.setPagination(\n defaultState\n ? getDefaultPaginationState()\n : table.initialState.pagination ?? getDefaultPaginationState()\n )\n }\n table.setPageIndex = updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex)\n\n const maxPageIndex =\n typeof table.options.pageCount === 'undefined' ||\n table.options.pageCount === -1\n ? Number.MAX_SAFE_INTEGER\n : table.options.pageCount - 1\n\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex))\n\n return {\n ...old,\n pageIndex,\n }\n })\n }\n table.resetPageIndex = defaultState => {\n table.setPageIndex(\n defaultState\n ? defaultPageIndex\n : table.initialState?.pagination?.pageIndex ?? defaultPageIndex\n )\n }\n table.resetPageSize = defaultState => {\n table.setPageSize(\n defaultState\n ? defaultPageSize\n : table.initialState?.pagination?.pageSize ?? defaultPageSize\n )\n }\n table.setPageSize = updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize))\n const topRowIndex = old.pageSize * old.pageIndex!\n const pageIndex = Math.floor(topRowIndex / pageSize)\n\n return {\n ...old,\n pageIndex,\n pageSize,\n }\n })\n }\n //deprecated\n table.setPageCount = updater =>\n table.setPagination(old => {\n let newPageCount = functionalUpdate(\n updater,\n table.options.pageCount ?? -1\n )\n\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount)\n }\n\n return {\n ...old,\n pageCount: newPageCount,\n }\n })\n\n table.getPageOptions = memo(\n () => [table.getPageCount()],\n pageCount => {\n let pageOptions: number[] = []\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i)\n }\n return pageOptions\n },\n getMemoOptions(table.options, 'debugTable', 'getPageOptions')\n )\n\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0\n\n table.getCanNextPage = () => {\n const { pageIndex } = table.getState().pagination\n\n const pageCount = table.getPageCount()\n\n if (pageCount === -1) {\n return true\n }\n\n if (pageCount === 0) {\n return false\n }\n\n return pageIndex < pageCount - 1\n }\n\n table.previousPage = () => {\n return table.setPageIndex(old => old - 1)\n }\n\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1\n })\n }\n\n table.firstPage = () => {\n return table.setPageIndex(0)\n }\n\n table.lastPage = () => {\n return table.setPageIndex(table.getPageCount() - 1)\n }\n\n table.getPrePaginationRowModel = () => table.getExpandedRowModel()\n table.getPaginationRowModel = () => {\n if (\n !table._getPaginationRowModel &&\n table.options.getPaginationRowModel\n ) {\n table._getPaginationRowModel =\n table.options.getPaginationRowModel(table)\n }\n\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel()\n }\n\n return table._getPaginationRowModel()\n }\n\n table.getPageCount = () => {\n return (\n table.options.pageCount ??\n Math.ceil(table.getRowCount() / table.getState().pagination.pageSize)\n )\n }\n\n table.getRowCount = () => {\n return (\n table.options.rowCount ?? table.getPrePaginationRowModel().rows.length\n )\n }\n },\n}\n","import {\n OnChangeFn,\n Updater,\n Table,\n Row,\n RowData,\n TableFeature,\n} from '../types'\nimport { getMemoOptions, makeStateUpdater, memo } from '../utils'\n\nexport type RowPinningPosition = false | 'top' | 'bottom'\n\nexport interface RowPinningState {\n bottom?: string[]\n top?: string[]\n}\n\nexport interface RowPinningTableState {\n rowPinning: RowPinningState\n}\n\nexport interface RowPinningOptions<TData extends RowData> {\n /**\n * Enables/disables row pinning for the table. Defaults to `true`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#enablerowpinning)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n enableRowPinning?: boolean | ((row: Row<TData>) => boolean)\n /**\n * When `false`, pinned rows will not be visible if they are filtered or paginated out of the table. When `true`, pinned rows will always be visible regardless of filtering or pagination. Defaults to `true`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#keeppinnedrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n keepPinnedRows?: boolean\n /**\n * If provided, this function will be called with an `updaterFn` when `state.rowPinning` changes. This overrides the default internal state management, so you will also need to supply `state.rowPinning` from your own managed state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#onrowpinningchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/onrowpinningchange)\n */\n onRowPinningChange?: OnChangeFn<RowPinningState>\n}\n\nexport interface RowPinningDefaultOptions {\n onRowPinningChange: OnChangeFn<RowPinningState>\n}\n\nexport interface RowPinningRow {\n /**\n * Returns whether or not the row can be pinned.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#getcanpin-1)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n getCanPin: () => boolean\n /**\n * Returns the pinned position of the row. (`'top'`, `'bottom'` or `false`)\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#getispinned-1)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n getIsPinned: () => RowPinningPosition\n /**\n * Returns the numeric pinned index of the row within a pinned row group.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#getpinnedindex-1)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n getPinnedIndex: () => number\n /**\n * Pins a row to the `'top'` or `'bottom'`, or unpins the row to the center if `false` is passed.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#pin-1)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n pin: (\n position: RowPinningPosition,\n includeLeafRows?: boolean,\n includeParentRows?: boolean\n ) => void\n}\n\nexport interface RowPinningInstance<TData extends RowData> {\n _getPinnedRows: (\n visiblePinnedRows: Array<Row<TData>>,\n pinnedRowIds: Array<string> | undefined,\n position: 'top' | 'bottom'\n ) => Row<TData>[]\n /**\n * Returns all bottom pinned rows.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#getbottomrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n getBottomRows: () => Row<TData>[]\n /**\n * Returns all rows that are not pinned to the top or bottom.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#getcenterrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n getCenterRows: () => Row<TData>[]\n /**\n * Returns whether or not any rows are pinned. Optionally specify to only check for pinned rows in either the `top` or `bottom` position.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#getissomerowspinned)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n getIsSomeRowsPinned: (position?: RowPinningPosition) => boolean\n /**\n * Returns all top pinned rows.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#gettoprows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n getTopRows: () => Row<TData>[]\n /**\n * Resets the **rowPinning** state to `initialState.rowPinning`, or `true` can be passed to force a default blank state reset to `{ top: [], bottom: [], }`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#resetrowpinning)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n resetRowPinning: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.rowPinning` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#setrowpinning)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n setRowPinning: (updater: Updater<RowPinningState>) => void\n}\n\n//\n\nconst getDefaultRowPinningState = (): RowPinningState => ({\n top: [],\n bottom: [],\n})\n\nexport const RowPinning: TableFeature = {\n getInitialState: (state): RowPinningTableState => {\n return {\n rowPinning: getDefaultRowPinningState(),\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): RowPinningDefaultOptions => {\n return {\n onRowPinningChange: makeStateUpdater('rowPinning', table),\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): void => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows\n ? row.getLeafRows().map(({ id }) => id)\n : []\n const parentRowIds = includeParentRows\n ? row.getParentRows().map(({ id }) => id)\n : []\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds])\n\n table.setRowPinning(old => {\n if (position === 'bottom') {\n return {\n top: (old?.top ?? []).filter(d => !rowIds?.has(d)),\n bottom: [\n ...(old?.bottom ?? []).filter(d => !rowIds?.has(d)),\n ...Array.from(rowIds),\n ],\n }\n }\n\n if (position === 'top') {\n return {\n top: [\n ...(old?.top ?? []).filter(d => !rowIds?.has(d)),\n ...Array.from(rowIds),\n ],\n bottom: (old?.bottom ?? []).filter(d => !rowIds?.has(d)),\n }\n }\n\n return {\n top: (old?.top ?? []).filter(d => !rowIds?.has(d)),\n bottom: (old?.bottom ?? []).filter(d => !rowIds?.has(d)),\n }\n })\n }\n row.getCanPin = () => {\n const { enableRowPinning, enablePinning } = table.options\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row)\n }\n return enableRowPinning ?? enablePinning ?? true\n }\n row.getIsPinned = () => {\n const rowIds = [row.id]\n\n const { top, bottom } = table.getState().rowPinning\n\n const isTop = rowIds.some(d => top?.includes(d))\n const isBottom = rowIds.some(d => bottom?.includes(d))\n\n return isTop ? 'top' : isBottom ? 'bottom' : false\n }\n row.getPinnedIndex = () => {\n const position = row.getIsPinned()\n if (!position) return -1\n\n const visiblePinnedRowIds = (\n position === 'top' ? table.getTopRows() : table.getBottomRows()\n )?.map(({ id }) => id)\n\n return visiblePinnedRowIds?.indexOf(row.id) ?? -1\n }\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table.setRowPinning = updater => table.options.onRowPinningChange?.(updater)\n\n table.resetRowPinning = defaultState =>\n table.setRowPinning(\n defaultState\n ? getDefaultRowPinningState()\n : table.initialState?.rowPinning ?? getDefaultRowPinningState()\n )\n\n table.getIsSomeRowsPinned = position => {\n const pinningState = table.getState().rowPinning\n\n if (!position) {\n return Boolean(pinningState.top?.length || pinningState.bottom?.length)\n }\n return Boolean(pinningState[position]?.length)\n }\n\n table._getPinnedRows = (visibleRows, pinnedRowIds, position) => {\n const rows =\n table.options.keepPinnedRows ?? true\n ? //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds ?? []).map(rowId => {\n const row = table.getRow(rowId, true)\n return row.getIsAllParentsExpanded() ? row : null\n })\n : //else get only visible rows that are pinned\n (pinnedRowIds ?? []).map(\n rowId => visibleRows.find(row => row.id === rowId)!\n )\n\n return rows.filter(Boolean).map(d => ({ ...d, position })) as Row<TData>[]\n }\n\n table.getTopRows = memo(\n () => [table.getRowModel().rows, table.getState().rowPinning.top],\n (allRows, topPinnedRowIds) =>\n table._getPinnedRows(allRows, topPinnedRowIds, 'top'),\n getMemoOptions(table.options, 'debugRows', 'getTopRows')\n )\n\n table.getBottomRows = memo(\n () => [table.getRowModel().rows, table.getState().rowPinning.bottom],\n (allRows, bottomPinnedRowIds) =>\n table._getPinnedRows(allRows, bottomPinnedRowIds, 'bottom'),\n getMemoOptions(table.options, 'debugRows', 'getBottomRows')\n )\n\n table.getCenterRows = memo(\n () => [\n table.getRowModel().rows,\n table.getState().rowPinning.top,\n table.getState().rowPinning.bottom,\n ],\n (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top ?? []), ...(bottom ?? [])])\n return allRows.filter(d => !topAndBottom.has(d.id))\n },\n getMemoOptions(table.options, 'debugRows', 'getCenterRows')\n )\n },\n}\n","import {\n OnChangeFn,\n Table,\n Row,\n RowModel,\n Updater,\n RowData,\n TableFeature,\n} from '../types'\nimport { getMemoOptions, makeStateUpdater, memo } from '../utils'\n\nexport type RowSelectionState = Record<string, boolean>\n\nexport interface RowSelectionTableState {\n rowSelection: RowSelectionState\n}\n\nexport interface RowSelectionOptions<TData extends RowData> {\n /**\n * - Enables/disables multiple row selection for all rows in the table OR\n * - A function that given a row, returns whether to enable/disable multiple row selection for that row's children/grandchildren\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#enablemultirowselection)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n enableMultiRowSelection?: boolean | ((row: Row<TData>) => boolean)\n /**\n * - Enables/disables row selection for all rows in the table OR\n * - A function that given a row, returns whether to enable/disable row selection for that row\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#enablerowselection)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n enableRowSelection?: boolean | ((row: Row<TData>) => boolean)\n /**\n * Enables/disables automatic sub-row selection when a parent row is selected, or a function that enables/disables automatic sub-row selection for each row.\n * (Use in combination with expanding or grouping features)\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#enablesubrowselection)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n enableSubRowSelection?: boolean | ((row: Row<TData>) => boolean)\n /**\n * If provided, this function will be called with an `updaterFn` when `state.rowSelection` changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#onrowselectionchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n onRowSelectionChange?: OnChangeFn<RowSelectionState>\n // enableGroupingRowSelection?:\n // | boolean\n // | ((\n // row: Row<TData>\n // ) => boolean)\n // isAdditiveSelectEvent?: (e: unknown) => boolean\n // isInclusiveSelectEvent?: (e: unknown) => boolean\n // selectRowsFn?: (\n // table: Table<TData>,\n // rowModel: RowModel<TData>\n // ) => RowModel<TData>\n}\n\nexport interface RowSelectionRow {\n /**\n * Returns whether or not the row can multi-select.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getcanmultiselect)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getCanMultiSelect: () => boolean\n /**\n * Returns whether or not the row can be selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getcanselect)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getCanSelect: () => boolean\n /**\n * Returns whether or not the row can select sub rows automatically when the parent row is selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getcanselectsubrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getCanSelectSubRows: () => boolean\n /**\n * Returns whether or not all of the row's sub rows are selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getisallsubrowsselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getIsAllSubRowsSelected: () => boolean\n /**\n * Returns whether or not the row is selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getisselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getIsSelected: () => boolean\n /**\n * Returns whether or not some of the row's sub rows are selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getissomeselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getIsSomeSelected: () => boolean\n /**\n * Returns a handler that can be used to toggle the row.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#gettoggleselectedhandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getToggleSelectedHandler: () => (event: unknown) => void\n /**\n * Selects/deselects the row.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#toggleselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n toggleSelected: (value?: boolean, opts?: { selectChildren?: boolean }) => void\n}\n\nexport interface RowSelectionInstance<TData extends RowData> {\n /**\n * Returns the row model of all rows that are selected after filtering has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getfilteredselectedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getFilteredSelectedRowModel: () => RowModel<TData>\n /**\n * Returns the row model of all rows that are selected after grouping has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getgroupedselectedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getGroupedSelectedRowModel: () => RowModel<TData>\n /**\n * Returns whether or not all rows on the current page are selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getisallpagerowsselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getIsAllPageRowsSelected: () => boolean\n /**\n * Returns whether or not all rows in the table are selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getisallrowsselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getIsAllRowsSelected: () => boolean\n /**\n * Returns whether or not any rows on the current page are selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getissomepagerowsselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getIsSomePageRowsSelected: () => boolean\n /**\n * Returns whether or not any rows in the table are selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getissomerowsselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getIsSomeRowsSelected: () => boolean\n /**\n * Returns the core row model of all rows before row selection has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getpreselectedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getPreSelectedRowModel: () => RowModel<TData>\n /**\n * Returns the row model of all rows that are selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getselectedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getSelectedRowModel: () => RowModel<TData>\n /**\n * Returns a handler that can be used to toggle all rows on the current page.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#gettoggleallpagerowsselectedhandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getToggleAllPageRowsSelectedHandler: () => (event: unknown) => void\n /**\n * Returns a handler that can be used to toggle all rows in the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#gettoggleallrowsselectedhandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getToggleAllRowsSelectedHandler: () => (event: unknown) => void\n /**\n * Resets the **rowSelection** state to the `initialState.rowSelection`, or `true` can be passed to force a default blank state reset to `{}`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#resetrowselection)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n resetRowSelection: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.rowSelection` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#setrowselection)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n setRowSelection: (updater: Updater<RowSelectionState>) => void\n /**\n * Selects/deselects all rows on the current page.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#toggleallpagerowsselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n toggleAllPageRowsSelected: (value?: boolean) => void\n /**\n * Selects/deselects all rows in the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#toggleallrowsselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n toggleAllRowsSelected: (value?: boolean) => void\n}\n\n//\n\nexport const RowSelection: TableFeature = {\n getInitialState: (state): RowSelectionTableState => {\n return {\n rowSelection: {},\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): RowSelectionOptions<TData> => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true,\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n }\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table.setRowSelection = updater =>\n table.options.onRowSelectionChange?.(updater)\n table.resetRowSelection = defaultState =>\n table.setRowSelection(\n defaultState ? {} : table.initialState.rowSelection ?? {}\n )\n table.toggleAllRowsSelected = value => {\n table.setRowSelection(old => {\n value =\n typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected()\n\n const rowSelection = { ...old }\n\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return\n }\n rowSelection[row.id] = true\n })\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id]\n })\n }\n\n return rowSelection\n })\n }\n table.toggleAllPageRowsSelected = value =>\n table.setRowSelection(old => {\n const resolvedValue =\n typeof value !== 'undefined'\n ? value\n : !table.getIsAllPageRowsSelected()\n\n const rowSelection: RowSelectionState = { ...old }\n\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table)\n })\n\n return rowSelection\n })\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n table.getPreSelectedRowModel = () => table.getCoreRowModel()\n table.getSelectedRowModel = memo(\n () => [table.getState().rowSelection, table.getCoreRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(table, rowModel)\n },\n getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel')\n )\n\n table.getFilteredSelectedRowModel = memo(\n () => [table.getState().rowSelection, table.getFilteredRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(table, rowModel)\n },\n getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel')\n )\n\n table.getGroupedSelectedRowModel = memo(\n () => [table.getState().rowSelection, table.getSortedRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(table, rowModel)\n },\n getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel')\n )\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows\n const { rowSelection } = table.getState()\n\n let isAllRowsSelected = Boolean(\n preGroupedFlatRows.length && Object.keys(rowSelection).length\n )\n\n if (isAllRowsSelected) {\n if (\n preGroupedFlatRows.some(\n row => row.getCanSelect() && !rowSelection[row.id]\n )\n ) {\n isAllRowsSelected = false\n }\n }\n\n return isAllRowsSelected\n }\n\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table\n .getPaginationRowModel()\n .flatRows.filter(row => row.getCanSelect())\n const { rowSelection } = table.getState()\n\n let isAllPageRowsSelected = !!paginationFlatRows.length\n\n if (\n isAllPageRowsSelected &&\n paginationFlatRows.some(row => !rowSelection[row.id])\n ) {\n isAllPageRowsSelected = false\n }\n\n return isAllPageRowsSelected\n }\n\n table.getIsSomeRowsSelected = () => {\n const totalSelected = Object.keys(\n table.getState().rowSelection ?? {}\n ).length\n return (\n totalSelected > 0 &&\n totalSelected < table.getFilteredRowModel().flatRows.length\n )\n }\n\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows\n return table.getIsAllPageRowsSelected()\n ? false\n : paginationFlatRows\n .filter(row => row.getCanSelect())\n .some(d => d.getIsSelected() || d.getIsSomeSelected())\n }\n\n table.getToggleAllRowsSelectedHandler = () => {\n return (e: unknown) => {\n table.toggleAllRowsSelected(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n }\n\n table.getToggleAllPageRowsSelectedHandler = () => {\n return (e: unknown) => {\n table.toggleAllPageRowsSelected(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): void => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected()\n\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !isSelected\n\n if (row.getCanSelect() && isSelected === value) {\n return old\n }\n\n const selectedRowIds = { ...old }\n\n mutateRowIsSelected(\n selectedRowIds,\n row.id,\n value,\n opts?.selectChildren ?? true,\n table\n )\n\n return selectedRowIds\n })\n }\n row.getIsSelected = () => {\n const { rowSelection } = table.getState()\n return isRowSelected(row, rowSelection)\n }\n\n row.getIsSomeSelected = () => {\n const { rowSelection } = table.getState()\n return isSubRowSelected(row, rowSelection, table) === 'some'\n }\n\n row.getIsAllSubRowsSelected = () => {\n const { rowSelection } = table.getState()\n return isSubRowSelected(row, rowSelection, table) === 'all'\n }\n\n row.getCanSelect = () => {\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row)\n }\n\n return table.options.enableRowSelection ?? true\n }\n\n row.getCanSelectSubRows = () => {\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row)\n }\n\n return table.options.enableSubRowSelection ?? true\n }\n\n row.getCanMultiSelect = () => {\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row)\n }\n\n return table.options.enableMultiRowSelection ?? true\n }\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect()\n\n return (e: unknown) => {\n if (!canSelect) return\n row.toggleSelected(\n ((e as MouseEvent).target as HTMLInputElement)?.checked\n )\n }\n }\n },\n}\n\nconst mutateRowIsSelected = <TData extends RowData>(\n selectedRowIds: Record<string, boolean>,\n id: string,\n value: boolean,\n includeChildren: boolean,\n table: Table<TData>\n) => {\n const row = table.getRow(id, true)\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key])\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true\n }\n } else {\n delete selectedRowIds[id]\n }\n // }\n\n if (includeChildren && row.subRows?.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row =>\n mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table)\n )\n }\n}\n\nexport function selectRowsFn<TData extends RowData>(\n table: Table<TData>,\n rowModel: RowModel<TData>\n): RowModel<TData> {\n const rowSelection = table.getState().rowSelection\n\n const newSelectedFlatRows: Row<TData>[] = []\n const newSelectedRowsById: Record<string, Row<TData>> = {}\n\n // Filters top level and nested rows\n const recurseRows = (rows: Row<TData>[], depth = 0): Row<TData>[] => {\n return rows\n .map(row => {\n const isSelected = isRowSelected(row, rowSelection)\n\n if (isSelected) {\n newSelectedFlatRows.push(row)\n newSelectedRowsById[row.id] = row\n }\n\n if (row.subRows?.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows, depth + 1),\n }\n }\n\n if (isSelected) {\n return row\n }\n })\n .filter(Boolean) as Row<TData>[]\n }\n\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById,\n }\n}\n\nexport function isRowSelected<TData extends RowData>(\n row: Row<TData>,\n selection: Record<string, boolean>\n): boolean {\n return selection[row.id] ?? false\n}\n\nexport function isSubRowSelected<TData extends RowData>(\n row: Row<TData>,\n selection: Record<string, boolean>,\n table: Table<TData>\n): boolean | 'some' | 'all' {\n if (!row.subRows?.length) return false\n\n let allChildrenSelected = true\n let someSelected = false\n\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return\n }\n\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true\n } else {\n allChildrenSelected = false\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection, table)\n if (subRowChildrenSelected === 'all') {\n someSelected = true\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true\n allChildrenSelected = false\n } else {\n allChildrenSelected = false\n }\n }\n })\n\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false\n}\n","import { SortingFn } from './features/RowSorting'\n\nexport const reSplitAlphaNumeric = /([0-9]+)/gm\n\nconst alphanumeric: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\nconst alphanumericCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\nconst datetime: SortingFn<any> = (rowA, rowB, columnId) => {\n const a = rowA.getValue<Date>(columnId)\n const b = rowB.getValue<Date>(columnId)\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0\n}\n\nconst basic: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId))\n}\n\n// Utils\n\nfunction compareBasic(a: any, b: any) {\n return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction toString(a: any) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return ''\n }\n return String(a)\n }\n if (typeof a === 'string') {\n return a\n }\n return ''\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr: string, bStr: string) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean)\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean)\n\n // While\n while (a.length && b.length) {\n const aa = a.shift()!\n const bb = b.shift()!\n\n const an = parseInt(aa, 10)\n const bn = parseInt(bb, 10)\n\n const combo = [an, bn].sort()\n\n // Both are string\n if (isNaN(combo[0]!)) {\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1]!)) {\n return isNaN(an) ? -1 : 1\n }\n\n // Both are numbers\n if (an > bn) {\n return 1\n }\n if (bn > an) {\n return -1\n }\n }\n\n return a.length - b.length\n}\n\n// Exports\n\nexport const sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic,\n}\n\nexport type BuiltInSortingFn = keyof typeof sortingFns\n","import { RowModel } from '..'\nimport {\n BuiltInSortingFn,\n reSplitAlphaNumeric,\n sortingFns,\n} from '../sortingFns'\n\nimport {\n Column,\n OnChangeFn,\n Table,\n Row,\n Updater,\n RowData,\n SortingFns,\n TableFeature,\n} from '../types'\n\nimport { isFunction, makeStateUpdater } from '../utils'\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport interface ColumnSort {\n desc: boolean\n id: string\n}\n\nexport type SortingState = ColumnSort[]\n\nexport interface SortingTableState {\n sorting: SortingState\n}\n\nexport interface SortingFn<TData extends RowData> {\n (rowA: Row<TData>, rowB: Row<TData>, columnId: string): number\n}\n\nexport type CustomSortingFns<TData extends RowData> = Record<\n string,\n SortingFn<TData>\n>\n\nexport type SortingFnOption<TData extends RowData> =\n | 'auto'\n | keyof SortingFns\n | BuiltInSortingFn\n | SortingFn<TData>\n\nexport interface SortingColumnDef<TData extends RowData> {\n /**\n * Enables/Disables multi-sorting for this column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#enablemultisort)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n enableMultiSort?: boolean\n /**\n * Enables/Disables sorting for this column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#enablesorting)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n enableSorting?: boolean\n /**\n * Inverts the order of the sorting for this column. This is useful for values that have an inverted best/worst scale where lower numbers are better, eg. a ranking (1st, 2nd, 3rd) or golf-like scoring\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#invertsorting)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n invertSorting?: boolean\n /**\n * Set to `true` for sorting toggles on this column to start in the descending direction.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#sortdescfirst)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n sortDescFirst?: boolean\n /**\n * The sorting function to use with this column.\n * - A `string` referencing a built-in sorting function\n * - A custom sorting function\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#sortingfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n sortingFn?: SortingFnOption<TData>\n /**\n * The priority of undefined values when sorting this column.\n * - `false`\n * - Undefined values will be considered tied and need to be sorted by the next column filter or original index (whichever applies)\n * - `-1`\n * - Undefined values will be sorted with higher priority (ascending) (if ascending, undefined will appear on the beginning of the list)\n * - `1`\n * - Undefined values will be sorted with lower priority (descending) (if ascending, undefined will appear on the end of the list)\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#sortundefined)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n sortUndefined?: false | -1 | 1 | 'first' | 'last'\n}\n\nexport interface SortingColumn<TData extends RowData> {\n /**\n * Removes this column from the table's sorting state\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#clearsorting)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n clearSorting: () => void\n /**\n * Returns a sort direction automatically inferred based on the columns values.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getautosortdir)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getAutoSortDir: () => SortDirection\n /**\n * Returns a sorting function automatically inferred based on the columns values.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getautosortingfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getAutoSortingFn: () => SortingFn<TData>\n /**\n * Returns whether this column can be multi-sorted.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getcanmultisort)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getCanMultiSort: () => boolean\n /**\n * Returns whether this column can be sorted.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getcansort)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getCanSort: () => boolean\n /**\n * Returns the first direction that should be used when sorting this column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getfirstsortdir)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getFirstSortDir: () => SortDirection\n /**\n * Returns the current sort direction of this column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getissorted)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getIsSorted: () => false | SortDirection\n /**\n * Returns the next sorting order.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getnextsortingorder)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getNextSortingOrder: () => SortDirection | false\n /**\n * Returns the index position of this column's sorting within the sorting state\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getsortindex)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getSortIndex: () => number\n /**\n * Returns the resolved sorting function to be used for this column\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getsortingfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getSortingFn: () => SortingFn<TData>\n /**\n * Returns a function that can be used to toggle this column's sorting state. This is useful for attaching a click handler to the column header.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#gettogglesortinghandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getToggleSortingHandler: () => undefined | ((event: unknown) => void)\n /**\n * Toggles this columns sorting state. If `desc` is provided, it will force the sort direction to that value. If `isMulti` is provided, it will additivity multi-sort the column (or toggle it if it is already sorted).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#togglesorting)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n toggleSorting: (desc?: boolean, isMulti?: boolean) => void\n}\n\ninterface SortingOptionsBase {\n /**\n * Enables/disables the ability to remove multi-sorts\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#enablemultiremove)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n enableMultiRemove?: boolean\n /**\n * Enables/Disables multi-sorting for the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#enablemultisort)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n enableMultiSort?: boolean\n /**\n * Enables/Disables sorting for the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#enablesorting)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n enableSorting?: boolean\n /**\n * Enables/Disables the ability to remove sorting for the table.\n * - If `true` then changing sort order will circle like: 'none' -> 'desc' -> 'asc' -> 'none' -> ...\n * - If `false` then changing sort order will circle like: 'none' -> 'desc' -> 'asc' -> 'desc' -> 'asc' -> ...\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#enablesortingremoval)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n enableSortingRemoval?: boolean\n /**\n * This function is used to retrieve the sorted row model. If using server-side sorting, this function is not required. To use client-side sorting, pass the exported `getSortedRowModel()` from your adapter to your table or implement your own.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getsortedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getSortedRowModel?: (table: Table<any>) => () => RowModel<any>\n /**\n * Pass a custom function that will be used to determine if a multi-sort event should be triggered. It is passed the event from the sort toggle handler and should return `true` if the event should trigger a multi-sort.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#ismultisortevent)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n isMultiSortEvent?: (e: unknown) => boolean\n /**\n * Enables manual sorting for the table. If this is `true`, you will be expected to sort your data before it is passed to the table. This is useful if you are doing server-side sorting.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#manualsorting)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n manualSorting?: boolean\n /**\n * Set a maximum number of columns that can be multi-sorted.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#maxmultisortcolcount)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n maxMultiSortColCount?: number\n /**\n * If provided, this function will be called with an `updaterFn` when `state.sorting` changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#onsortingchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n onSortingChange?: OnChangeFn<SortingState>\n /**\n * If `true`, all sorts will default to descending as their first toggle state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#sortdescfirst)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n sortDescFirst?: boolean\n}\n\ntype ResolvedSortingFns = keyof SortingFns extends never\n ? {\n sortingFns?: Record<string, SortingFn<any>>\n }\n : {\n sortingFns: Record<keyof SortingFns, SortingFn<any>>\n }\n\nexport interface SortingOptions<TData extends RowData>\n extends SortingOptionsBase,\n ResolvedSortingFns {}\n\nexport interface SortingInstance<TData extends RowData> {\n _getSortedRowModel?: () => RowModel<TData>\n /**\n * Returns the row model for the table before any sorting has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getpresortedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getPreSortedRowModel: () => RowModel<TData>\n /**\n * Returns the row model for the table after sorting has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getsortedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getSortedRowModel: () => RowModel<TData>\n /**\n * Resets the **sorting** state to `initialState.sorting`, or `true` can be passed to force a default blank state reset to `[]`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#resetsorting)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n resetSorting: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.sorting` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#setsorting)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n setSorting: (updater: Updater<SortingState>) => void\n}\n\n//\n\nexport const RowSorting: TableFeature = {\n getInitialState: (state): SortingTableState => {\n return {\n sorting: [],\n ...state,\n }\n },\n\n getDefaultColumnDef: <TData extends RowData>(): SortingColumnDef<TData> => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): SortingOptions<TData> => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: (e: unknown) => {\n return (e as MouseEvent).shiftKey\n },\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): void => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10)\n\n let isString = false\n\n for (const row of firstRows) {\n const value = row?.getValue(column.id)\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric\n }\n }\n }\n\n if (isString) {\n return sortingFns.text\n }\n\n return sortingFns.basic\n }\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n }\n column.getSortingFn = () => {\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.columnDef.sortingFn)\n ? column.columnDef.sortingFn\n : column.columnDef.sortingFn === 'auto'\n ? column.getAutoSortingFn()\n : table.options.sortingFns?.[column.columnDef.sortingFn as string] ??\n sortingFns[column.columnDef.sortingFn as BuiltInSortingFn]\n }\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder()\n const hasManualValue = typeof desc !== 'undefined' && desc !== null\n\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old?.find(d => d.id === column.id)\n const existingIndex = old?.findIndex(d => d.id === column.id)\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction: 'add' | 'remove' | 'toggle' | 'replace'\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc'\n\n // Multi-mode\n if (old?.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'add'\n }\n } else {\n // Normal mode\n if (old?.length && existingIndex !== old.length - 1) {\n sortAction = 'replace'\n } else if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'replace'\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove'\n }\n }\n }\n\n if (sortAction === 'add') {\n newSorting = [\n ...old,\n {\n id: column.id,\n desc: nextDesc,\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (table.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER)\n )\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id)\n } else {\n newSorting = [\n {\n id: column.id,\n desc: nextDesc,\n },\n ]\n }\n\n return newSorting\n })\n }\n\n column.getFirstSortDir = () => {\n const sortDescFirst =\n column.columnDef.sortDescFirst ??\n table.options.sortDescFirst ??\n column.getAutoSortDir() === 'desc'\n return sortDescFirst ? 'desc' : 'asc'\n }\n\n column.getNextSortingOrder = (multi?: boolean) => {\n const firstSortDirection = column.getFirstSortDir()\n const isSorted = column.getIsSorted()\n\n if (!isSorted) {\n return firstSortDirection\n }\n\n if (\n isSorted !== firstSortDirection &&\n (table.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n (multi ? table.options.enableMultiRemove ?? true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false\n }\n return isSorted === 'desc' ? 'asc' : 'desc'\n }\n\n column.getCanSort = () => {\n return (\n (column.columnDef.enableSorting ?? true) &&\n (table.options.enableSorting ?? true) &&\n !!column.accessorFn\n )\n }\n\n column.getCanMultiSort = () => {\n return (\n column.columnDef.enableMultiSort ??\n table.options.enableMultiSort ??\n !!column.accessorFn\n )\n }\n\n column.getIsSorted = () => {\n const columnSort = table.getState().sorting?.find(d => d.id === column.id)\n\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n }\n\n column.getSortIndex = () =>\n table.getState().sorting?.findIndex(d => d.id === column.id) ?? -1\n\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old =>\n old?.length ? old.filter(d => d.id !== column.id) : []\n )\n }\n\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort()\n\n return (e: unknown) => {\n if (!canSort) return\n ;(e as any).persist?.()\n column.toggleSorting?.(\n undefined,\n column.getCanMultiSort() ? table.options.isMultiSortEvent?.(e) : false\n )\n }\n }\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table.setSorting = updater => table.options.onSortingChange?.(updater)\n table.resetSorting = defaultState => {\n table.setSorting(defaultState ? [] : table.initialState?.sorting ?? [])\n }\n table.getPreSortedRowModel = () => table.getGroupedRowModel()\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table)\n }\n\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel()\n }\n\n return table._getSortedRowModel()\n }\n },\n}\n","import { functionalUpdate, getMemoOptions, memo, RequiredKeys } from '../utils'\n\nimport {\n Updater,\n TableOptionsResolved,\n TableState,\n Table,\n InitialTableState,\n Row,\n Column,\n RowModel,\n ColumnDef,\n TableOptions,\n RowData,\n TableMeta,\n ColumnDefResolved,\n GroupColumnDef,\n TableFeature,\n} from '../types'\n\n//\nimport { createColumn } from './column'\nimport { Headers } from './headers'\n//\n\nimport { ColumnFaceting } from '../features/ColumnFaceting'\nimport { ColumnFiltering } from '../features/ColumnFiltering'\nimport { ColumnGrouping } from '../features/ColumnGrouping'\nimport { ColumnOrdering } from '../features/ColumnOrdering'\nimport { ColumnPinning } from '../features/ColumnPinning'\nimport { ColumnSizing } from '../features/ColumnSizing'\nimport { ColumnVisibility } from '../features/ColumnVisibility'\nimport { GlobalFaceting } from '../features/GlobalFaceting'\nimport { GlobalFiltering } from '../features/GlobalFiltering'\nimport { RowExpanding } from '../features/RowExpanding'\nimport { RowPagination } from '../features/RowPagination'\nimport { RowPinning } from '../features/RowPinning'\nimport { RowSelection } from '../features/RowSelection'\nimport { RowSorting } from '../features/RowSorting'\n\nconst builtInFeatures = [\n Headers,\n ColumnVisibility,\n ColumnOrdering,\n ColumnPinning,\n ColumnFaceting,\n ColumnFiltering,\n GlobalFaceting, //depends on ColumnFaceting\n GlobalFiltering, //depends on ColumnFiltering\n RowSorting,\n ColumnGrouping, //depends on RowSorting\n RowExpanding,\n RowPagination,\n RowPinning,\n RowSelection,\n ColumnSizing,\n] as const\n\n//\n\nexport interface CoreTableState {}\n\nexport interface CoreOptions<TData extends RowData> {\n /**\n * An array of extra features that you can add to the table instance.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#_features)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n _features?: TableFeature[]\n /**\n * Set this option to override any of the `autoReset...` feature options.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#autoresetall)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n autoResetAll?: boolean\n /**\n * The array of column defs to use for the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#columns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n columns: ColumnDef<TData, any>[]\n /**\n * The data for the table to display. This array should match the type you provided to `table.setRowType<...>`. Columns can access this data via string/index or a functional accessor. When the `data` option changes reference, the table will reprocess the data.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#data)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n data: TData[]\n /**\n * Set this option to `true` to output all debugging information to the console.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#debugall)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n debugAll?: boolean\n /**\n * Set this option to `true` to output cell debugging information to the console.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#debugcells]\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n debugCells?: boolean\n /**\n * Set this option to `true` to output column debugging information to the console.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#debugcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n debugColumns?: boolean\n /**\n * Set this option to `true` to output header debugging information to the console.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#debugheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n debugHeaders?: boolean\n /**\n * Set this option to `true` to output row debugging information to the console.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#debugrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n debugRows?: boolean\n /**\n * Set this option to `true` to output table debugging information to the console.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#debugtable)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n debugTable?: boolean\n /**\n * Default column options to use for all column defs supplied to the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#defaultcolumn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n defaultColumn?: Partial<ColumnDef<TData, unknown>>\n /**\n * This required option is a factory for a function that computes and returns the core row model for the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getcorerowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getCoreRowModel: (table: Table<any>) => () => RowModel<any>\n /**\n * This optional function is used to derive a unique ID for any given row. If not provided the rows index is used (nested rows join together with `.` using their grandparents' index eg. `index.index.index`). If you need to identify individual rows that are originating from any server-side operations, it's suggested you use this function to return an ID that makes sense regardless of network IO/ambiguity eg. a userId, taskId, database ID field, etc.\n * @example getRowId: row => row.userId\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getrowid)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getRowId?: (originalRow: TData, index: number, parent?: Row<TData>) => string\n /**\n * This optional function is used to access the sub rows for any given row. If you are using nested rows, you will need to use this function to return the sub rows object (or undefined) from the row.\n * @example getSubRows: row => row.subRows\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getsubrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getSubRows?: (originalRow: TData, index: number) => undefined | TData[]\n /**\n * Use this option to optionally pass initial state to the table. This state will be used when resetting various table states either automatically by the table (eg. `options.autoResetPageIndex`) or via functions like `table.resetRowSelection()`. Most reset function allow you optionally pass a flag to reset to a blank/default state instead of the initial state.\n *\n * Table state will not be reset when this object changes, which also means that the initial state object does not need to be stable.\n *\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#initialstate)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n initialState?: InitialTableState\n /**\n * This option is used to optionally implement the merging of table options.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#mergeoptions)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n mergeOptions?: (\n defaultOptions: TableOptions<TData>,\n options: Partial<TableOptions<TData>>\n ) => TableOptions<TData>\n /**\n * You can pass any object to `options.meta` and access it anywhere the `table` is available via `table.options.meta`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#meta)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n meta?: TableMeta<TData>\n /**\n * The `onStateChange` option can be used to optionally listen to state changes within the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#onstatechange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n onStateChange: (updater: Updater<TableState>) => void\n /**\n * Value used when the desired value is not found in the data.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#renderfallbackvalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n renderFallbackValue: any\n /**\n * The `state` option can be used to optionally _control_ part or all of the table state. The state you pass here will merge with and overwrite the internal automatically-managed state to produce the final state for the table. You can also listen to state changes via the `onStateChange` option.\n * > Note: Any state passed in here will override both the internal state and any other `initialState` you provide.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#state)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n state: Partial<TableState>\n}\n\nexport interface CoreInstance<TData extends RowData> {\n _features: readonly TableFeature[]\n _getAllFlatColumnsById: () => Record<string, Column<TData, unknown>>\n _getColumnDefs: () => ColumnDef<TData, unknown>[]\n _getCoreRowModel?: () => RowModel<TData>\n _getDefaultColumnDef: () => Partial<ColumnDef<TData, unknown>>\n _getRowId: (_: TData, index: number, parent?: Row<TData>) => string\n _queue: (cb: () => void) => void\n /**\n * Returns all columns in the table in their normalized and nested hierarchy.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getallcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getAllColumns: () => Column<TData, unknown>[]\n /**\n * Returns all columns in the table flattened to a single level.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getallflatcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getAllFlatColumns: () => Column<TData, unknown>[]\n /**\n * Returns all leaf-node columns in the table flattened to a single level. This does not include parent columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getallleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getAllLeafColumns: () => Column<TData, unknown>[]\n /**\n * Returns a single column by its ID.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getcolumn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getColumn: (columnId: string) => Column<TData, unknown> | undefined\n /**\n * Returns the core row model before any processing has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getcorerowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getCoreRowModel: () => RowModel<TData>\n /**\n * Returns the row with the given ID.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getrow)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getRow: (id: string, searchAll?: boolean) => Row<TData>\n /**\n * Returns the final model after all processing from other used features has been applied. This is the row model that is most commonly used for rendering.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getRowModel: () => RowModel<TData>\n /**\n * Call this function to get the table's current state. It's recommended to use this function and its state, especially when managing the table state manually. It is the exact same state used internally by the table for every feature and function it provides.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getstate)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getState: () => TableState\n /**\n * This is the resolved initial state of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#initialstate)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n initialState: TableState\n /**\n * A read-only reference to the table's current options.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#options)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n options: RequiredKeys<TableOptionsResolved<TData>, 'state'>\n /**\n * Call this function to reset the table state to the initial state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#reset)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n reset: () => void\n /**\n * This function can be used to update the table options.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#setoptions)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n setOptions: (newOptions: Updater<TableOptionsResolved<TData>>) => void\n /**\n * Call this function to update the table state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#setstate)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n setState: (updater: Updater<TableState>) => void\n}\n\nexport function createTable<TData extends RowData>(\n options: TableOptionsResolved<TData>\n): Table<TData> {\n if (\n process.env.NODE_ENV !== 'production' &&\n (options.debugAll || options.debugTable)\n ) {\n console.info('Creating Table Instance...')\n }\n\n const _features = [...builtInFeatures, ...(options._features ?? [])]\n\n let table = { _features } as unknown as Table<TData>\n\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions?.(table))\n }, {}) as TableOptionsResolved<TData>\n\n const mergeOptions = (options: TableOptionsResolved<TData>) => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options)\n }\n\n return {\n ...defaultOptions,\n ...options,\n }\n }\n\n const coreInitialState: CoreTableState = {}\n\n let initialState = {\n ...coreInitialState,\n ...(options.initialState ?? {}),\n } as TableState\n\n table._features.forEach(feature => {\n initialState = (feature.getInitialState?.(initialState) ??\n initialState) as TableState\n })\n\n const queued: (() => void)[] = []\n let queuedTimeout = false\n\n const coreInstance: CoreInstance<TData> = {\n _features,\n options: {\n ...defaultOptions,\n ...options,\n },\n initialState,\n _queue: cb => {\n queued.push(cb)\n\n if (!queuedTimeout) {\n queuedTimeout = true\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve()\n .then(() => {\n while (queued.length) {\n queued.shift()!()\n }\n queuedTimeout = false\n })\n .catch(error =>\n setTimeout(() => {\n throw error\n })\n )\n }\n },\n reset: () => {\n table.setState(table.initialState)\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options)\n table.options = mergeOptions(newOptions) as RequiredKeys<\n TableOptionsResolved<TData>,\n 'state'\n >\n },\n\n getState: () => {\n return table.options.state as TableState\n },\n\n setState: (updater: Updater<TableState>) => {\n table.options.onStateChange?.(updater)\n },\n\n _getRowId: (row: TData, index: number, parent?: Row<TData>) =>\n table.options.getRowId?.(row, index, parent) ??\n `${parent ? [parent.id, index].join('.') : index}`,\n\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table)\n }\n\n return table._getCoreRowModel!()\n },\n\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel()\n },\n //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id: string, searchAll?: boolean) => {\n let row = (\n searchAll ? table.getPrePaginationRowModel() : table.getRowModel()\n ).rowsById[id]\n\n if (!row) {\n row = table.getCoreRowModel().rowsById[id]\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`)\n }\n throw new Error()\n }\n }\n\n return row\n },\n _getDefaultColumnDef: memo(\n () => [table.options.defaultColumn],\n defaultColumn => {\n defaultColumn = (defaultColumn ?? {}) as Partial<\n ColumnDef<TData, unknown>\n >\n\n return {\n header: props => {\n const resolvedColumnDef = props.header.column\n .columnDef as ColumnDefResolved<TData>\n\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey\n }\n\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id\n }\n\n return null\n },\n // footer: props => props.header.column.id,\n cell: props => props.renderValue<any>()?.toString?.() ?? null,\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef?.())\n }, {}),\n ...defaultColumn,\n } as Partial<ColumnDef<TData, unknown>>\n },\n getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')\n ),\n\n _getColumnDefs: () => table.options.columns,\n\n getAllColumns: memo(\n () => [table._getColumnDefs()],\n columnDefs => {\n const recurseColumns = (\n columnDefs: ColumnDef<TData, unknown>[],\n parent?: Column<TData, unknown>,\n depth = 0\n ): Column<TData, unknown>[] => {\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent)\n\n const groupingColumnDef = columnDef as GroupColumnDef<\n TData,\n unknown\n >\n\n column.columns = groupingColumnDef.columns\n ? recurseColumns(groupingColumnDef.columns, column, depth + 1)\n : []\n\n return column\n })\n }\n\n return recurseColumns(columnDefs)\n },\n getMemoOptions(options, 'debugColumns', 'getAllColumns')\n ),\n\n getAllFlatColumns: memo(\n () => [table.getAllColumns()],\n allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns()\n })\n },\n getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')\n ),\n\n _getAllFlatColumnsById: memo(\n () => [table.getAllFlatColumns()],\n flatColumns => {\n return flatColumns.reduce(\n (acc, column) => {\n acc[column.id] = column\n return acc\n },\n {} as Record<string, Column<TData, unknown>>\n )\n },\n getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')\n ),\n\n getAllLeafColumns: memo(\n () => [table.getAllColumns(), table._getOrderColumnsFn()],\n (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns())\n return orderColumns(leafColumns)\n },\n getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')\n ),\n\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId]\n\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`)\n }\n\n return column\n },\n }\n\n Object.assign(table, coreInstance)\n\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index]\n feature?.createTable?.(table)\n }\n\n return table\n}\n","import { createRow } from '../core/row'\nimport { Table, Row, RowModel, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getCoreRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.options.data],\n (\n data\n ): {\n rows: Row<TData>[]\n flatRows: Row<TData>[]\n rowsById: Record<string, Row<TData>>\n } => {\n const rowModel: RowModel<TData> = {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n\n const accessRows = (\n originalRows: TData[],\n depth = 0,\n parentRow?: Row<TData>\n ): Row<TData>[] => {\n const rows = [] as Row<TData>[]\n\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = createRow(\n table,\n table._getRowId(originalRows[i]!, i, parentRow),\n originalRows[i]!,\n i,\n depth,\n undefined,\n parentRow?.id\n )\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row)\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row\n // Push table row into parent\n rows.push(row)\n\n // Get the original subrows\n if (table.options.getSubRows) {\n row.originalSubRows = table.options.getSubRows(\n originalRows[i]!,\n i\n )\n\n // Then recursively access them\n if (row.originalSubRows?.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row)\n }\n }\n }\n\n return rows\n }\n\n rowModel.rows = accessRows(data)\n\n return rowModel\n },\n getMemoOptions(table.options, 'debugTable', 'getRowModel', () =>\n table._autoResetPageIndex()\n )\n )\n}\n","import { Table, Row, RowModel, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getExpandedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [\n table.getState().expanded,\n table.getPreExpandedRowModel(),\n table.options.paginateExpandedRows,\n ],\n (expanded, rowModel, paginateExpandedRows) => {\n if (\n !rowModel.rows.length ||\n (expanded !== true && !Object.keys(expanded ?? {}).length)\n ) {\n return rowModel\n }\n\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel\n }\n\n return expandRows(rowModel)\n },\n getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel')\n )\n}\n\nexport function expandRows<TData extends RowData>(rowModel: RowModel<TData>) {\n const expandedRows: Row<TData>[] = []\n\n const handleRow = (row: Row<TData>) => {\n expandedRows.push(row)\n\n if (row.subRows?.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow)\n }\n }\n\n rowModel.rows.forEach(handleRow)\n\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById,\n }\n}\n","import { Table, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getFacetedMinMaxValues<TData extends RowData>(): (\n table: Table<TData>,\n columnId: string\n) => () => undefined | [number, number] {\n return (table, columnId) =>\n memo(\n () => [table.getColumn(columnId)?.getFacetedRowModel()],\n facetedRowModel => {\n if (!facetedRowModel) return undefined\n\n const uniqueValues = facetedRowModel.flatRows\n .flatMap(flatRow => flatRow.getUniqueValues(columnId) ?? [])\n .map(Number)\n .filter(value => !Number.isNaN(value))\n\n if (!uniqueValues.length) return\n\n let facetedMinValue = uniqueValues[0]!\n let facetedMaxValue = uniqueValues[uniqueValues.length - 1]!\n\n for (const value of uniqueValues) {\n if (value < facetedMinValue) facetedMinValue = value\n else if (value > facetedMaxValue) facetedMaxValue = value\n }\n\n return [facetedMinValue, facetedMaxValue]\n },\n getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues')\n )\n}\n","import { createRow } from '../core/row'\nimport { Row, RowModel, Table, RowData } from '../types'\n\nexport function filterRows<TData extends RowData>(\n rows: Row<TData>[],\n filterRowImpl: (row: Row<TData>) => any,\n table: Table<TData>\n) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table)\n }\n\n return filterRowModelFromRoot(rows, filterRowImpl, table)\n}\n\nfunction filterRowModelFromLeafs<TData extends RowData>(\n rowsToFilter: Row<TData>[],\n filterRow: (row: Row<TData>) => Row<TData>[],\n table: Table<TData>\n): RowModel<TData> {\n const newFilteredFlatRows: Row<TData>[] = []\n const newFilteredRowsById: Record<string, Row<TData>> = {}\n const maxDepth = table.options.maxLeafRowFilterDepth ?? 100\n\n const recurseFilterRows = (rowsToFilter: Row<TData>[], depth = 0) => {\n const rows: Row<TData>[] = []\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i]!\n\n const newRow = createRow(\n table,\n row.id,\n row.original,\n row.index,\n row.depth,\n undefined,\n row.parentId\n )\n newRow.columnFilters = row.columnFilters\n\n if (row.subRows?.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1)\n row = newRow\n\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row)\n newFilteredRowsById[row.id] = row\n newFilteredFlatRows.push(row)\n continue\n }\n\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row)\n newFilteredRowsById[row.id] = row\n newFilteredFlatRows.push(row)\n continue\n }\n } else {\n row = newRow\n if (filterRow(row)) {\n rows.push(row)\n newFilteredRowsById[row.id] = row\n newFilteredFlatRows.push(row)\n }\n }\n }\n\n return rows\n }\n\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById,\n }\n}\n\nfunction filterRowModelFromRoot<TData extends RowData>(\n rowsToFilter: Row<TData>[],\n filterRow: (row: Row<TData>) => any,\n table: Table<TData>\n): RowModel<TData> {\n const newFilteredFlatRows: Row<TData>[] = []\n const newFilteredRowsById: Record<string, Row<TData>> = {}\n const maxDepth = table.options.maxLeafRowFilterDepth ?? 100\n\n // Filters top level and nested rows\n const recurseFilterRows = (rowsToFilter: Row<TData>[], depth = 0) => {\n // Filter from parents downward first\n\n const rows: Row<TData>[] = []\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i]!\n\n const pass = filterRow(row)\n\n if (pass) {\n if (row.subRows?.length && depth < maxDepth) {\n const newRow = createRow(\n table,\n row.id,\n row.original,\n row.index,\n row.depth,\n undefined,\n row.parentId\n )\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1)\n row = newRow\n }\n\n rows.push(row)\n newFilteredFlatRows.push(row)\n newFilteredRowsById[row.id] = row\n }\n }\n\n return rows\n }\n\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById,\n }\n}\n","import { Table, RowModel, Row, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\nimport { filterRows } from './filterRowsUtils'\n\nexport function getFacetedRowModel<TData extends RowData>(): (\n table: Table<TData>,\n columnId: string\n) => () => RowModel<TData> {\n return (table, columnId) =>\n memo(\n () => [\n table.getPreFilteredRowModel(),\n table.getState().columnFilters,\n table.getState().globalFilter,\n table.getFilteredRowModel(),\n ],\n (preRowModel, columnFilters, globalFilter) => {\n if (\n !preRowModel.rows.length ||\n (!columnFilters?.length && !globalFilter)\n ) {\n return preRowModel\n }\n\n const filterableIds = [\n ...columnFilters.map(d => d.id).filter(d => d !== columnId),\n globalFilter ? '__global__' : undefined,\n ].filter(Boolean) as string[]\n\n const filterRowsImpl = (row: Row<TData>) => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]!] === false) {\n return false\n }\n }\n return true\n }\n\n return filterRows(preRowModel.rows, filterRowsImpl, table)\n },\n getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel')\n )\n}\n","import { Table, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getFacetedUniqueValues<TData extends RowData>(): (\n table: Table<TData>,\n columnId: string\n) => () => Map<any, number> {\n return (table, columnId) =>\n memo(\n () => [table.getColumn(columnId)?.getFacetedRowModel()],\n facetedRowModel => {\n if (!facetedRowModel) return new Map()\n\n let facetedUniqueValues = new Map<any, number>()\n\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values =\n facetedRowModel.flatRows[i]!.getUniqueValues<number>(columnId)\n\n for (let j = 0; j < values.length; j++) {\n const value = values[j]!\n\n if (facetedUniqueValues.has(value)) {\n facetedUniqueValues.set(\n value,\n (facetedUniqueValues.get(value) ?? 0) + 1\n )\n } else {\n facetedUniqueValues.set(value, 1)\n }\n }\n }\n\n return facetedUniqueValues\n },\n getMemoOptions(\n table.options,\n 'debugTable',\n `getFacetedUniqueValues_${columnId}`\n )\n )\n}\n","import { ResolvedColumnFilter } from '../features/ColumnFiltering'\nimport { Table, RowModel, Row, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\nimport { filterRows } from './filterRowsUtils'\n\nexport function getFilteredRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [\n table.getPreFilteredRowModel(),\n table.getState().columnFilters,\n table.getState().globalFilter,\n ],\n (rowModel, columnFilters, globalFilter) => {\n if (\n !rowModel.rows.length ||\n (!columnFilters?.length && !globalFilter)\n ) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i]!.columnFilters = {}\n rowModel.flatRows[i]!.columnFiltersMeta = {}\n }\n return rowModel\n }\n\n const resolvedColumnFilters: ResolvedColumnFilter<TData>[] = []\n const resolvedGlobalFilters: ResolvedColumnFilter<TData>[] = []\n\n ;(columnFilters ?? []).forEach(d => {\n const column = table.getColumn(d.id)\n\n if (!column) {\n return\n }\n\n const filterFn = column.getFilterFn()\n\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`\n )\n }\n return\n }\n\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: filterFn.resolveFilterValue?.(d.value) ?? d.value,\n })\n })\n\n const filterableIds = (columnFilters ?? []).map(d => d.id)\n\n const globalFilterFn = table.getGlobalFilterFn()\n\n const globallyFilterableColumns = table\n .getAllLeafColumns()\n .filter(column => column.getCanGlobalFilter())\n\n if (\n globalFilter &&\n globalFilterFn &&\n globallyFilterableColumns.length\n ) {\n filterableIds.push('__global__')\n\n globallyFilterableColumns.forEach(column => {\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue:\n globalFilterFn.resolveFilterValue?.(globalFilter) ??\n globalFilter,\n })\n })\n }\n\n let currentColumnFilter\n let currentGlobalFilter\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j]!\n\n row.columnFilters = {}\n\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i]!\n const id = currentColumnFilter.id\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(\n row,\n id,\n currentColumnFilter.resolvedValue,\n filterMeta => {\n row.columnFiltersMeta[id] = filterMeta\n }\n )\n }\n }\n\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i]!\n const id = currentGlobalFilter.id\n // Tag the row with the first truthy global filter state\n if (\n currentGlobalFilter.filterFn(\n row,\n id,\n currentGlobalFilter.resolvedValue,\n filterMeta => {\n row.columnFiltersMeta[id] = filterMeta\n }\n )\n ) {\n row.columnFilters.__global__ = true\n break\n }\n }\n\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false\n }\n }\n }\n\n const filterRowsImpl = (row: Row<TData>) => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]!] === false) {\n return false\n }\n }\n return true\n }\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table)\n },\n getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () =>\n table._autoResetPageIndex()\n )\n )\n}\n","import { createRow } from '../core/row'\nimport { Row, RowData, RowModel, Table } from '../types'\nimport { flattenBy, getMemoOptions, memo } from '../utils'\nimport { GroupingState } from '../features/ColumnGrouping'\n\nexport function getGroupedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().grouping, table.getPreGroupedRowModel()],\n (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n rowModel.rows.forEach(row => {\n row.depth = 0\n row.parentId = undefined\n })\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId =>\n table.getColumn(columnId)\n )\n\n const groupedFlatRows: Row<TData>[] = []\n const groupedRowsById: Record<string, Row<TData>> = {}\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Row<TData>[],\n depth = 0,\n parentId?: string\n ) => {\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth\n\n groupedFlatRows.push(row)\n groupedRowsById[row.id] = row\n\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id)\n }\n\n return row\n })\n }\n\n const columnId: string = existingGrouping[depth]!\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n subRows.forEach(subRow => {\n subRow.parentId = id\n })\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, row => row.subRows)\n : groupedRows\n\n const row = createRow(\n table,\n id,\n leafRows[0]!.original,\n index,\n depth,\n undefined,\n parentId\n )\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: (columnId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[columnId] =\n groupedRows[0].getValue(columnId) ?? undefined\n }\n\n return row._valuesCache[columnId]\n }\n\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId)\n const aggregateFn = column?.getAggregationFn()\n\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(\n columnId,\n leafRows,\n groupedRows\n )\n\n return row._groupingValuesCache[columnId]\n }\n },\n })\n\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return row\n }\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0)\n\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n }\n },\n getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded()\n table._autoResetPageIndex()\n })\n })\n )\n}\n\nfunction groupBy<TData extends RowData>(rows: Row<TData>[], columnId: string) {\n const groupMap = new Map<any, Row<TData>[]>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n previous.push(row)\n }\n return map\n }, groupMap)\n}\n","import { Table, RowModel, Row, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\nimport { expandRows } from './getExpandedRowModel'\n\nexport function getPaginationRowModel<TData extends RowData>(opts?: {\n initialSync: boolean\n}): (table: Table<TData>) => () => RowModel<TData> {\n return table =>\n memo(\n () => [\n table.getState().pagination,\n table.getPrePaginationRowModel(),\n table.options.paginateExpandedRows\n ? undefined\n : table.getState().expanded,\n ],\n (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel\n }\n\n const { pageSize, pageIndex } = pagination\n let { rows, flatRows, rowsById } = rowModel\n const pageStart = pageSize * pageIndex\n const pageEnd = pageStart + pageSize\n\n rows = rows.slice(pageStart, pageEnd)\n\n let paginatedRowModel: RowModel<TData>\n\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById,\n })\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById,\n }\n }\n\n paginatedRowModel.flatRows = []\n\n const handleRow = (row: Row<TData>) => {\n paginatedRowModel.flatRows.push(row)\n if (row.subRows.length) {\n row.subRows.forEach(handleRow)\n }\n }\n\n paginatedRowModel.rows.forEach(handleRow)\n\n return paginatedRowModel\n },\n getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel')\n )\n}\n","import { Table, Row, RowModel, RowData } from '../types'\nimport { SortingFn } from '../features/RowSorting'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getSortedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().sorting, table.getPreSortedRowModel()],\n (sorting, rowModel) => {\n if (!rowModel.rows.length || !sorting?.length) {\n return rowModel\n }\n\n const sortingState = table.getState().sorting\n\n const sortedFlatRows: Row<TData>[] = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort =>\n table.getColumn(sort.id)?.getCanSort()\n )\n\n const columnInfoById: Record<\n string,\n {\n sortUndefined?: false | -1 | 1 | 'first' | 'last'\n invertSorting?: boolean\n sortingFn: SortingFn<TData>\n }\n > = {}\n\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id)\n if (!column) return\n\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn(),\n }\n })\n\n const sortData = (rows: Row<TData>[]) => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({ ...row }))\n\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n const sortEntry = availableSorting[i]!\n const columnInfo = columnInfoById[sortEntry.id]!\n const sortUndefined = columnInfo.sortUndefined\n const isDesc = sortEntry?.desc ?? false\n\n let sortInt = 0\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id)\n const bValue = rowB.getValue(sortEntry.id)\n\n const aUndefined = aValue === undefined\n const bUndefined = bValue === undefined\n\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1\n if (sortUndefined === 'last') return aUndefined ? 1 : -1\n sortInt =\n aUndefined && bUndefined\n ? 0\n : aUndefined\n ? sortUndefined\n : -sortUndefined\n }\n }\n\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id)\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1\n }\n\n if (columnInfo.invertSorting) {\n sortInt *= -1\n }\n\n return sortInt\n }\n }\n\n return rowA.index - rowB.index\n })\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n sortedFlatRows.push(row)\n if (row.subRows?.length) {\n row.subRows = sortData(row.subRows)\n }\n })\n\n return sortedData\n }\n\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById,\n }\n },\n getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () =>\n table._autoResetPageIndex()\n )\n )\n}\n","import * as React from 'react'\nexport * from '@tanstack/table-core'\n\nimport {\n TableOptions,\n TableOptionsResolved,\n RowData,\n createTable,\n} from '@tanstack/table-core'\n\nexport type Renderable<TProps> = React.ReactNode | React.ComponentType<TProps>\n\n//\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nexport function flexRender<TProps extends object>(\n Comp: Renderable<TProps>,\n props: TProps\n): React.ReactNode | React.JSX.Element {\n return !Comp ? null : isReactComponent<TProps>(Comp) ? (\n <Comp {...props} />\n ) : (\n Comp\n )\n}\n\nfunction isReactComponent<TProps>(\n component: unknown\n): component is React.ComponentType<TProps> {\n return (\n isClassComponent(component) ||\n typeof component === 'function' ||\n isExoticComponent(component)\n )\n}\n\nfunction isClassComponent(component: any) {\n return (\n typeof component === 'function' &&\n (() => {\n const proto = Object.getPrototypeOf(component)\n return proto.prototype && proto.prototype.isReactComponent\n })()\n )\n}\n\nfunction isExoticComponent(component: any) {\n return (\n typeof component === 'object' &&\n typeof component.$$typeof === 'symbol' &&\n ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description)\n )\n}\n\nexport function useReactTable<TData extends RowData>(\n options: TableOptions<TData>\n) {\n // Compose in the generic options to the user options\n const resolvedOptions: TableOptionsResolved<TData> = {\n state: {}, // Dummy state\n onStateChange: () => {}, // noop\n renderFallbackValue: null,\n ...options,\n }\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable<TData>(resolvedOptions),\n }))\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState)\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state,\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater)\n options.onStateChange?.(updater)\n },\n }))\n\n return tableRef.current\n}\n","import type { FC } from 'react'\nimport { memo } from 'react'\n\ninterface ResponsiveTimestampCellProps {\n date: Date | number | undefined\n locale?: string\n}\n\nexport const ResponsiveTimestampCell: FC<ResponsiveTimestampCellProps> = memo(({ date, locale }) => {\n const format = new Intl.DateTimeFormat(locale, {\n day: '2-digit',\n fractionalSecondDigits: 3,\n hour: '2-digit',\n hour12: false,\n minute: '2-digit',\n month: '2-digit',\n second: '2-digit',\n year: 'numeric',\n })\n\n const formattedTime = format.format(date)\n\n return (\n <div style={{ width: '100%' }}>\n {formattedTime}\n </div>\n )\n})\n","import type { FC } from 'react'\nimport { Box, Divider, Typography, useTheme } from '@mui/material'\nimport { memo } from 'react'\n\nimport type { SERVICE_NAME } from '@/types/service-names.ts'\n\nimport { AwsServiceIcon } from '../aws-service-icon/aws-service-icon.tsx'\nimport { PillCell } from './pill-cell.tsx'\n\ninterface ServiceCellProps {\n height?: string\n resource?: string\n selected?: boolean\n service: SERVICE_NAME | (string & {})\n showIcon?: boolean\n width?: string\n}\n\nexport const ServiceCell: FC<ServiceCellProps> = memo(({\n height = '24px',\n resource,\n selected,\n service,\n showIcon = true,\n width = '32px',\n}) => {\n const theme = useTheme()\n const outlineColor = selected ? theme.palette.primary.light : theme.palette.text.secondary\n const outlineWidth = selected ? '2px' : undefined\n return (\n <Box sx={{ width: '100%' }}>\n <PillCell height={height} outlineColor={outlineColor} outlineWidth={outlineWidth}>\n {showIcon\n ? (\n <>\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexShrink: 0,\n height,\n justifyContent: 'center',\n overflow: 'hidden',\n padding: 0,\n width,\n }}\n >\n <AwsServiceIcon hideTooltip service={service} size=\"large\" />\n </Box>\n <Divider orientation=\"vertical\" />\n </>\n )\n : undefined}\n <Typography\n sx={{\n flexShrink: 0,\n fontWeight: 'bold',\n overflow: 'hidden',\n padding: '1px 8px',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n ...(showIcon\n ? {}\n : {\n borderBottomLeftRadius: '15px',\n borderTopLeftRadius: '15px',\n ...(!resource && {\n borderBottomRightRadius: '15px',\n borderTopRightRadius: '15px',\n }),\n }),\n }}\n variant=\"body2\"\n >\n {service}\n </Typography>\n {resource\n ? (\n <>\n <Box sx={{ height: '100%', paddingY: 0.5 }}>\n <Divider orientation=\"vertical\" />\n </Box>\n\n <Typography\n sx={{\n borderBottomRightRadius: '15px',\n borderTopRightRadius: '15px',\n overflow: 'hidden',\n padding: '1px 8px',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n variant=\"body2\"\n >\n {resource}\n </Typography>\n </>\n )\n : undefined}\n </PillCell>\n </Box>\n )\n})\n\nServiceCell.displayName = 'ServiceCell'\n","import type { FC, ReactElement } from 'react'\nimport { Tooltip } from '@mui/material'\nimport { memo } from 'react'\n\nimport { WrapInComponent } from '@/utils/wrap-in-component.tsx'\nimport type { AnyServiceName } from './icons/index.tsx'\n\nimport { AwsServiceIconBase } from './icons/index.tsx'\n\nexport { supportedServiceNames } from './icons/index.tsx'\n\nconst sizes = { large: [32, 32], medium: [22, 22], small: [11, 11] }\n\ninterface AwsServiceIconProps {\n hideTooltip?: boolean\n service: AnyServiceName\n size?: 'large' | 'medium' | 'small'\n title?: string\n}\n\nexport const AwsServiceIcon: FC<AwsServiceIconProps> = memo(({ hideTooltip, service, size = 'medium', title }) => {\n const [width, height] = sizes[size]\n\n return (\n <WrapInComponent\n wrap={!hideTooltip}\n wrapperFn={(child: ReactElement) => (\n <Tooltip placement=\"top\" title={title ?? service}>\n {child}\n </Tooltip>\n )}\n >\n <AwsServiceIconBase height={height} service={service} style={{ display: 'block' }} width={width} />\n </WrapInComponent>\n )\n})\n","import type { FC, ReactElement } from 'react'\nimport { memo } from 'react'\n\ninterface WrapInComponentProps {\n children: ReactElement\n wrap: boolean\n wrapperFn: (children: ReactElement) => ReactElement\n}\n\nexport const WrapInComponent: FC<WrapInComponentProps> = memo(({ children, wrap, wrapperFn }) => {\n if (wrap) {\n return wrapperFn(children)\n }\n return children\n})\n","import type { FC, SVGProps } from 'react'\nimport { memo } from 'react'\n\nimport { SERVICE_NAME } from '@/types/service-names.ts'\n\nimport account from './account.svg'\nimport acmPca from './acm-pca.svg'\nimport acm from './acm.svg'\nimport amplify from './amplify.svg'\nimport apigateway from './apigateway.svg'\nimport apigatewaymanagementapi from './apigatewaymanagementapi.svg'\nimport apigatewayv2 from './apigatewayv2.svg'\nimport appconfig from './appconfig.svg'\nimport applicationautoscaling from './application-autoscaling.svg'\nimport appsync from './appsync.svg'\nimport athena from './athena.svg'\nimport autoscaling from './autoscaling.svg'\nimport backup from './backup.svg'\nimport batch from './batch.svg'\nimport bedrock from './bedrock.svg'\nimport ce from './ce.svg'\nimport cloudcontrol from './cloudcontrol.svg'\nimport cloudformation from './cloudformation.svg'\nimport cloudfront from './cloudfront.svg'\nimport cloudtrail from './cloudtrail.svg'\nimport cloudwatch from './cloudwatch.svg'\nimport codeartifact from './codeartifact.svg'\nimport codebuild from './codebuild.svg'\nimport codecommit from './codecommit.svg'\nimport codeconnections from './codeconnections.svg'\nimport codedeploy from './codedeploy.svg'\nimport codepipeline from './codepipeline.svg'\nimport codestarConnections from './codestar-connections.svg'\nimport cognitoidentity from './cognito-identity.svg'\nimport cognitoidp from './cognito-idp.svg'\nimport config from './config.svg'\nimport dms from './dms.svg'\nimport docdb from './docdb.svg'\nimport dynamodb from './dynamodb.svg'\nimport dynamodbstreams from './dynamodbstreams.svg'\nimport ec2 from './ec2.svg'\nimport ecr from './ecr.svg'\nimport ecs from './ecs.svg'\nimport efs from './efs.svg'\nimport eks from './eks.svg'\nimport elasticache from './elasticache.svg'\nimport elasticbeanstalk from './elasticbeanstalk.svg'\nimport elasticsearch from './elasticsearch.svg'\nimport elastictranscoder from './elastictranscoder.svg'\nimport elb from './elb.svg'\nimport elbv2 from './elbv2.svg'\nimport emrserverless from './emr-serverless.svg'\nimport emr from './emr.svg'\nimport events from './events.svg'\nimport firehose from './firehose.svg'\nimport fis from './fis.svg'\nimport glacier from './glacier.svg'\nimport glue from './glue.svg'\nimport iam from './iam.svg'\nimport identitystore from './identitystore.svg'\nimport infrastructure from './infrastructure.svg'\nimport iotdata from './iot-data.svg'\nimport iot from './iot.svg'\nimport iotanalytics from './iotanalytics.svg'\nimport iotwireless from './iotwireless.svg'\nimport kafka from './kafka.svg'\nimport kinesis from './kinesis.svg'\nimport kinesisanalytics from './kinesisanalytics.svg'\nimport kinesisanalyticsv2 from './kinesisanalyticsv2.svg'\nimport kms from './kms.svg'\nimport lakeformation from './lakeformation.svg'\nimport lambda from './lambda.svg'\nimport logs from './logs.svg'\nimport managedblockchain from './managedblockchain.svg'\nimport mediaconvert from './mediaconvert.svg'\nimport mediastoredata from './mediastore-data.svg'\nimport mediastore from './mediastore.svg'\nimport memorydb from './memorydb.svg'\nimport mq from './mq.svg'\nimport mwaa from './mwaa.svg'\nimport neptune from './neptune.svg'\nimport opensearch from './opensearch.svg'\nimport organizations from './organizations.svg'\nimport pinpoint from './pinpoint.svg'\nimport pipes from './pipes.svg'\nimport qldbsession from './qldb-session.svg'\nimport qldb from './qldb.svg'\nimport ram from './ram.svg'\nimport rdsdata from './rds-data.svg'\nimport rds from './rds.svg'\nimport redshiftdata from './redshift-data.svg'\nimport redshift from './redshift.svg'\nimport resourcegroups from './resource-groups.svg'\nimport resourcegroupstaggingapi from './resourcegroupstaggingapi.svg'\nimport route53 from './route53.svg'\nimport route53resolver from './route53resolver.svg'\nimport s3 from './s3.svg'\nimport s3control from './s3control.svg'\nimport sagemakerruntime from './sagemaker-runtime.svg'\nimport sagemaker from './sagemaker.svg'\nimport scheduler from './scheduler.svg'\nimport secretsmanager from './secretsmanager.svg'\nimport serverlessrepo from './serverlessrepo.svg'\nimport servicediscovery from './servicediscovery.svg'\nimport ses from './ses.svg'\nimport sesv2 from './sesv2.svg'\nimport shield from './shield.svg'\nimport sns from './sns.svg'\nimport sqs from './sqs.svg'\nimport ssm from './ssm.svg'\nimport ssoadmin from './sso-admin.svg'\nimport stepfunctions from './stepfunctions.svg'\nimport sts from './sts.svg'\nimport support from './support.svg'\nimport swf from './swf.svg'\nimport textract from './textract.svg'\nimport timestreamquery from './timestream-query.svg'\nimport timestreamwrite from './timestream-write.svg'\nimport transcribe from './transcribe.svg'\nimport transfer from './transfer.svg'\nimport verifiedpermissions from './verifiedpermissions.svg'\nimport wafv2 from './wafv2.svg'\nimport xray from './xray.svg'\n\nexport type AnyServiceName = SERVICE_NAME | (string & {})\n\nexport type IconComponent = FC<React.SVGProps<SVGSVGElement>>\n\nconst ICONS_MAP = {\n [SERVICE_NAME.ACCOUNT]: account,\n [SERVICE_NAME.ACM]: acm,\n [SERVICE_NAME.ACMPCA]: acmPca,\n [SERVICE_NAME.AMPLIFY]: amplify,\n [SERVICE_NAME.APIGATEWAY]: apigateway,\n [SERVICE_NAME.APIGATEWAYMANAGEMENTAPI]: apigatewaymanagementapi,\n [SERVICE_NAME.APIGATEWAYV2]: apigatewayv2,\n [SERVICE_NAME.APPCONFIG]: appconfig,\n [SERVICE_NAME.APPCONFIGDATA]: appconfig,\n [SERVICE_NAME.APPLICATIONAUTOSCALING]: applicationautoscaling,\n [SERVICE_NAME.APPSYNC]: appsync,\n [SERVICE_NAME.ATHENA]: athena,\n [SERVICE_NAME.AUTOSCALING]: autoscaling,\n [SERVICE_NAME.BACKUP]: backup,\n [SERVICE_NAME.BATCH]: batch,\n [SERVICE_NAME.BEDROCK]: bedrock,\n [SERVICE_NAME.BEDROCKRUNTIME]: bedrock,\n [SERVICE_NAME.CE]: ce,\n [SERVICE_NAME.CLOUDCONTROL]: cloudcontrol,\n [SERVICE_NAME.CLOUDFORMATION]: cloudformation,\n [SERVICE_NAME.CLOUDFRONT]: cloudfront,\n [SERVICE_NAME.CLOUDTRAIL]: cloudtrail,\n [SERVICE_NAME.CLOUDWATCH]: cloudwatch,\n [SERVICE_NAME.CODEARTIFACT]: codeartifact,\n [SERVICE_NAME.CODEBUILD]: codebuild,\n [SERVICE_NAME.CODECOMMIT]: codecommit,\n [SERVICE_NAME.CODECONNECTIONS]: codeconnections,\n [SERVICE_NAME.CODEDEPLOY]: codedeploy,\n [SERVICE_NAME.CODEPIPELINE]: codepipeline,\n [SERVICE_NAME.CODESTARCONNECTIONS]: codestarConnections,\n [SERVICE_NAME.COGNITOIDENTITY]: cognitoidentity,\n [SERVICE_NAME.COGNITOIDP]: cognitoidp,\n [SERVICE_NAME.CONFIG]: config,\n [SERVICE_NAME.DMS]: dms,\n [SERVICE_NAME.DOCDB]: docdb,\n [SERVICE_NAME.DYNAMODB]: dynamodb,\n [SERVICE_NAME.DYNAMODBSTREAMS]: dynamodbstreams,\n [SERVICE_NAME.EC2]: ec2,\n [SERVICE_NAME.ECR]: ecr,\n [SERVICE_NAME.ECS]: ecs,\n [SERVICE_NAME.EFS]: efs,\n [SERVICE_NAME.EKS]: eks,\n [SERVICE_NAME.ELASTICACHE]: elasticache,\n [SERVICE_NAME.ELASTICBEANSTALK]: elasticbeanstalk,\n [SERVICE_NAME.ELASTICTRANSCODER]: elastictranscoder,\n [SERVICE_NAME.ELB]: elb,\n [SERVICE_NAME.ELBV2]: elbv2,\n [SERVICE_NAME.EMR]: emr,\n [SERVICE_NAME.EMRSERVERLESS]: emrserverless,\n [SERVICE_NAME.ES]: elasticsearch,\n [SERVICE_NAME.EVENTS]: events,\n [SERVICE_NAME.FIREHOSE]: firehose,\n [SERVICE_NAME.FIS]: fis,\n [SERVICE_NAME.GLACIER]: glacier,\n [SERVICE_NAME.GLUE]: glue,\n [SERVICE_NAME.IAM]: iam,\n [SERVICE_NAME.IDENTITYSTORE]: identitystore,\n [SERVICE_NAME.INFRASTRUCTURE]: infrastructure,\n [SERVICE_NAME.IOT]: iot,\n [SERVICE_NAME.IOTANALYTICS]: iotanalytics,\n [SERVICE_NAME.IOTDATA]: iotdata,\n [SERVICE_NAME.IOTWIRELESS]: iotwireless,\n [SERVICE_NAME.KAFKA]: kafka,\n [SERVICE_NAME.KINESIS]: kinesis,\n [SERVICE_NAME.KINESISANALYTICS]: kinesisanalytics,\n [SERVICE_NAME.KINESISANALYTICSV2]: kinesisanalyticsv2,\n [SERVICE_NAME.KMS]: kms,\n [SERVICE_NAME.LAKEFORMATION]: lakeformation,\n [SERVICE_NAME.LAMBDA]: lambda,\n [SERVICE_NAME.LOGS]: logs,\n [SERVICE_NAME.MANAGEDBLOCKCHAIN]: managedblockchain,\n [SERVICE_NAME.MEDIACONVERT]: mediaconvert,\n [SERVICE_NAME.MEDIASTORE]: mediastore,\n [SERVICE_NAME.MEDIASTOREDATA]: mediastoredata,\n [SERVICE_NAME.MEMORYDB]: memorydb,\n [SERVICE_NAME.MQ]: mq,\n [SERVICE_NAME.MWAA]: mwaa,\n [SERVICE_NAME.NEPTUNE]: neptune,\n [SERVICE_NAME.OPENSEARCH]: opensearch,\n [SERVICE_NAME.ORGANIZATIONS]: organizations,\n [SERVICE_NAME.PINPOINT]: pinpoint,\n [SERVICE_NAME.PIPES]: pipes,\n [SERVICE_NAME.QLDB]: qldb,\n [SERVICE_NAME.QLDBSESSION]: qldbsession,\n [SERVICE_NAME.RAM]: ram,\n [SERVICE_NAME.RDS]: rds,\n [SERVICE_NAME.RDSDATA]: rdsdata,\n [SERVICE_NAME.REDSHIFT]: redshift,\n [SERVICE_NAME.REDSHIFTDATA]: redshiftdata,\n [SERVICE_NAME.RESOURCEGROUPS]: resourcegroups,\n [SERVICE_NAME.RESOURCEGROUPSTAGGINGAPI]: resourcegroupstaggingapi,\n [SERVICE_NAME.ROUTE53]: route53,\n [SERVICE_NAME.ROUTE53RESOLVER]: route53resolver,\n [SERVICE_NAME.S3]: s3,\n [SERVICE_NAME.S3CONTROL]: s3control,\n [SERVICE_NAME.SAGEMAKER]: sagemaker,\n [SERVICE_NAME.SAGEMAKERRUNTIME]: sagemakerruntime,\n [SERVICE_NAME.SCHEDULER]: scheduler,\n [SERVICE_NAME.SECRETSMANAGER]: secretsmanager,\n [SERVICE_NAME.SERVERLESSREPO]: serverlessrepo,\n [SERVICE_NAME.SERVICEDISCOVERY]: servicediscovery,\n [SERVICE_NAME.SES]: ses,\n [SERVICE_NAME.SESV2]: sesv2,\n [SERVICE_NAME.SHIELD]: shield,\n [SERVICE_NAME.SNS]: sns,\n [SERVICE_NAME.SQS]: sqs,\n [SERVICE_NAME.SSM]: ssm,\n [SERVICE_NAME.SSOADMIN]: ssoadmin,\n [SERVICE_NAME.STEPFUNCTIONS]: stepfunctions,\n [SERVICE_NAME.STS]: sts,\n [SERVICE_NAME.SUPPORT]: support,\n [SERVICE_NAME.SWF]: swf,\n [SERVICE_NAME.TEXTRACT]: textract,\n [SERVICE_NAME.TIMESTREAMQUERY]: timestreamquery,\n [SERVICE_NAME.TIMESTREAMWRITE]: timestreamwrite,\n [SERVICE_NAME.TRANSCRIBE]: transcribe,\n [SERVICE_NAME.TRANSFER]: transfer,\n [SERVICE_NAME.VERIFIEDPERMISSIONS]: verifiedpermissions,\n [SERVICE_NAME.WAFV2]: wafv2,\n [SERVICE_NAME.XRAY]: xray,\n} as const satisfies Partial<Record<string, IconComponent>>\n\nexport const AwsServiceIconBase: FC<SVGProps<SVGSVGElement> & { service: AnyServiceName }> = memo((props) => {\n const Icon = (ICONS_MAP as Record<string, IconComponent>)[props.service] ?? ICONS_MAP.infrastructure\n return <Icon {...props} />\n})\n\nexport const supportedServiceNames = Object.keys(ICONS_MAP) as (keyof typeof ICONS_MAP)[]\n","export const SERVICE_NAME = {\n ACCESSANALYZER: 'accessanalyzer',\n ACCOUNT: 'account',\n ACM: 'acm',\n ACMPCA: 'acm-pca',\n ALEXAFORBUSINESS: 'alexaforbusiness',\n AMP: 'amp',\n AMPLIFY: 'amplify',\n AMPLIFYBACKEND: 'amplifybackend',\n AMPLIFYUIBUILDER: 'amplifyuibuilder',\n APIGATEWAY: 'apigateway',\n APIGATEWAYMANAGEMENTAPI: 'apigatewaymanagementapi',\n APIGATEWAYV2: 'apigatewayv2',\n APPCONFIG: 'appconfig',\n APPCONFIGDATA: 'appconfigdata',\n APPFABRIC: 'appfabric',\n APPFLOW: 'appflow',\n APPINTEGRATIONS: 'appintegrations',\n APPLICATIONAUTOSCALING: 'application-autoscaling',\n APPLICATIONCOSTPROFILER: 'applicationcostprofiler',\n APPLICATIONINSIGHTS: 'application-insights',\n APPMESH: 'appmesh',\n APPRUNNER: 'apprunner',\n APPSTREAM: 'appstream',\n APPSYNC: 'appsync',\n ARCZONALSHIFT: 'arc-zonal-shift',\n ATHENA: 'athena',\n AUDITMANAGER: 'auditmanager',\n AUTOSCALING: 'autoscaling',\n AUTOSCALINGPLANS: 'autoscaling-plans',\n BACKUP: 'backup',\n BACKUPGATEWAY: 'backup-gateway',\n BACKUPSTORAGE: 'backupstorage',\n BATCH: 'batch',\n BEDROCK: 'bedrock',\n BEDROCKRUNTIME: 'bedrock-runtime',\n BILLINGCONDUCTOR: 'billingconductor',\n BRAKET: 'braket',\n BUDGETS: 'budgets',\n CE: 'ce',\n CHIME: 'chime',\n CHIMESDKIDENTITY: 'chime-sdk-identity',\n CHIMESDKMEDIAPIPELINES: 'chime-sdk-media-pipelines',\n CHIMESDKMEETINGS: 'chime-sdk-meetings',\n CHIMESDKMESSAGING: 'chime-sdk-messaging',\n CHIMESDKVOICE: 'chime-sdk-voice',\n CLEANROOMS: 'cleanrooms',\n CLOUD9: 'cloud9',\n CLOUDCONTROL: 'cloudcontrol',\n CLOUDDIRECTORY: 'clouddirectory',\n CLOUDFORMATION: 'cloudformation',\n CLOUDFRONT: 'cloudfront',\n CLOUDFRONTKEYVALUESTORE: 'cloudfront-keyvaluestore',\n CLOUDHSM: 'cloudhsm',\n CLOUDHSMV2: 'cloudhsmv2',\n CLOUDSEARCH: 'cloudsearch',\n CLOUDSEARCHDOMAIN: 'cloudsearchdomain',\n CLOUDTRAIL: 'cloudtrail',\n CLOUDTRAILDATA: 'cloudtrail-data',\n CLOUDWATCH: 'cloudwatch',\n CODEARTIFACT: 'codeartifact',\n CODEBUILD: 'codebuild',\n CODECATALYST: 'codecatalyst',\n CODECOMMIT: 'codecommit',\n CODECONNECTIONS: 'codeconnections',\n CODEDEPLOY: 'codedeploy',\n CODEGURUPROFILER: 'codeguruprofiler',\n CODEGURUREVIEWER: 'codeguru-reviewer',\n CODEGURUSECURITY: 'codeguru-security',\n CODEPIPELINE: 'codepipeline',\n CODESTAR: 'codestar',\n CODESTARCONNECTIONS: 'codestar-connections',\n CODESTARNOTIFICATIONS: 'codestar-notifications',\n COGNITOIDENTITY: 'cognito-identity',\n COGNITOIDP: 'cognito-idp',\n COGNITOSYNC: 'cognito-sync',\n COMPREHEND: 'comprehend',\n COMPREHENDMEDICAL: 'comprehendmedical',\n COMPUTEOPTIMIZER: 'compute-optimizer',\n CONFIG: 'config',\n CONNECT: 'connect',\n CONNECTCAMPAIGNS: 'connectcampaigns',\n CONNECTCASES: 'connectcases',\n CONNECTCONTACTLENS: 'connect-contact-lens',\n CONNECTPARTICIPANT: 'connectparticipant',\n CONTROLTOWER: 'controltower',\n CUR: 'cur',\n CUSTOMERPROFILES: 'customer-profiles',\n DATABREW: 'databrew',\n DATAEXCHANGE: 'dataexchange',\n DATAPIPELINE: 'datapipeline',\n DATASYNC: 'datasync',\n DATAZONE: 'datazone',\n DAX: 'dax',\n DETECTIVE: 'detective',\n DEVICEFARM: 'devicefarm',\n DEVOPSGURU: 'devops-guru',\n DIRECTCONNECT: 'directconnect',\n DISCOVERY: 'discovery',\n DLM: 'dlm',\n DMS: 'dms',\n DOCDB: 'docdb',\n DOCDBELASTIC: 'docdb-elastic',\n DRS: 'drs',\n DS: 'ds',\n DYNAMODB: 'dynamodb',\n DYNAMODBSTREAMS: 'dynamodbstreams',\n EBS: 'ebs',\n EC2: 'ec2',\n EC2INSTANCECONNECT: 'ec2-instance-connect',\n ECR: 'ecr',\n ECRPUBLIC: 'ecr-public',\n ECS: 'ecs',\n EFS: 'efs',\n EKS: 'eks',\n ELASTICACHE: 'elasticache',\n ELASTICBEANSTALK: 'elasticbeanstalk',\n ELASTICINFERENCE: 'elastic-inference',\n ELASTICTRANSCODER: 'elastictranscoder',\n ELB: 'elb',\n ELBV2: 'elbv2',\n EMR: 'emr',\n EMRCONTAINERS: 'emr-containers',\n EMRSERVERLESS: 'emr-serverless',\n ENTITYRESOLUTION: 'entityresolution',\n ES: 'es',\n EVENTS: 'events',\n EVIDENTLY: 'evidently',\n FINSPACE: 'finspace',\n FINSPACEDATA: 'finspace-data',\n FIREHOSE: 'firehose',\n FIS: 'fis',\n FMS: 'fms',\n FORECAST: 'forecast',\n FORECASTQUERY: 'forecastquery',\n FRAUDDETECTOR: 'frauddetector',\n FSX: 'fsx',\n GAMELIFT: 'gamelift',\n GLACIER: 'glacier',\n GLOBALACCELERATOR: 'globalaccelerator',\n GLUE: 'glue',\n GRAFANA: 'grafana',\n GREENGRASS: 'greengrass',\n GREENGRASSV2: 'greengrassv2',\n GROUNDSTATION: 'groundstation',\n GUARDDUTY: 'guardduty',\n HEALTH: 'health',\n HEALTHLAKE: 'healthlake',\n HONEYCODE: 'honeycode',\n IAM: 'iam',\n IDENTITYSTORE: 'identitystore',\n IMAGEBUILDER: 'imagebuilder',\n IMPORTEXPORT: 'importexport',\n INFRASTRUCTURE: 'infrastructure',\n INSPECTOR: 'inspector',\n INSPECTOR2: 'inspector2',\n INSPECTORSCAN: 'inspector-scan',\n INTERNETMONITOR: 'internetmonitor',\n IOT: 'iot',\n IOT1CLICKDEVICES: 'iot1click-devices',\n IOT1CLICKPROJECTS: 'iot1click-projects',\n IOTANALYTICS: 'iotanalytics',\n IOTDATA: 'iot-data',\n IOTDEVICEADVISOR: 'iotdeviceadvisor',\n IOTEVENTS: 'iotevents',\n IOTEVENTSDATA: 'iotevents-data',\n IOTFLEETHUB: 'iotfleethub',\n IOTFLEETWISE: 'iotfleetwise',\n IOTJOBSDATA: 'iot-jobs-data',\n IOTROBORUNNER: 'iot-roborunner',\n IOTSECURETUNNELING: 'iotsecuretunneling',\n IOTSITEWISE: 'iotsitewise',\n IOTTHINGSGRAPH: 'iotthingsgraph',\n IOTTWINMAKER: 'iottwinmaker',\n IOTWIRELESS: 'iotwireless',\n IVS: 'ivs',\n IVSCHAT: 'ivschat',\n IVSREALTIME: 'ivs-realtime',\n KAFKA: 'kafka',\n KAFKACONNECT: 'kafkaconnect',\n KENDRA: 'kendra',\n KENDRARANKING: 'kendra-ranking',\n KEYSPACES: 'keyspaces',\n KINESIS: 'kinesis',\n KINESISANALYTICS: 'kinesisanalytics',\n KINESISANALYTICSV2: 'kinesisanalyticsv2',\n KINESISVIDEO: 'kinesisvideo',\n KINESISVIDEOARCHIVEDMEDIA: 'kinesis-video-archived-media',\n KINESISVIDEOMEDIA: 'kinesis-video-media',\n KINESISVIDEOSIGNALING: 'kinesis-video-signaling',\n KINESISVIDEOWEBRTCSTORAGE: 'kinesis-video-webrtc-storage',\n KMS: 'kms',\n LAKEFORMATION: 'lakeformation',\n LAMBDA: 'lambda',\n LAUNCHWIZARD: 'launch-wizard',\n LEXMODELS: 'lex-models',\n LEXRUNTIME: 'lex-runtime',\n LEXV2MODELS: 'lexv2-models',\n LEXV2RUNTIME: 'lexv2-runtime',\n LICENSEMANAGER: 'license-manager',\n LICENSEMANAGERLINUXSUBSCRIPTIONS: 'license-manager-linux-subscriptions',\n LICENSEMANAGERUSERSUBSCRIPTIONS: 'license-manager-user-subscriptions',\n LIGHTSAIL: 'lightsail',\n LOCATION: 'location',\n LOGS: 'logs',\n LOOKOUTEQUIPMENT: 'lookoutequipment',\n LOOKOUTMETRICS: 'lookoutmetrics',\n LOOKOUTVISION: 'lookoutvision',\n M2: 'm2',\n MACHINELEARNING: 'machinelearning',\n MACIE2: 'macie2',\n MANAGEDBLOCKCHAIN: 'managedblockchain',\n MANAGEDBLOCKCHAINQUERY: 'managedblockchain-query',\n MARKETPLACECATALOG: 'marketplace-catalog',\n MARKETPLACECOMMERCEANALYTICS: 'marketplacecommerceanalytics',\n MARKETPLACEENTITLEMENT: 'marketplace-entitlement',\n MEDIACONNECT: 'mediaconnect',\n MEDIACONVERT: 'mediaconvert',\n MEDIALIVE: 'medialive',\n MEDIAPACKAGE: 'mediapackage',\n MEDIAPACKAGEV2: 'mediapackagev2',\n MEDIAPACKAGEVOD: 'mediapackage-vod',\n MEDIASTORE: 'mediastore',\n MEDIASTOREDATA: 'mediastore-data',\n MEDIATAILOR: 'mediatailor',\n MEDICALIMAGING: 'medical-imaging',\n MEMORYDB: 'memorydb',\n METERINGMARKETPLACE: 'meteringmarketplace',\n MGH: 'mgh',\n MGN: 'mgn',\n MIGRATIONHUBCONFIG: 'migrationhub-config',\n MIGRATIONHUBORCHESTRATOR: 'migrationhuborchestrator',\n MIGRATIONHUBREFACTORSPACES: 'migration-hub-refactor-spaces',\n MIGRATIONHUBSTRATEGY: 'migrationhubstrategy',\n MOBILE: 'mobile',\n MQ: 'mq',\n MTURK: 'mturk',\n MWAA: 'mwaa',\n NEPTUNE: 'neptune',\n NEPTUNEDATA: 'neptunedata',\n NETWORKFIREWALL: 'network-firewall',\n NETWORKMANAGER: 'networkmanager',\n NIMBLE: 'nimble',\n OAM: 'oam',\n OMICS: 'omics',\n OPENSEARCH: 'opensearch',\n OPENSEARCHSERVERLESS: 'opensearchserverless',\n OPSWORKS: 'opsworks',\n OPSWORKSCM: 'opsworkscm',\n ORGANIZATIONS: 'organizations',\n OSIS: 'osis',\n OUTPOSTS: 'outposts',\n PANORAMA: 'panorama',\n PAYMENTCRYPTOGRAPHY: 'payment-cryptography',\n PAYMENTCRYPTOGRAPHYDATA: 'payment-cryptography-data',\n PCACONNECTORAD: 'pca-connector-ad',\n PERSONALIZE: 'personalize',\n PERSONALIZEEVENTS: 'personalize-events',\n PERSONALIZERUNTIME: 'personalize-runtime',\n PI: 'pi',\n PINPOINT: 'pinpoint',\n PINPOINTEMAIL: 'pinpoint-email',\n PINPOINTSMSVOICE: 'pinpoint-sms-voice',\n PINPOINTSMSVOICEV2: 'pinpoint-sms-voice-v2',\n PIPES: 'pipes',\n POLLY: 'polly',\n PRICING: 'pricing',\n PRIVATENETWORKS: 'privatenetworks',\n PROTON: 'proton',\n QLDB: 'qldb',\n QLDBSESSION: 'qldb-session',\n QUICKSIGHT: 'quicksight',\n RAM: 'ram',\n RBIN: 'rbin',\n RDS: 'rds',\n RDSDATA: 'rds-data',\n REDSHIFT: 'redshift',\n REDSHIFTDATA: 'redshift-data',\n REDSHIFTSERVERLESS: 'redshift-serverless',\n REKOGNITION: 'rekognition',\n RESILIENCEHUB: 'resiliencehub',\n RESOURCEEXPLORER2: 'resource-explorer-2',\n RESOURCEGROUPS: 'resource-groups',\n RESOURCEGROUPSTAGGINGAPI: 'resourcegroupstaggingapi',\n ROBOMAKER: 'robomaker',\n ROLESANYWHERE: 'rolesanywhere',\n ROUTE53: 'route53',\n ROUTE53DOMAINS: 'route53domains',\n ROUTE53RECOVERYCLUSTER: 'route53-recovery-cluster',\n ROUTE53RECOVERYCONTROLCONFIG: 'route53-recovery-control-config',\n ROUTE53RECOVERYREADINESS: 'route53-recovery-readiness',\n ROUTE53RESOLVER: 'route53resolver',\n RUM: 'rum',\n S3: 's3',\n S3CONTROL: 's3control',\n S3OUTPOSTS: 's3outposts',\n SAGEMAKER: 'sagemaker',\n SAGEMAKERA2IRUNTIME: 'sagemaker-a2i-runtime',\n SAGEMAKEREDGE: 'sagemaker-edge',\n SAGEMAKERFEATURESTORERUNTIME: 'sagemaker-featurestore-runtime',\n SAGEMAKERGEOSPATIAL: 'sagemaker-geospatial',\n SAGEMAKERMETRICS: 'sagemaker-metrics',\n SAGEMAKERRUNTIME: 'sagemaker-runtime',\n SAVINGSPLANS: 'savingsplans',\n SCHEDULER: 'scheduler',\n SCHEMAS: 'schemas',\n SDB: 'sdb',\n SECRETSMANAGER: 'secretsmanager',\n SECURITYHUB: 'securityhub',\n SECURITYLAKE: 'securitylake',\n SERVERLESSREPO: 'serverlessrepo',\n SERVICECATALOG: 'servicecatalog',\n SERVICECATALOGAPPREGISTRY: 'servicecatalog-appregistry',\n SERVICEDISCOVERY: 'servicediscovery',\n SERVICEQUOTAS: 'service-quotas',\n SES: 'ses',\n SESV2: 'sesv2',\n SHIELD: 'shield',\n SIGNER: 'signer',\n SIMSPACEWEAVER: 'simspaceweaver',\n SMS: 'sms',\n SMSVOICE: 'sms-voice',\n SNOWBALL: 'snowball',\n SNOWDEVICEMANAGEMENT: 'snow-device-management',\n SNOWFLAKE: 'snowflake', // special service that is about our snowflake emulator\n SNS: 'sns',\n SQS: 'sqs',\n SSM: 'ssm',\n SSMCONTACTS: 'ssm-contacts',\n SSMINCIDENTS: 'ssm-incidents',\n SSMSAP: 'ssm-sap',\n SSO: 'sso',\n SSOADMIN: 'sso-admin',\n SSOOIDC: 'sso-oidc',\n STEPFUNCTIONS: 'stepfunctions',\n STORAGEGATEWAY: 'storagegateway',\n STS: 'sts',\n SUPPORT: 'support',\n SUPPORTAPP: 'support-app',\n SWF: 'swf',\n SYNTHETICS: 'synthetics',\n TEXTRACT: 'textract',\n TIMESTREAMQUERY: 'timestream-query',\n TIMESTREAMWRITE: 'timestream-write',\n TNB: 'tnb',\n TRANSCRIBE: 'transcribe',\n TRANSFER: 'transfer',\n TRANSLATE: 'translate',\n TRUSTEDADVISOR: 'trustedadvisor',\n VERIFIEDPERMISSIONS: 'verifiedpermissions',\n VOICEID: 'voice-id',\n VPCLATTICE: 'vpc-lattice',\n WAF: 'waf',\n WAFREGIONAL: 'waf-regional',\n WAFV2: 'wafv2',\n WELLARCHITECTED: 'wellarchitected',\n WISDOM: 'wisdom',\n WORKDOCS: 'workdocs',\n WORKLINK: 'worklink',\n WORKMAIL: 'workmail',\n WORKMAILMESSAGEFLOW: 'workmailmessageflow',\n WORKSPACES: 'workspaces',\n WORKSPACESWEB: 'workspaces-web',\n XRAY: 'xray',\n} as const\n\nexport type SERVICE_NAME = (typeof SERVICE_NAME)[keyof typeof SERVICE_NAME]\n","import * as React from \"react\";\nconst SvgAccount = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 40 40\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture-Group/32/AWS-Account_32\"}</title><g id=\"Icon-Architecture-Group/32/AWS-Account_32\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"#e7157b\" d=\"M0 0h40v40H0z\" /><path id=\"Fill-1\" fill=\"#fff\" d=\"M24.5 22c1.93 0 3.5 1.57 3.5 3.5S26.43 29 24.5 29 21 27.43 21 25.5s1.57-3.5 3.5-3.5m0 8c2.481 0 4.5-2.019 4.5-4.5S26.981 21 24.5 21a4.505 4.505 0 0 0-4.5 4.5c0 2.481 2.019 4.5 4.5 4.5m1.523-19.12L29.084 17h-6.121zM22.154 18h7.739a.502.502 0 0 0 .447-.724l-3.869-7.738c-.17-.338-.725-.338-.895 0l-3.869 7.738a.503.503 0 0 0 .447.724M11 23h7v-7h-7zm-.5 1h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5M8 32h24V8H8zM32.5 7h-25a.5.5 0 0 0-.5.5v25a.5.5 0 0 0 .5.5h25a.5.5 0 0 0 .5-.5v-25a.5.5 0 0 0-.5-.5\" /></g></svg>;\nexport default SvgAccount;","import * as React from \"react\";\nconst SvgAcmPca = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Private-Certificate-Authority_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-Private-Certificate-Authority_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"#dd344c\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Fill-8\" fill=\"#fff\" d=\"M67 17h-3v2h2v47h-5v2h6a1 1 0 0 0 1-1V18a1 1 0 0 0-1-1M19 64h-2v3a1 1 0 0 0 1 1h35v-2H19zm16.5-24a1 1 0 0 0 .707-.293l8-8-1.414-1.414-7.293 7.293-3.293-3.293-1.414 1.414 4 4A1 1 0 0 0 35.5 40M26 34.5C26 40.841 31.159 46 37.5 46S49 40.841 49 34.5 43.841 23 37.5 23 26 28.159 26 34.5m-2 0C24 27.056 30.056 21 37.5 21S51 27.056 51 34.5 44.944 48 37.5 48 24 41.944 24 34.5M14 17h46v-3H14zm46 43V19H14v41h34v2H13a1 1 0 0 1-1-1V13a1 1 0 0 1 1-1h48a1 1 0 0 1 1 1v48a1 1 0 0 1-1 1h-5v-2zm-33-3v-9h2v7.473l8.101-3.533a1 1 0 0 1 .798 0L46 55.473V48h2v9a1 1 0 0 1-1.399.917L37.5 53.948l-9.101 3.969A.999.999 0 0 1 27 57\" /></g></svg>;\nexport default SvgAcmPca;","import * as React from \"react\";\nconst SvgAcm = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 40 40\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/32/Arch_AWS-Certificate-Manager_32\"}</title><defs><linearGradient id=\"linearGradient-acm\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#bd0816\" /><stop offset=\"100%\" stopColor=\"#ff5252\" /></linearGradient></defs><g id=\"Icon-Architecture/32/Arch_AWS-Certificate-Manager_32\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"url(#linearGradient-acm)\"><path id=\"Rectangle\" d=\"M0 0h40v40H0z\" /></g><path id=\"AWS-Certificate-Manager_Icon_32_Squid\" fill=\"#fff\" d=\"M17.832 19.63c.133.12.19.3.152.476l-.513 2.362 2.27-1.391a.5.5 0 0 1 .52 0l2.252 1.388-.498-2.367a.5.5 0 0 1 .15-.47l2.014-1.84-2.665-.515a.5.5 0 0 1-.352-.27l-1.166-2.387-1.194 2.394a.5.5 0 0 1-.35.265l-2.657.518zm-1.58 3.765.701-3.22-2.562-2.312a.498.498 0 0 1 .237-.856l3.393-.66 1.534-3.075c.085-.17.286-.306.447-.276.19.001.362.11.445.28l1.5 3.068 3.39.656a.498.498 0 0 1 .241.854l-2.533 2.316.68 3.223a.498.498 0 0 1-.748.525L20 22.083l-3.002 1.84a.49.49 0 0 1-.548-.018.5.5 0 0 1-.198-.51m16.727-13.3-.003-2.101H6.994v2.101zM34 32.502a.496.496 0 0 1-.497.498h-3.566v-.994h3.07L32.98 11.09H6.994v20.917h18.968V33H6.497a.5.5 0 0 1-.352-.145.5.5 0 0 1-.145-.352V7.497C6 7.223 6.222 7 6.497 7H33.47c.276 0 .497.223.497.497zm-22.942-2.527h3.974v-.993h-3.974zm5.962.023h6.955v-.993H17.02zm-5.962-3h3.974v-.993h-3.974zm5.962 0h10.93v-.993H17.02z\" /></g></svg>;\nexport default SvgAcm;","import * as React from \"react\";\nconst SvgAmplify = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Amplify-Console_64\"}</title><defs><linearGradient id=\"linearGradient-amp\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#bd0816\" /><stop offset=\"100%\" stopColor=\"#ff5252\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Amplify-Console_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Mobile\" fill=\"url(#linearGradient-amp)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Amplify-Console_Icon_64_Squid\" fill=\"#fff\" d=\"M59.61 59.179 39.508 20h5.75l20.106 39.179zm8.279.543-21.13-41.178a1 1 0 0 0-.89-.544h-8a1 1 0 0 0-.89 1.457l21.13 41.179c.172.333.516.543.89.543h8a.998.998 0 0 0 .89-1.457m-20.29-.543L32.215 30.332l3.15-5.211 17.976 34.058zm-11.29-36.555a1 1 0 0 0-.854-.533 1 1 0 0 0-.885.482l-4.36 7.211a1 1 0 0 0-.028.988L46.117 60.65c.174.325.514.529.883.529h8a1 1 0 0 0 .884-1.467zM14.774 59.179 28.885 35.84l2.875 5.389-6.626 11.449A1.002 1.002 0 0 0 26 54.179h12.667l2.666 5zm25.376-6.471a1 1 0 0 0-.883-.529H27.734l6.035-10.429a1 1 0 0 0 .018-.971l-3.964-7.433a1 1 0 0 0-.856-.529.96.96 0 0 0-.882.482L12.144 59.661A1.003 1.003 0 0 0 13 61.179h30a1 1 0 0 0 .882-1.471z\" /></g></svg>;\nexport default SvgAmplify;","import * as React from \"react\";\nconst SvgApigateway = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_ Amazon-API-Gateway_64\"}</title><defs><linearGradient id=\"linearGradient-agw\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_-Amazon-API-Gateway_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-agw)\" d=\"M0 0h80v80H0z\" /><g id=\"Icon-Service/64/Amazon-API-Gateway_64\" fill=\"#fff\" transform=\"translate(8 8)\"><path id=\"Amazon-API-Gateway_Icon_64_Squid\" d=\"M26.065 47.632H29v-2.017h-2.935zm4.935 0h3v-2.017h-3zM19 6.63 6 13.082v40.111l13 4.397zm2 12.764v26.222h3v2.017h-3v11.36c0 .324-.155.629-.416.818a1 1 0 0 1-.902.138l-15-5.072A1.01 1.01 0 0 1 4 53.92V12.454c0-.384.217-.735.559-.905l15-7.445a.99.99 0 0 1 .969.049c.293.183.472.507.472.856v12.367h3v2.017zm15 28.24h3v-2.018h-3zm.065-28.24H39v-2.017h-2.935zm-5 0H34v-2.017h-2.935zm-5 0H29v-2.017h-2.935zM58 13.083 45 6.628v50.96l13-4.396zm2 40.837c0 .432-.274.817-.682.956l-15 5.072a.99.99 0 0 1-.902-.138 1.01 1.01 0 0 1-.416-.819V47.632h-1.935v-2.017H43V19.393h-1.935v-2.017H43V5.01c0-.35.179-.673.472-.856a.99.99 0 0 1 .969-.049l15 7.445c.342.17.559.521.559.905zM34.934 25.807l-1.868-.724-5 13.11 1.868.725zm6.773 6.402a1.013 1.013 0 0 0 0-1.426l-4-4.034-1.414 1.426 3.293 3.32-3.293 3.322 1.414 1.426zm-15.414 4.034-4-4.034a1.013 1.013 0 0 1 0-1.426l4-4.034 1.414 1.426-3.293 3.32 3.293 3.322z\" /></g></g></svg>;\nexport default SvgApigateway;","import * as React from \"react\";\nconst SvgApigatewaymanagementapi = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_ Amazon-API-Gateway_64\"}</title><defs><linearGradient id=\"linearGradient-agw\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_-Amazon-API-Gateway_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-agw)\" d=\"M0 0h80v80H0z\" /><g id=\"Icon-Service/64/Amazon-API-Gateway_64\" fill=\"#fff\" transform=\"translate(8 8)\"><path id=\"Amazon-API-Gateway_Icon_64_Squid\" d=\"M26.065 47.632H29v-2.017h-2.935zm4.935 0h3v-2.017h-3zM19 6.63 6 13.082v40.111l13 4.397zm2 12.764v26.222h3v2.017h-3v11.36c0 .324-.155.629-.416.818a1 1 0 0 1-.902.138l-15-5.072A1.01 1.01 0 0 1 4 53.92V12.454c0-.384.217-.735.559-.905l15-7.445a.99.99 0 0 1 .969.049c.293.183.472.507.472.856v12.367h3v2.017zm15 28.24h3v-2.018h-3zm.065-28.24H39v-2.017h-2.935zm-5 0H34v-2.017h-2.935zm-5 0H29v-2.017h-2.935zM58 13.083 45 6.628v50.96l13-4.396zm2 40.837c0 .432-.274.817-.682.956l-15 5.072a.99.99 0 0 1-.902-.138 1.01 1.01 0 0 1-.416-.819V47.632h-1.935v-2.017H43V19.393h-1.935v-2.017H43V5.01c0-.35.179-.673.472-.856a.99.99 0 0 1 .969-.049l15 7.445c.342.17.559.521.559.905zM34.934 25.807l-1.868-.724-5 13.11 1.868.725zm6.773 6.402a1.013 1.013 0 0 0 0-1.426l-4-4.034-1.414 1.426 3.293 3.32-3.293 3.322 1.414 1.426zm-15.414 4.034-4-4.034a1.013 1.013 0 0 1 0-1.426l4-4.034 1.414 1.426-3.293 3.32 3.293 3.322z\" /></g></g></svg>;\nexport default SvgApigatewaymanagementapi;","import * as React from \"react\";\nconst SvgApigatewayv2 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_ Amazon-API-Gateway_64\"}</title><defs><linearGradient id=\"linearGradient-agw\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_-Amazon-API-Gateway_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-agw)\" d=\"M0 0h80v80H0z\" /><g id=\"Icon-Service/64/Amazon-API-Gateway_64\" fill=\"#fff\" transform=\"translate(8 8)\"><path id=\"Amazon-API-Gateway_Icon_64_Squid\" d=\"M26.065 47.632H29v-2.017h-2.935zm4.935 0h3v-2.017h-3zM19 6.63 6 13.082v40.111l13 4.397zm2 12.764v26.222h3v2.017h-3v11.36c0 .324-.155.629-.416.818a1 1 0 0 1-.902.138l-15-5.072A1.01 1.01 0 0 1 4 53.92V12.454c0-.384.217-.735.559-.905l15-7.445a.99.99 0 0 1 .969.049c.293.183.472.507.472.856v12.367h3v2.017zm15 28.24h3v-2.018h-3zm.065-28.24H39v-2.017h-2.935zm-5 0H34v-2.017h-2.935zm-5 0H29v-2.017h-2.935zM58 13.083 45 6.628v50.96l13-4.396zm2 40.837c0 .432-.274.817-.682.956l-15 5.072a.99.99 0 0 1-.902-.138 1.01 1.01 0 0 1-.416-.819V47.632h-1.935v-2.017H43V19.393h-1.935v-2.017H43V5.01c0-.35.179-.673.472-.856a.99.99 0 0 1 .969-.049l15 7.445c.342.17.559.521.559.905zM34.934 25.807l-1.868-.724-5 13.11 1.868.725zm6.773 6.402a1.013 1.013 0 0 0 0-1.426l-4-4.034-1.414 1.426 3.293 3.32-3.293 3.322 1.414 1.426zm-15.414 4.034-4-4.034a1.013 1.013 0 0 1 0-1.426l4-4.034 1.414 1.426-3.293 3.32 3.293 3.322z\" /></g></g></svg>;\nexport default SvgApigatewayv2;","import * as React from \"react\";\nconst SvgAppconfig = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-App-Config_64\"}</title><defs><linearGradient id=\"linearGradient-1\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-App-Config_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Management-Governance\" fill=\"url(#linearGradient-1)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-App-Config_Icon_64_Squid\" fill=\"#fff\" d=\"M50.871 37.366c0 4.687-3.813 8.5-8.5 8.5s-8.5-3.813-8.5-8.5 3.813-8.5 8.5-8.5 8.5 3.813 8.5 8.5m2 0c0-5.79-4.71-10.5-10.5-10.5s-10.5 4.71-10.5 10.5 4.71 10.5 10.5 10.5 10.5-4.71 10.5-10.5M47.91 62.418a1 1 0 0 0 .272-.744l-.183-3.201a21.7 21.7 0 0 0 5.266-2.182l2.135 2.394c.183.205.443.326.718.334a.94.94 0 0 0 .735-.293l6.849-6.848a1 1 0 0 0-.041-1.453l-2.402-2.142a21.7 21.7 0 0 0 2.178-5.26l3.212.184a.997.997 0 0 0 1.058-.998v-9.685a1.005 1.005 0 0 0-1.057-.999l-3.216.183a21.7 21.7 0 0 0-2.179-5.255l2.406-2.146a1 1 0 0 0 .041-1.453l-6.849-6.848a.96.96 0 0 0-.735-.293 1 1 0 0 0-.718.334l-2.153 2.413a21.6 21.6 0 0 0-5.248-2.176l.183-3.227a1 1 0 0 0-.272-.743 1 1 0 0 0-.727-.314h-9.684a1 1 0 0 0-.998 1.057l.182 3.225a21.7 21.7 0 0 0-5.251 2.174l-2.15-2.409a1 1 0 0 0-.718-.334.98.98 0 0 0-.735.293l-6.849 6.848a1.002 1.002 0 0 0 .041 1.453l2.412 2.151a21.7 21.7 0 0 0-2.182 5.25l-3.219-.183a1 1 0 0 0-1.057.999v9.685a1 1 0 0 0 1.059.998l3.951-.231-.117-1.997-2.893.17v-7.567l2.991.17c.488.024.923-.301 1.032-.777a19.7 19.7 0 0 1 2.565-6.176 1 1 0 0 0-.179-1.281l-2.241-1.999 5.352-5.351 1.997 2.239a1 1 0 0 0 1.279.179 19.7 19.7 0 0 1 6.178-2.556 1 1 0 0 0 .778-1.033L38.558 14h7.567l-.17 2.999a1 1 0 0 0 .777 1.033 19.6 19.6 0 0 1 6.174 2.559c.411.258.954.185 1.28-.18l2.001-2.243 5.352 5.351-2.235 1.994a1 1 0 0 0-.18 1.28 19.7 19.7 0 0 1 2.562 6.181 1.01 1.01 0 0 0 1.033.778l2.988-.17v7.568l-2.984-.171a1.01 1.01 0 0 0-1.034.778 19.7 19.7 0 0 1-2.561 6.185 1 1 0 0 0 .18 1.28l2.231 1.99-5.351 5.352-1.984-2.224a1 1 0 0 0-1.28-.18 19.7 19.7 0 0 1-6.192 2.565 1 1 0 0 0-.777 1.033l.17 2.973h-7.534l.136-1.546-1.992-.176-.232 2.634a1 1 0 0 0 .996 1.088h9.684a1 1 0 0 0 .727-.313m-10.809-7.864-1.375-1.452-12.511 11.854 1.375 1.452zm-11.855-7.9-1.371-1.456L12.68 55.735l1.371 1.456zM13.414 67.706 12 66.292l19.756-19.756 1.414 1.414z\" /></g></svg>;\nexport default SvgAppconfig;","import * as React from \"react\";\nconst SvgApplicationAutoscaling = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Auto-Scaling_16\"}</title><defs><linearGradient id=\"linearGradient-asc\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Auto-Scaling_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Management-Governance\" fill=\"url(#linearGradient-asc)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Auto-Scaling_Icon_16_Squid\" fill=\"#fff\" d=\"M10.987 13.484h3v-3h-3zm3.5-4a.5.5 0 0 1 .5.5v4c0 .277-.223.5-.5.5h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5zM20 11.46h-1.949l1.337-1.644-.776-.63-2 2.46a.5.5 0 0 0-.005.623l2 2.541.786-.618-1.363-1.732H20zM6.388 9.185l-.776.63 1.337 1.644H5v1h1.97l-1.363 1.732.786.618 2-2.54a.5.5 0 0 0-.005-.625zm6.599 8.278V15.5h-1v1.956l-1.674-1.346-.626.78 2.487 2a.5.5 0 0 0 .625.001l2.513-2-.624-.782zM10.313 7.89l-.626-.78 2.487-2a.5.5 0 0 1 .624-.001l2.513 1.988-.622.784-1.702-1.347V8.5h-1V6.543z\" /></g></svg>;\nexport default SvgApplicationAutoscaling;","import * as React from \"react\";\nconst SvgAppsync = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-AppSync_64\"}</title><defs><linearGradient id=\"linearGradient-app\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-AppSync_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Application-Integration\" fill=\"url(#linearGradient-app)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><g id=\"Icon-Service/64/AWS-AppSync\" fill=\"#fff\" transform=\"translate(8 8)\"><path id=\"AWS-AppSync-Icon_64_Squid\" d=\"m58.52 19.98-5.506-1.39c5.464 9.526 4.596 22.01-2.388 30.012C45.854 54.071 38.772 57 31.652 57c-4.143 0-8.299-.992-12.021-3.051l.952-1.758c9.329 5.163 21.606 3.05 28.556-4.914 6.46-7.4 7.225-18.982 2.1-27.795l-1.429 5.78-1.922-.486 1.982-8.014a.987.987 0 0 1 1.201-.728L59 18.037zM12.758 43.588 14.19 37.8l1.922.486L14.13 46.3a.99.99 0 0 1-1.201.73L5 45.025l.48-1.944 5.497 1.389c-5.421-9.366-4.536-20.968 2.482-29.01 7.658-8.772 20.658-11.02 30.911-5.345l-.952 1.757c-9.449-5.228-21.423-3.162-28.472 4.914-6.475 7.42-7.261 18.156-2.188 26.8m10.638-7.867c1.267 0 2.298 1.042 2.298 2.323s-1.031 2.322-2.298 2.322-2.298-1.042-2.298-2.322 1.03-2.323 2.298-2.323m7.468-8.87c.364.101.74.173 1.136.173.372 0 .726-.063 1.07-.154l3.698 7.984a4.3 4.3 0 0 0-1.286 2.188h-7.934a4.3 4.3 0 0 0-1.253-2.16zM32 20.374c1.268 0 2.298 1.041 2.298 2.322S33.268 25.02 32 25.02c-1.267 0-2.297-1.042-2.297-2.323s1.03-2.322 2.297-2.322m9.932 17.668c0 1.28-1.03 2.322-2.298 2.322-1.267 0-2.298-1.042-2.298-2.322s1.03-2.323 2.298-2.323c1.267 0 2.298 1.042 2.298 2.323M23.396 42.37c2.017 0 3.703-1.423 4.152-3.324h7.934c.45 1.901 2.135 3.324 4.152 3.324 2.36 0 4.28-1.94 4.28-4.326s-1.92-4.327-4.28-4.327c-.392 0-.765.072-1.125.172l-3.688-7.963a4.32 4.32 0 0 0 1.46-3.228c0-2.386-1.921-4.326-4.281-4.326s-4.28 1.94-4.28 4.326a4.32 4.32 0 0 0 1.408 3.184l-4.563 8.02a4.2 4.2 0 0 0-1.169-.185c-2.36 0-4.28 1.94-4.28 4.327 0 2.385 1.92 4.326 4.28 4.326\" /></g></g></svg>;\nexport default SvgAppsync;","import * as React from \"react\";\nconst SvgAthena = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Athena_64\"}</title><defs><linearGradient id=\"linearGradient-ath\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Athena_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-ath)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Athena_Icon_64_Squid\" fill=\"#fff\" d=\"M38.295 27.227c4.492 0 6.953 1.006 7.401 1.51-.448.506-2.909 1.512-7.4 1.512-4.493 0-6.954-1.006-7.402-1.511.448-.505 2.909-1.511 7.401-1.511m-.511 8.055a.509.509 0 0 1 .222-.96c.08 0 .154.022.223.058zm5.783 8.309c-.074.06-.245.177-.596.318a8 8 0 0 1-1.103.337c-1.115.262-2.487.406-3.863.406-3.008 0-5.104-.65-5.556-1.053L31.116 31.15c2.044.836 5.054 1.113 7.18 1.113 2.088 0 5.033-.269 7.076-1.073l-.797 5.475c-1.502-.567-3.376-1.389-5.151-2.253a1.484 1.484 0 0 0-1.418-1.088c-.818 0-1.483.676-1.483 1.505 0 .831.665 1.506 1.483 1.506.194 0 .378-.04.547-.109 2.481 1.225 4.33 2.011 5.722 2.496zM28.872 28.847l1.607 15.003c.113 2.784 7.22 2.817 7.526 2.817 1.522 0 3.052-.164 4.31-.458.515-.12.981-.264 1.385-.426 1.174-.471 1.789-1.114 1.832-1.909l.669-4.598c.455.094.827.135 1.124.135.934 0 1.18-.383 1.35-.647.179-.278.23-.62.147-.963-.19-.79-1.305-1.83-2.05-2.447l.941-6.469-.009-.001c.004-.05.02-.096.02-.146 0-2.784-5.927-3.526-9.429-3.526s-9.43.742-9.43 3.526c0 .037.014.07.016.108zm8.964-8.787c8.65 0 15.689 7.144 15.689 15.925 0 8.78-7.038 15.924-15.69 15.924s-15.69-7.143-15.69-15.924 7.038-15.925 15.69-15.925m-24.85 21.775v2.015h8.932v-.12c2.856 6.02 8.908 10.194 15.918 10.194 9.744 0 17.674-8.047 17.674-17.94 0-9.892-7.93-17.94-17.674-17.94-7.583 0-14.045 4.88-16.55 11.701h-8.3v2.015h7.69a18 18 0 0 0-.506 4.03H11v2.015h9.252c.14 1.4.454 2.743.893 4.03zm54.094 24.2c-1.201 1.221-3.283 1.228-4.483.011L51.933 55.221a24 24 0 0 0 4.56-4.545l10.599 10.81c.596.606.925 1.414.923 2.273a3.21 3.21 0 0 1-.935 2.276m1.417-5.972L57.662 49.01a24.1 24.1 0 0 0 3.803-13.025c0-13.226-10.6-23.985-23.63-23.985-9.362 0-17.852 5.62-21.631 14.317l1.816.812c3.461-7.966 11.239-13.114 19.816-13.114 11.935 0 21.644 9.855 21.644 21.97 0 12.113-9.71 21.97-21.644 21.97-7.974 0-15.279-4.43-19.067-11.561l-1.747.957c4.134 7.783 12.11 12.618 20.814 12.618a23.2 23.2 0 0 0 12.424-3.595l10.934 11.098A5.07 5.07 0 0 0 64.828 69c1.38 0 2.679-.547 3.653-1.537a5.23 5.23 0 0 0 1.519-3.7 5.22 5.22 0 0 0-1.503-3.7\" /></g></svg>;\nexport default SvgAthena;","import * as React from \"react\";\nconst SvgAutoscaling = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Auto-Scaling_16\"}</title><defs><linearGradient id=\"linearGradient-asc\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Auto-Scaling_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Management-Governance\" fill=\"url(#linearGradient-asc)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Auto-Scaling_Icon_16_Squid\" fill=\"#fff\" d=\"M10.987 13.484h3v-3h-3zm3.5-4a.5.5 0 0 1 .5.5v4c0 .277-.223.5-.5.5h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5zM20 11.46h-1.949l1.337-1.644-.776-.63-2 2.46a.5.5 0 0 0-.005.623l2 2.541.786-.618-1.363-1.732H20zM6.388 9.185l-.776.63 1.337 1.644H5v1h1.97l-1.363 1.732.786.618 2-2.54a.5.5 0 0 0-.005-.625zm6.599 8.278V15.5h-1v1.956l-1.674-1.346-.626.78 2.487 2a.5.5 0 0 0 .625.001l2.513-2-.624-.782zM10.313 7.89l-.626-.78 2.487-2a.5.5 0 0 1 .624-.001l2.513 1.988-.622.784-1.702-1.347V8.5h-1V6.543z\" /></g></svg>;\nexport default SvgAutoscaling;","import * as React from \"react\";\nconst SvgBackup = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Backup_64\"}</title><defs><linearGradient id=\"linearGradient-bak\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Backup_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Storage\" fill=\"url(#linearGradient-bak)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Backup_Icon_64_Squid\" fill=\"#fff\" d=\"M52.241 40.363a11.4 11.4 0 0 1-2.156 8.522 11.41 11.41 0 0 1-7.551 4.502q-.845.123-1.683.122a11.4 11.4 0 0 1-6.839-2.278 11.4 11.4 0 0 1-4.624-9.139l2-.014a9.43 9.43 0 0 0 3.819 7.549 9.4 9.4 0 0 0 7.038 1.781 9.42 9.42 0 0 0 6.236-3.718 9.42 9.42 0 0 0 1.781-7.038 9.43 9.43 0 0 0-3.717-6.237c-3.563-2.655-8.796-2.272-12.213.581l1.667-.002.002 2-4 .006H32a.997.997 0 0 1-1-1v-3.987h2v1.5a12.4 12.4 0 0 1 5.968-2.733c3.157-.511 6.354.229 8.772 2.032a11.4 11.4 0 0 1 4.501 7.551M54 58a5 5 0 0 0-1.362.19l-2.837-3.79-1.602 1.199 2.634 3.516A4.78 4.78 0 0 0 49.095 62H30.917c-.2-1.261-.794-2.264-1.679-2.956l2.565-3.448-1.606-1.193-2.808 3.774A6 6 0 0 0 26 58.005c-.43 0-.832.049-1.217.125l-5.819-19.447a4.26 4.26 0 0 0 2.104-1.542l4.567 1.79.73-1.862-4.507-1.767c.084-.409.142-.837.142-1.302 0-1.096-.264-2.045-.733-2.819l15.084-10.558c.671.675 1.574 1.118 2.649 1.288V27h2v-5.086c1.091-.165 1.996-.6 2.665-1.273L58.694 31.3c-.439.757-.694 1.664-.694 2.7 0 .42.056.843.16 1.259l-4.531 1.812.742 1.857 4.64-1.856a4.66 4.66 0 0 0 2.606 1.749l-7.314 19.204C54.2 58.02 54.105 58 54 58m0 8c-1.963 0-3-1.038-3-3 0-1.878 1.525-3 3-3 1.934 0 3 1.065 3 3 0 1.962-1.037 3-3 3m-28 0c-1.906 0-3-1.094-3-3 0-1.931 1.065-2.995 3-2.995 2.479 0 3 1.629 3 2.995 0 1.934-1.066 3-3 3M14 34c0-1.935 1.065-3 3-3 1.934 0 3 1.065 3 3 0 1.962-1.037 3-3 3-1.99 0-3-1.01-3-3m26-20c1.963 0 3 1.037 3 3 0 1.959-1.037 2.994-3 2.994-1.935 0-3-1.063-3-2.994 0-1.935 1.065-3 3-3m23 17c1.934 0 3 1.065 3 3 0 1.934-1.066 3-3 3-1.948 0-3-1.546-3-3 0-1.907 1.094-3 3-3m5 3c0-3.038-1.963-5-5-5-1.14 0-2.134.295-2.932.822L44.695 18.92A6 6 0 0 0 45 17c0-3.084-1.916-5-5-5-3.037 0-5 1.962-5 5 0 .699.115 1.334.312 1.908L19.837 29.741C19.059 29.265 18.103 29 17 29c-3.037 0-5 1.962-5 5 0 3.073 1.904 4.985 4.97 4.997l5.959 19.912C21.714 59.766 21 61.184 21 63c0 3.037 1.963 5 5 5 2.687 0 4.527-1.541 4.917-4h18.166c.389 2.459 2.229 4 4.917 4 3.037 0 5-1.963 5-5 0-2.183-1.026-3.796-2.723-4.539l7.435-19.52C66.333 38.651 68 36.789 68 34\" /></g></svg>;\nexport default SvgBackup;","import * as React from \"react\";\nconst SvgBatch = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Batch_64\"}</title><defs><linearGradient id=\"linearGradient-bat\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Batch_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Compute\" fill=\"url(#linearGradient-bat)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Batch_Icon_64_Squid\" fill=\"#fff\" d=\"M40.226 58.897c1.239 0 2.245.997 2.245 2.227a2.237 2.237 0 0 1-2.245 2.227 2.237 2.237 0 0 1-2.245-2.227 2.237 2.237 0 0 1 2.245-2.227M21.3 40.876a2.237 2.237 0 0 1-2.245 2.227 2.237 2.237 0 0 1-2.245-2.227 2.237 2.237 0 0 1 2.245-2.227c1.24 0 2.245.998 2.245 2.227M61.38 66c-2.582 0-4.604-1.934-4.604-4.402 0-2.518 2.066-4.567 4.604-4.567 2.54 0 4.605 2.049 4.605 4.567 0 2.468-2.022 4.402-4.605 4.402m-4.604-25c0-2.518 2.066-4.567 4.604-4.567 2.54 0 4.605 2.049 4.605 4.567s-2.066 4.567-4.605 4.567c-2.538 0-4.604-2.049-4.604-4.567m-16.55 4.567c-2.539 0-4.603-2.049-4.603-4.567s2.064-4.567 4.604-4.567S44.83 38.482 44.83 41s-2.065 4.567-4.604 4.567M45.266 61c0 2.851-2.166 5-5.04 5s-5.04-2.149-5.04-5 2.166-5 5.04-5 5.04 2.149 5.04 5M34.177 21c0-3.14 2.882-6 6.049-6 3.166 0 6.048 2.86 6.048 6s-2.882 6-6.048 6-6.049-2.86-6.049-6m-15.12 25c-2.875 0-5.04-2.149-5.04-5 0-2.894 2.26-5.248 5.04-5.248 2.779 0 5.04 2.354 5.04 5.248 0 2.851-2.167 5-5.04 5m4.588 15.564c0 2.487-2.022 4.436-4.605 4.436-2.581 0-4.604-1.949-4.604-4.436 0-2.519 2.066-4.567 4.604-4.567 2.54 0 4.605 2.048 4.605 4.567m38.742-6.449v-7.633C65.56 46.999 68 44.28 68 41c0-3.621-2.97-6.567-6.621-6.567-3.306 0-6.047 2.42-6.534 5.567H46.76c-.436-2.82-2.683-5.049-5.526-5.482v-5.595c3.86-.526 7.056-3.999 7.056-7.923 0-4.262-3.768-8-8.064-8s-8.065 3.738-8.065 8c0 3.924 3.197 7.397 7.057 7.923v5.595c-2.843.433-5.09 2.662-5.526 5.482h-7.654c-.478-3.523-3.422-6.248-6.982-6.248C15.166 33.752 12 37.004 12 41c0 3.584 2.587 6.451 6.048 6.924v7.155c-3.179.477-5.628 3.199-5.628 6.485 0 3.609 2.909 6.436 6.62 6.436 3.713 0 6.621-2.827 6.621-6.436 0-3.275-2.431-5.99-5.596-6.48v-7.16c3.13-.428 5.54-2.817 5.971-5.924h7.656c.436 2.82 2.683 5.049 5.526 5.482v6.594c-3.462.473-6.049 3.34-6.049 6.924 0 3.925 3.1 7 7.057 7 3.956 0 7.056-3.075 7.056-7 0-3.584-2.586-6.451-6.048-6.924v-6.594c2.843-.433 5.09-2.662 5.526-5.482h8.085c.437 2.82 2.683 5.049 5.526 5.482v7.633c-3.171.484-5.612 3.203-5.612 6.483 0 3.59 2.908 6.402 6.62 6.402S68 65.188 68 61.598c0-3.28-2.44-5.999-5.613-6.483\" /></g></svg>;\nexport default SvgBatch;","import * as React from \"react\";\nconst SvgBedrock = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Bedrock_64\"}</title><g id=\"Icon-Architecture/64/Arch_Amazon-Bedrock_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Machine-Learning\" fill=\"#01a88d\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><g id=\"Icon-Service/64/Amazon-Bedrock_64\" fill=\"#fff\" transform=\"translate(12 12)\"><path id=\"Fill-1\" d=\"M52 27c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2M20.113 53.908l-3.248-1.894 6.665-4.166-1.06-1.696-7.557 4.723L9 47.425v-8.89l5.555-3.703-1.11-1.664-5.486 3.657L2 33.42v-4.84l6.496-3.712-.992-1.736L2 26.277V22.58l6-3.428 6 3.428v3.854l-4.515 2.709 1.03 1.714L15 28.166l4.485 2.69 1.03-1.713L16 26.433v-3.898l5.555-3.703c.278-.186.445-.498.445-.832v-7h-2v6.465l-5.041 3.36L9 17.42V8.574l5-2.916V14h2V4.49l4.113-2.398L28 4.72v28.713l-14.515 8.709 1.03 1.714L28 35.766v15.513zM50 38c0 1.103-.897 2-2 2s-2-.897-2-2 .897-2 2-2 2 .897 2 2M40 48c0 1.103-.897 2-2 2s-2-.897-2-2 .897-2 2-2 2 .897 2 2M39 8c0-1.103.897-2 2-2s2 .897 2 2-.897 2-2 2-2-.897-2-2m13 13c-1.859 0-3.411 1.28-3.858 3H30v-5h11a1 1 0 0 0 1-1v-6.142c1.72-.447 3-2 3-3.858 0-2.206-1.794-4-4-4s-4 1.794-4 4c0 1.858 1.28 3.41 3 3.858V17H30V4a1 1 0 0 0-.684-.95l-9-3a1 1 0 0 0-.82.086l-12 7A1 1 0 0 0 7 8v9.42L.504 21.132A1 1 0 0 0 0 22v12c0 .359.192.69.504.868L7 38.58V48a1 1 0 0 0 .496.864l12 7a1 1 0 0 0 .82.085l9-3a1 1 0 0 0 .684-.95V40h7v4.143c-1.72.447-3 2-3 3.858 0 2.206 1.794 4 4 4s4-1.794 4-4c0-1.858-1.28-3.411-3-3.858V39a1 1 0 0 0-1-1h-8v-5h12.5l2.138 2.85A3.97 3.97 0 0 0 44 38c0 2.206 1.794 4 4 4s4-1.794 4-4-1.794-4-4-4a3.94 3.94 0 0 0-1.881.492L43.8 31.4a1 1 0 0 0-.8-.4H30v-5h18.142c.447 1.72 1.999 3 3.858 3 2.206 0 4-1.794 4-4s-1.794-4-4-4\" /></g></g></svg>;\nexport default SvgBedrock;","import * as React from \"react\";\nconst SvgCe = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Cost-Explorer_16\"}</title><defs><linearGradient id=\"linearGradient-ace\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Cost-Explorer_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/AWS-Cost-Management\" fill=\"url(#linearGradient-ace)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Cost-Explorer_Icon_16_Squid\" fill=\"#fff\" d=\"M18 17.989a.387.387 0 0 1-.548 0l-1.431-1.431q.308-.24.547-.548l1.431 1.431a.39.39 0 0 1 .001.548M11.983 14.1a2.13 2.13 0 0 1 2.127-2.128 2.13 2.13 0 0 1 2.127 2.128 2.13 2.13 0 0 1-2.127 2.127 2.13 2.13 0 0 1-2.127-2.127m6.724 2.634-1.645-1.645c.105-.312.175-.642.175-.989a3.13 3.13 0 0 0-3.127-3.128 3.13 3.13 0 0 0-3.127 3.128 3.13 3.13 0 0 0 3.127 3.127c.348 0 .677-.07.991-.175l1.643 1.644c.262.262.61.406.981.407h.001a1.386 1.386 0 0 0 .981-2.369M5.579 9.047c.286 0 .578.294.578.581s-.292.579-.578.579c-.287 0-.579-.292-.579-.579s.292-.581.579-.581m2.997 2.025c.287 0 .579.292.579.579 0 .286-.292.579-.579.579-.286 0-.578-.293-.578-.579 0-.287.292-.579.578-.579M12.59 7.05c.287 0 .579.292.579.579 0 .286-.292.579-.579.579s-.579-.293-.579-.579c0-.287.292-.579.579-.579M16.61 5c.287 0 .579.293.579.579 0 .287-.292.579-.579.579-.286 0-.578-.292-.578-.579 0-.286.292-.579.578-.579M6.079 11.112q.14-.051.268-.126l.666.529c-.004.045-.015.09-.015.136 0 .841.737 1.579 1.578 1.579s1.579-.738 1.579-1.579c0-.214-.049-.42-.133-.61l1.963-1.964c.188.084.393.131.605.131.841 0 1.579-.738 1.579-1.579q-.001-.147-.031-.287l1.367-.659c.29.29.684.475 1.105.475.841 0 1.579-.738 1.579-1.579S17.451 4 16.61 4c-.84 0-1.578.738-1.578 1.579 0 .072.013.141.023.211l-1.42.684a1.57 1.57 0 0 0-1.045-.424c-.841 0-1.579.738-1.579 1.579 0 .28.088.546.228.78l-1.887 1.888a1.5 1.5 0 0 0-.776-.225c-.435 0-.841.201-1.133.509l-.422-.336a1.5 1.5 0 0 0 .136-.617c0-.668-.467-1.264-1.078-1.485V4.1h-1v4.043C4.467 8.364 4 8.96 4 9.628s.467 1.263 1.079 1.484V18.1h6.031v-1H6.079z\" /></g></svg>;\nexport default SvgCe;","import * as React from \"react\";\nconst SvgCloudcontrol = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Cloud-Control-API_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-Cloud-Control-API_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Developer-Tools\" fill=\"#c925d1\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><g id=\"Icon-Service/64/AWS-Cloud-Control-API_64\" fill=\"#fff\" transform=\"translate(12 18.15)\"><path id=\"Fill-1\" d=\"M2.053 28.764a7.1 7.1 0 0 1 1.712-5.556 6.94 6.94 0 0 1 5.186-2.34h24.506l-5.293 5.292 1.414 1.415 7-7a1 1 0 0 0 0-1.415l-7-7-1.414 1.415 5.293 5.293H8.951a8.94 8.94 0 0 0-6.683 3.014 9.1 9.1 0 0 0-2.2 7.123c.544 4.483 4.506 7.863 9.216 7.863h1.667v-2H9.284c-3.7 0-6.809-2.625-7.23-6.104m53.945-2.644c0 9.897-9.949 10.738-10.049 10.745l-27.368.002 5.293 5.293-1.414 1.415-7-7a1 1 0 0 1 0-1.415l7-7 1.414 1.415-5.293 5.293h27.295c.26-.023 8.122-.726 8.122-8.748 0-1.464-.274-2.784-.814-3.922-.696-1.465-1.84-2.659-3.399-3.548a11.2 11.2 0 0 0-1.876-.846 12.3 12.3 0 0 0-1.973-.512 1 1 0 0 1-.82-1.135l.005-.034a9 9 0 0 0-.256-2.125c-.534-2.09-1.902-3.498-3.754-3.859-1.794-.352-3.669.395-4.777 1.897a1 1 0 0 1-1.748-.261c-.823-2.333-2.013-4.294-3.539-5.828-1.873-1.885-7.016-5.938-14.27-2.855-4.195 1.781-7.48 6.914-7.48 11.683h-2c0-5.603 3.738-11.418 8.698-13.524 5.815-2.468 11.971-1.24 16.47 3.285 1.398 1.406 2.544 3.113 3.42 5.09 1.551-1.28 3.615-1.84 5.608-1.45 2.604.508 4.588 2.5 5.31 5.328.158.623.258 1.288.298 1.985q.741.173 1.467.426c.783.273 1.526.61 2.208.998 1.922 1.096 3.34 2.585 4.214 4.427.67 1.408 1.008 3.017 1.008 4.78\" /></g></g></svg>;\nexport default SvgCloudcontrol;","import * as React from \"react\";\nconst SvgCloudformation = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-CloudFormation_64\"}</title><defs><linearGradient id=\"linearGradient-clf\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-CloudFormation_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Management-Governance\" fill=\"url(#linearGradient-clf)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-CloudFormation_Icon_64_Squid\" fill=\"#fff\" d=\"M53 39.963h5V37.96h-5zM28 51.982h5v-2.003h-5zm-10 0h7v-2.003h-7zm0-6.01h12V43.97H18zm0-12.018h9v-2.003h-9zm0 6.01h33V37.96H18zm19 22.033H14V27.945h23v8.012h2v-9.014c0-.553-.448-1.001-1-1.001H13a1 1 0 0 0-1 1.001v36.055A1 1 0 0 0 13 64h25c.552 0 1-.449 1-1.002v-20.03h-2zm31-25.038c0 6.472-5.827 8.723-8.908 9.01L43 45.971V43.97h16c.195-.023 7-.757 7-7.01 0-5.695-5.137-6.85-6.166-7.025a1 1 0 0 1-.825-1.126c-.055-3.218-2.028-4.223-2.883-4.508-1.596-.53-3.375-.023-4.316 1.24a1 1 0 0 1-1.742-.262c-.621-1.742-1.522-2.87-2.775-4.125-3.134-3.114-7.388-3.975-11.368-2.3-2.088.88-3.913 2.875-5.003 5.474l-1.844-.777c1.292-3.076 3.506-5.461 6.072-6.543 4.755-2.002 9.821-.981 13.554 2.727 1.07 1.073 1.956 2.117 2.646 3.47 1.493-1.106 3.507-1.437 5.407-.805 2.432.81 3.97 2.922 4.218 5.73 3.406.86 7.025 3.583 7.025 8.83\" /></g></svg>;\nexport default SvgCloudformation;","import * as React from \"react\";\nconst SvgCloudfront = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-CloudFront_64\"}</title><defs><linearGradient id=\"linearGradient-cfr\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-CloudFront_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Networking-Content-Delivery\" fill=\"url(#linearGradient-cfr)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-CloudFront_Icon_64_Squid\" fill=\"#fff\" d=\"M55.122 52.123c0-1.654-1.346-3-3-3s-3 1.346-3 3 1.346 3 3 3 3-1.346 3-3m2 0c0 2.757-2.243 5-5 5s-5-2.243-5-5 2.243-5 5-5 5 2.243 5 5m-26.73-14.431c0-1.654-1.346-3-3-3-1.655 0-3 1.346-3 3s1.345 3 3 3c1.654 0 3-1.346 3-3m2 0c0 2.757-2.244 5-5 5-2.757 0-5-2.243-5-5s2.243-5 5-5c2.756 0 5 2.243 5 5m7.338-15.685c0 1.654 1.346 3 3 3 1.655 0 3-1.346 3-3 0-1.655-1.345-3-3-3-1.654 0-3 1.345-3 3m-2 0c0-2.757 2.244-5 5-5 2.757 0 5 2.243 5 5s-2.243 5-5 5c-2.756 0-5-2.243-5-5M66 40c0-9.273-4.972-17.852-12.988-22.491-1.437.29-2.827.687-4.561 1.314l-.68-1.881c.905-.326 1.715-.59 2.495-.816A25.95 25.95 0 0 0 40 14c-1.689 0-3.351.175-4.975.492a32 32 0 0 1 3.232 2.142l-1.209 1.593c-1.428-1.082-2.908-1.999-4.851-3.017-9.819 3.088-16.891 11.748-18.014 21.918a35 35 0 0 1 6.231-.698l.049 1.999c-2.3.057-4.276.301-6.436.776-.009.265-.027.533-.027.795a25.94 25.94 0 0 0 11.327 21.447c-1.253-3.731-1.877-7.257-1.877-10.701 0-1.964.338-3.577.695-5.284.083-.395.167-.797.249-1.214l1.963.387q-.127.635-.254 1.238c-.35 1.672-.653 3.116-.653 4.873 0 3.908.858 7.949 2.604 12.337A25.7 25.7 0 0 0 40 66c2.756 0 5.446-.44 8.012-1.286a33.5 33.5 0 0 0 2.378-6.015l1.921.557a36 36 0 0 1-1.602 4.421 25.4 25.4 0 0 0 4.574-2.672 36 36 0 0 0-1.124-2.506l1.789-.895c.348.696.667 1.408.972 2.124C62.705 54.775 66 47.66 66 40m2 0c0 8.727-3.966 16.799-10.879 22.149a27.5 27.5 0 0 1-5.532 3.323c-.833.378-1.681.728-2.553 1.022A27.5 27.5 0 0 1 40 68c-4.6 0-9.168-1.146-13.212-3.314A27.95 27.95 0 0 1 12 40c0-.686.018-1.208.059-1.691.681-11.684 8.697-21.797 19.942-25.143A27.7 27.7 0 0 1 40 12a27.87 27.87 0 0 1 13.684 3.579A28.03 28.03 0 0 1 68 40M37.314 25.463 36 23.956c-2.242 1.956-3.986 4.033-6.023 7.17l1.678 1.089c1.928-2.971 3.568-4.927 5.659-6.752m-3.039 12.964-.65 1.891c4.593 1.577 8.6 4.093 12.609 7.918l1.381-1.447c-4.226-4.031-8.465-6.688-13.34-8.362m13.371-11.759c3.752 5.722 5.865 12.003 6.279 18.67l-1.996.124c-.393-6.316-2.396-12.27-5.954-17.697z\" /></g></svg>;\nexport default SvgCloudfront;","import * as React from \"react\";\nconst SvgCloudtrail = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Cloud-Trail_64\"}</title><defs><linearGradient id=\"linearGradient-ctr\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Cloud-Trail_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Management-Governance\" fill=\"url(#linearGradient-ctr)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Cloud-Trail_Icon_64_Squid\" fill=\"#fff\" d=\"M25 52.996h4v-2.002h-4zm34.971-14.833c-.225-3.037-1.71-5.273-4.069-6.063-1.899-.633-3.991-.186-5.584 1.113-.966-1.905-2.418-3.771-3.616-4.953-4.296-4.24-9.034-5.322-14.086-3.215C28.106 26.922 24 33.087 24 37.981v.19c-2.707.915-4.891 2.903-5.926 5.438l1.852.757c1.319-3.23 4.406-4.244 5.321-4.477.443-.113.753-.512.753-.97v-.938c0-4.045 3.657-9.536 7.385-11.088 4.295-1.79 8.193-.882 11.913 2.792 1.582 1.56 3.129 3.876 3.762 5.633a.999.999 0 0 0 1.739.262c1.105-1.47 2.897-2.106 4.47-1.58 1.735.58 2.731 2.397 2.731 4.982a1 1 0 0 0 .836.987c.733.122 7.164 1.383 7.164 8.022 0 6.877-6.719 7.005-7 7.007H36V57h23.002C62.114 56.994 68 55.104 68 47.991c0-6.207-4.721-9.002-8.029-9.828M31 52.996h14v-2.002H31zM27 57h6v-2.002h-6zm-15 0h3v-2.002h-3zm3-8.008h9V46.99h-9zm-2 4.004h10v-2.002H13zm14-4.004h7V46.99h-7zM17 57h8v-2.002h-8z\" /></g></svg>;\nexport default SvgCloudtrail;","import * as React from \"react\";\nconst SvgCloudwatch = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-CloudWatch_64\"}</title><defs><linearGradient id=\"linearGradient-cwl\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-CloudWatch_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Management-Governance\" fill=\"url(#linearGradient-cwl)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-CloudWatch_Icon_64_Squid\" fill=\"#fff\" d=\"M55.06 46.777c0-3.909-3.202-7.09-7.138-7.09s-7.136 3.181-7.136 7.09c0 3.91 3.2 7.09 7.136 7.09s7.137-3.18 7.137-7.09m2.01 0c0 5.011-4.103 9.087-9.147 9.087-5.043 0-9.147-4.076-9.147-9.087 0-5.01 4.104-9.086 9.147-9.086s9.148 4.076 9.148 9.086m8.44 13.697L58.5 54.203a13 13 0 0 1-1.947 2.16l6.998 6.27a1.474 1.474 0 0 0 2.066-.107 1.453 1.453 0 0 0-.108-2.052m-17.588-2.812c6.043 0 10.958-4.883 10.958-10.885s-4.915-10.884-10.958-10.884c-6.041 0-10.957 4.882-10.957 10.884s4.916 10.885 10.957 10.885m19.19 6.2A3.48 3.48 0 0 1 64.529 65a3.48 3.48 0 0 1-2.322-.883L54.931 57.6a12.94 12.94 0 0 1-7.009 2.06c-7.15 0-12.967-5.779-12.967-12.882s5.817-12.881 12.967-12.881 12.969 5.779 12.969 12.881c0 2.038-.492 3.96-1.344 5.674l7.309 6.54a3.444 3.444 0 0 1 .256 4.872M21.28 29.393c0 .519.032 1.036.094 1.536a.994.994 0 0 1-.823 1.106c-2.472.634-6.54 2.553-6.54 8.31 0 4.348 2.413 6.748 4.439 7.996.691.433 1.51.664 2.373.673l12.122.011-.002 1.997-12.131-.01c-1.246-.014-2.428-.351-3.428-.977C15.377 48.797 12 45.89 12 40.345c0-6.683 4.6-9.153 7.3-10.026q-.03-.462-.03-.926c0-5.46 3.728-11.123 8.672-13.171 5.782-2.407 11.908-1.214 16.384 3.189 1.388 1.364 2.529 3.02 3.404 4.937a6.5 6.5 0 0 1 4.154-1.502c3.002 0 6.382 2.264 6.984 7.215 2.812.644 8.753 2.894 8.753 10.362 0 2.981-.941 5.444-2.798 7.319l-1.433-1.401c1.473-1.488 2.22-3.479 2.22-5.918 0-6.532-5.504-8.157-7.873-8.551a1 1 0 0 1-.823-1.157c-.329-4.055-2.753-5.872-5.03-5.872-1.437 0-2.784.695-3.697 1.907a1.006 1.006 0 0 1-1.75-.258c-.823-2.266-2.01-4.171-3.525-5.661-3.88-3.816-9.184-4.85-14.195-2.766-4.17 1.727-7.437 6.702-7.437 11.328\" /></g></svg>;\nexport default SvgCloudwatch;","import * as React from \"react\";\nconst SvgCodeartifact = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-CodeArtifact_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-CodeArtifact_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Developer-Tools\" fill=\"#c925d1\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><g id=\"Icon-Service/64/AWS-CodeArtifact_64\" fill=\"#fff\" transform=\"translate(13 12)\"><path id=\"AWS-CodeArtifact_Icon_64_Squid\" d=\"m23.848 34.128 5.925-13.235 1.826.818-5.925 13.234zm8.295-4.031 3.559-2.596-3.135-3.18 1.424-1.404 3.949 4.005a.999.999 0 0 1-.122 1.51l-4.495 3.28zm-8.839-5.69-3.61 2.635 3.144 3.18-1.422 1.406-3.962-4.005a1.002 1.002 0 0 1 .122-1.511l4.548-3.32zM22.152 1.721 2 13.636v23.235H0V13.066a1 1 0 0 1 .492-.861L21.134 0zM55 18.871v24.064a1 1 0 0 1-.501.867L33.873 55.678l-.998-1.733L53 42.357V18.871zM43 36.664l-15.08 8.575L13 36.496V19.172l14.91-8.573L43 19.347zm2 .582V18.771a1 1 0 0 0-.498-.866L28.414 8.579a1 1 0 0 0-1-.002l-15.912 9.15a1 1 0 0 0-.502.867v18.475c0 .355.189.683.494.863l15.913 9.325a1 1 0 0 0 1 .006l16.087-9.148a1 1 0 0 0 .506-.869\" /></g></g></svg>;\nexport default SvgCodeartifact;","import * as React from \"react\";\nconst SvgCodebuild = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-CodeBuild_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-CodeBuild_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Developer-Tools\" fill=\"#c925d1\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-CodeBuild_Icon_64_Squid\" fill=\"#fff\" d=\"m65.44 22-5.954-5.451L53.526 22zm-8.238-6.062-12.078.018 6.451 5.127zM51.755 33.5 42.248 37h18.287zM37.798 57h26.798V39H37.798zm11.725-35-6.586-5.234L36.396 22zm-15.214-.885 6.44-5.152-12.837.019zM32.225 22l-6.572-5.274L19.08 22h13.145m-4.352 2h-8.03l8.03 7.965zm0 11.083-9.425 8.582 9.425 9.224zm0 21.054-9.925 9.702V66h9.925zm-9.925-10.174v17.09l8.736-8.54zm0-4.539 8.672-7.896-8.672-8.6zm-.993-20.276 6.43-5.159-6.43.01zM14.97 14h-1.985v10h1.985V14m53.963 9.36a.99.99 0 0 1-.926.64H52.686v8l13.278 5.074-.001.002a1 1 0 0 1 .618.924v20c0 .552-.444 1-.992 1H36.805a.997.997 0 0 1-.992-1V38c0-.428.27-.787.646-.929l-.003-.007L50.701 32v-8H29.858v43c0 .552-.444 1-.993 1h-11.91a.997.997 0 0 1-.992-1V26h-3.97A.997.997 0 0 1 11 25V13c0-.552.445-1 .993-1h3.97c.548 0 .992.448.992 1v.999L59.633 14l9.042 8.26c.303.278.406.715.258 1.1M48.34 55.308l5.776-13.225-1.816-.806-5.777 13.225zm5.426-4.42 1.283 1.527 4.288-3.658a1.007 1.007 0 0 0 .064-1.465l-3.579-3.659-1.413 1.405 2.826 2.89zM40.87 47.984a1 1 0 0 1 .08-1.541l4.87-3.631 1.182 1.607L43.1 47.33l3.275 3.024-1.342 1.475z\" /></g></svg>;\nexport default SvgCodebuild;","import * as React from \"react\";\nconst SvgCodecommit = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-CodeCommit_64\"}</title><defs><linearGradient id=\"linearGradient-com\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-CodeCommit_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Developer-Tools\" fill=\"url(#linearGradient-com)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-CodeCommit_Icon_64_Squid\" fill=\"#fff\" d=\"M26.628 28.105h-2.017v-6.982c0-.558.36-.99.926-.99l7.144-.007v1.994H27.95l4.862 4.819-1.445 1.434-4.806-4.728zm28.07 10.867 1.869.827-6.541 14.446-1.868-.827zm1.311 10.493 4.003-2.89-3.526-3.535 1.458-1.422 4.36 4.373a1.002 1.002 0 0 1-.126 1.527l-4.963 3.58zm-9.043-8.802 1.205 1.633-4.061 2.932 3.538 3.536-1.454 1.424-4.374-4.373a1 1 0 0 1 .124-1.528zM69 24.13v42.858c0 .56-.458 1.012-1.024 1.012h-31.26c-.272 0-.53-.107-.723-.297a.96.96 0 0 1-.285-.7V55.034h2.018v10.971h29.256V25.113H37.726v-1.995h30.25c.566 0 1.024.453 1.024 1.012M33.182 34.588c0-1.927 1.585-3.495 3.535-3.495s3.535 1.568 3.535 3.495-1.585 3.495-3.535 3.495-3.535-1.568-3.535-3.495M17.549 66.009c-1.95 0-3.535-1.568-3.535-3.495s1.585-3.494 3.535-3.494 3.535 1.567 3.535 3.494-1.585 3.495-3.535 3.495m-3.535-23.442c0-1.927 1.585-3.495 3.535-3.495 1.982 0 3.535 1.535 3.535 3.495 0 1.927-1.585 3.495-3.535 3.495s-3.535-1.568-3.535-3.495m.004-25.081c0-1.925 1.584-3.491 3.53-3.491 1.948 0 3.532 1.566 3.532 3.49s-1.584 3.491-3.531 3.491-3.531-1.566-3.531-3.49m23.708 29.762v-7.276c2.57-.477 4.535-2.708 4.535-5.384 0-3.022-2.487-5.482-5.544-5.482s-5.545 2.46-5.545 5.482c0 2.676 1.966 4.907 4.536 5.384v7.276c0 1.163-.786 2.218-1.98 2.686l-10.451 4.1c-1.673.657-2.903 1.948-3.434 3.496-.433-.195-.801-.336-1.285-.416v-9.146c2.623-.433 4.535-2.687 4.535-5.401 0-2.764-1.878-4.972-4.535-5.393V22.889c2.626-.431 4.54-2.688 4.54-5.403 0-3.025-2.49-5.486-5.55-5.486S12 14.46 12 17.486c0 2.64 2.022 4.85 4.54 5.369v14.347c-2.515.518-4.536 2.727-4.536 5.365s2.02 4.846 4.536 5.365v9.217c-2.515.52-4.536 2.727-4.536 5.365 0 3.022 2.488 5.482 5.545 5.482s5.544-2.46 5.544-5.482a5.43 5.43 0 0 0-1.458-3.693c.167-1.27 1.066-2.384 2.397-2.905l10.45-4.1c1.98-.777 3.244-2.57 3.244-4.568\" /></g></svg>;\nexport default SvgCodecommit;","import * as React from \"react\";\nconst SvgCodeconnections = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-CodeStar_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-CodeStar_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Developer-Tools\" fill=\"#c925d1\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-CodeStar_Icon_64_Squid\" fill=\"#fff\" d=\"M62.95 34.806a4.116 4.116 0 0 0-2.07-7.683 4.1 4.1 0 0 0-2.055.553 4.1 4.1 0 0 0-1.924 2.5 4.08 4.08 0 0 0 .412 3.123 4.136 4.136 0 0 0 5.637 1.507m2.56 4.21.994 1.719-4.83 2.781-1.204-6.203c-1.96-.137-3.824-1.2-4.879-3.022a6.05 6.05 0 0 1-.611-4.63 6.07 6.07 0 0 1 2.85-3.703 6.08 6.08 0 0 1 4.64-.61 6.07 6.07 0 0 1 3.712 2.843 6.1 6.1 0 0 1-2.238 8.333 6 6 0 0 1-1.483.612l.634 3.27zm-6.95 12.018a4.1 4.1 0 0 0-3.13-.412 4.1 4.1 0 0 0-2.505 1.919c-.778 1.343-.69 2.938.061 4.182l.855.984-.02.017c.19.161.391.313.614.44.955.55 2.067.696 3.13.412a4.116 4.116 0 0 0 .995-7.542m3.232 6.615a6.07 6.07 0 0 1-3.712 2.843 6.086 6.086 0 0 1-4.64-.61 6 6 0 0 1-1.134-.85l-1.428 1.236 2.415 1.389-.995 1.72-4.833-2.784 3.636-3.143a6.08 6.08 0 0 1 .102-5.901 6.07 6.07 0 0 1 3.712-2.842 6.08 6.08 0 0 1 4.64.609 6.06 6.06 0 0 1 2.848 3.704 6.05 6.05 0 0 1-.61 4.629m-21.652 4.25a4.128 4.128 0 0 0-8.253 0 4.127 4.127 0 0 0 8.253 0m1.989 0c0 3.364-2.743 6.101-6.116 6.101-3.371 0-6.114-2.737-6.114-6.101 0-.473.058-.932.162-1.374l-2.564-.886v2.99H25.51v-5.777l5.313 1.838a6.112 6.112 0 0 1 11.307 3.209m-19.37-15.927a4.1 4.1 0 0 0-2.504-1.919 4.1 4.1 0 0 0-3.13.412 4.1 4.1 0 0 0-1.923 2.5 4.07 4.07 0 0 0 .413 3.123 4.1 4.1 0 0 0 2.504 1.918 4.1 4.1 0 0 0 3.131-.411 4.115 4.115 0 0 0 1.51-5.623m-.514 7.34a6.08 6.08 0 0 1-4.64.61 6.07 6.07 0 0 1-3.713-2.842 6.05 6.05 0 0 1-.61-4.63 6.06 6.06 0 0 1 2.848-3.704c.286-.165.584-.298.887-.414L16.4 39.16l-2.404 1.388L13 38.831l4.821-2.784 1.143 5.885c.6-.022 1.209.046 1.805.204a6.07 6.07 0 0 1 3.714 2.844c1.685 2.912.68 6.651-2.238 8.333m1.932-30.746a4.131 4.131 0 0 0-5.636 1.507 4.08 4.08 0 0 0-.414 3.124 4.1 4.1 0 0 0 1.924 2.5c.954.55 2.065.697 3.13.41a4.116 4.116 0 0 0 .995-7.542m3.187.448a6.093 6.093 0 0 1-3.668 9.01 6.097 6.097 0 0 1-4.64-.61 6.07 6.07 0 0 1-2.85-3.703 6.05 6.05 0 0 1 .612-4.63c1.686-2.913 5.434-3.915 8.353-2.233.33.19.631.41.912.648l2.537-2.199-2.407-1.39.996-1.718 4.816 2.783zm20.092-4.912a4.128 4.128 0 0 0-8.254 0 4.127 4.127 0 0 0 4.127 4.117 4.126 4.126 0 0 0 4.127-4.117m6.377 4.597-5.097-1.754a6.12 6.12 0 0 1-5.407 3.258c-3.373 0-6.116-2.737-6.116-6.1 0-3.365 2.743-6.103 6.116-6.103s6.116 2.738 6.116 6.102c0 .327-.033.646-.084.96l2.484.855v-2.545h1.988zm-9.829 9.927-1.821-.797-7.006 15.92 1.822.798zm7.56 7.595-5.741-5.594-1.388 1.42 4.08 3.975-4.563 3.416 1.195 1.586zm-18.109 4.045-5.74-5.593 6.417-4.804 1.194 1.587-4.562 3.415 4.079 3.976z\" /></g></svg>;\nexport default SvgCodeconnections;","import * as React from \"react\";\nconst SvgCodedeploy = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-CodeDeploy_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-CodeDeploy_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Developer-Tools\" fill=\"#c925d1\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-CodeDeploy_Icon_64_Squid\" fill=\"#fff\" d=\"M28 66.982h26.001v-17.15h-26zm27.001-19.168h-28c-.554 0-1 .452-1 1.009v19.168c0 .557.446 1.009 1 1.009h28c.553 0 1-.452 1-1.009V48.823c0-.557-.447-1.009-1-1.009M37.096 65.2l6.056-13.872 1.83.814-6.056 13.872zm11.441-6.688-3.406-3.344 1.394-1.447 4.246 4.169a1.016 1.016 0 0 1-.099 1.531L45.925 63l-1.197-1.615zm-17.147-.352a1.012 1.012 0 0 1 .098-1.53l4.748-3.58 1.198 1.614-3.81 2.873 3.407 3.346-1.394 1.446zM66.044 35.05c-1.92-1.872-4.472-2.903-7.19-2.903-3.542 0-6.435 1.26-8.228 3.36-.44-9.668-2.65-17.446-5.81-21.15 11.31 1.709 19.895 10.065 21.794 21.251a59 59 0 0 0-.566-.558m-17.978.347-.358-.347c-1.919-1.872-4.477-2.903-7.201-2.903-3.465 0-6.285 1.166-8.08 3.152.66-12.71 4.556-21.274 8.089-21.281h.017c3.591.022 7.554 8.884 8.11 21.95a40 40 0 0 0-.577-.57m-17.679.674a38 38 0 0 0-.845-.845l-.18-.176c-1.92-1.872-4.477-2.903-7.202-2.903-3.093 0-5.701.937-7.505 2.573 2.377-10.716 10.78-18.675 21.564-20.358-3.218 3.778-5.453 11.783-5.832 21.71M40.527 12C24.857 12 12.602 23.942 12 39.78c-.014.378.198.72.507.91l10.242 6.734 1.092-1.691-9.688-6.36c.51-2.16 2.087-3.785 4.353-4.608 1.076-.39 2.307-.6 3.653-.6 2.203 0 4.267.829 5.811 2.336l.181.176c1.38 1.344 2.196 3.799 2.196 3.808.007.061 1.37 5.155 1.37 5.155l1.929-.528-1.299-4.836.008-.123c.485-4.416 4.528-5.989 8.15-5.989 2.204 0 4.267.83 5.811 2.337 0 0 2.18 1.675 2.34 3.647l.01.134-1.312 4.827 1.93.534 1.364-5.03q.01-.057.016-.124c.271-3.854 3.482-6.325 8.19-6.325 2.195 0 4.254.83 5.798 2.337 1.2 1.17 2.046 2.056 2.28 2.927l-8.638 6.068 1.143 1.656 9.135-6.418c.249-.197.428-.905.427-.943C68.72 23.948 56.497 12.01 40.527 12\" /></g></svg>;\nexport default SvgCodedeploy;","import * as React from \"react\";\nconst SvgCodepipeline = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-CodePipeline_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-CodePipeline_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Developer-Tools\" fill=\"#c925d1\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-CodePipeline_Icon_64_Squid\" fill=\"#fff\" d=\"M30 31h5v-2h-5zm6.667 30.166-1.85-.759 7.592-18.522 1.85.759zm8.904-5.386 5.497-4.822-5.493-4.761 1.311-1.512 6.359 5.513a1.002 1.002 0 0 1 .004 1.508l-6.359 5.578zm-20.062-4.732a1 1 0 0 1 .338-.755l6.337-5.602 1.324 1.499-5.479 4.843 5.449 4.697-1.307 1.515-6.316-5.446a1 1 0 0 1-.346-.751M62.535 35h-44.07A3.47 3.47 0 0 1 15 31.536V31h12v-2H15V18.464A3.47 3.47 0 0 1 18.465 15h44.07A3.47 3.47 0 0 1 66 18.464V29H38v2h28v.536A3.47 3.47 0 0 1 62.535 35M22 66h36V37H22zm40.535-53h-44.07A5.47 5.47 0 0 0 13 18.464v13.072A5.47 5.47 0 0 0 18.465 37H20v30a1 1 0 0 0 1 1h38a1 1 0 0 0 1-1V37h2.535A5.47 5.47 0 0 0 68 31.536V18.464A5.47 5.47 0 0 0 62.535 13\" /></g></svg>;\nexport default SvgCodepipeline;","import * as React from \"react\";\nconst SvgCodestarConnections = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-CodeStar_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-CodeStar_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Developer-Tools\" fill=\"#c925d1\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-CodeStar_Icon_64_Squid\" fill=\"#fff\" d=\"M62.95 34.806a4.116 4.116 0 0 0-2.07-7.683 4.1 4.1 0 0 0-2.055.553 4.1 4.1 0 0 0-1.924 2.5 4.08 4.08 0 0 0 .412 3.123 4.136 4.136 0 0 0 5.637 1.507m2.56 4.21.994 1.719-4.83 2.781-1.204-6.203c-1.96-.137-3.824-1.2-4.879-3.022a6.05 6.05 0 0 1-.611-4.63 6.07 6.07 0 0 1 2.85-3.703 6.08 6.08 0 0 1 4.64-.61 6.07 6.07 0 0 1 3.712 2.843 6.1 6.1 0 0 1-2.238 8.333 6 6 0 0 1-1.483.612l.634 3.27zm-6.95 12.018a4.1 4.1 0 0 0-3.13-.412 4.1 4.1 0 0 0-2.505 1.919c-.778 1.343-.69 2.938.061 4.182l.855.984-.02.017c.19.161.391.313.614.44.955.55 2.067.696 3.13.412a4.116 4.116 0 0 0 .995-7.542m3.232 6.615a6.07 6.07 0 0 1-3.712 2.843 6.086 6.086 0 0 1-4.64-.61 6 6 0 0 1-1.134-.85l-1.428 1.236 2.415 1.389-.995 1.72-4.833-2.784 3.636-3.143a6.08 6.08 0 0 1 .102-5.901 6.07 6.07 0 0 1 3.712-2.842 6.08 6.08 0 0 1 4.64.609 6.06 6.06 0 0 1 2.848 3.704 6.05 6.05 0 0 1-.61 4.629m-21.652 4.25a4.128 4.128 0 0 0-8.253 0 4.127 4.127 0 0 0 8.253 0m1.989 0c0 3.364-2.743 6.101-6.116 6.101-3.371 0-6.114-2.737-6.114-6.101 0-.473.058-.932.162-1.374l-2.564-.886v2.99H25.51v-5.777l5.313 1.838a6.112 6.112 0 0 1 11.307 3.209m-19.37-15.927a4.1 4.1 0 0 0-2.504-1.919 4.1 4.1 0 0 0-3.13.412 4.1 4.1 0 0 0-1.923 2.5 4.07 4.07 0 0 0 .413 3.123 4.1 4.1 0 0 0 2.504 1.918 4.1 4.1 0 0 0 3.131-.411 4.115 4.115 0 0 0 1.51-5.623m-.514 7.34a6.08 6.08 0 0 1-4.64.61 6.07 6.07 0 0 1-3.713-2.842 6.05 6.05 0 0 1-.61-4.63 6.06 6.06 0 0 1 2.848-3.704c.286-.165.584-.298.887-.414L16.4 39.16l-2.404 1.388L13 38.831l4.821-2.784 1.143 5.885c.6-.022 1.209.046 1.805.204a6.07 6.07 0 0 1 3.714 2.844c1.685 2.912.68 6.651-2.238 8.333m1.932-30.746a4.131 4.131 0 0 0-5.636 1.507 4.08 4.08 0 0 0-.414 3.124 4.1 4.1 0 0 0 1.924 2.5c.954.55 2.065.697 3.13.41a4.116 4.116 0 0 0 .995-7.542m3.187.448a6.093 6.093 0 0 1-3.668 9.01 6.097 6.097 0 0 1-4.64-.61 6.07 6.07 0 0 1-2.85-3.703 6.05 6.05 0 0 1 .612-4.63c1.686-2.913 5.434-3.915 8.353-2.233.33.19.631.41.912.648l2.537-2.199-2.407-1.39.996-1.718 4.816 2.783zm20.092-4.912a4.128 4.128 0 0 0-8.254 0 4.127 4.127 0 0 0 4.127 4.117 4.126 4.126 0 0 0 4.127-4.117m6.377 4.597-5.097-1.754a6.12 6.12 0 0 1-5.407 3.258c-3.373 0-6.116-2.737-6.116-6.1 0-3.365 2.743-6.103 6.116-6.103s6.116 2.738 6.116 6.102c0 .327-.033.646-.084.96l2.484.855v-2.545h1.988zm-9.829 9.927-1.821-.797-7.006 15.92 1.822.798zm7.56 7.595-5.741-5.594-1.388 1.42 4.08 3.975-4.563 3.416 1.195 1.586zm-18.109 4.045-5.74-5.593 6.417-4.804 1.194 1.587-4.562 3.415 4.079 3.976z\" /></g></svg>;\nexport default SvgCodestarConnections;","import * as React from \"react\";\nconst SvgCognitoIdentity = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Cognito_64\"}</title><defs><linearGradient id=\"linearGradient-cgn\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#bd0816\" /><stop offset=\"100%\" stopColor=\"#ff5252\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Cognito_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"url(#linearGradient-cgn)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Cognito_Icon_64_Squid\" fill=\"#fff\" d=\"M16.964 35.808h12.905v-1.983H16.964zM61.376 50.23l1.403 1.402-7.372 7.36a.994.994 0 0 1-1.403 0l-3.71-3.702L51.7 53.89l3.006 3.001zm4.568 5.463a9.44 9.44 0 0 1-2.197 5.015 9.55 9.55 0 0 1-3.143 2.406 9.37 9.37 0 0 1-5.158.833 9.4 9.4 0 0 1-4.706-1.966 9.43 9.43 0 0 1-3.518-8.573 9.47 9.47 0 0 1 5.058-7.282 9.34 9.34 0 0 1 5.441-.972 9.43 9.43 0 0 1 7.26 5.088 9.45 9.45 0 0 1 .963 5.45m.806-6.35a11.406 11.406 0 0 0-15.381-4.978 11.45 11.45 0 0 0-6.118 8.805 11.4 11.4 0 0 0 4.254 10.364A11.38 11.38 0 0 0 56.592 66c1.68 0 3.338-.37 4.864-1.094a11.5 11.5 0 0 0 3.801-2.91 11.4 11.4 0 0 0 2.659-6.064 11.4 11.4 0 0 0-1.166-6.588m-39.86-7.588h3.972v-1.983H26.89zm-9.926 0h7.941v-1.983h-7.941zm-.858-25.773h44.402c1.17 0 2.12 1.156 2.12 2.578v7.334H59.65V20.94a.99.99 0 0 0-.993-.991H35.825a.99.99 0 0 0-.993.99v4.957H13.985v-7.334c0-1.398.972-2.578 2.12-2.578m31.15 9.625c2.305 0 4.18 1.853 4.18 4.131a4.11 4.11 0 0 1-2.163 3.608 4.25 4.25 0 0 1-4.043 0 4.11 4.11 0 0 1-2.154-3.608c0-2.278 1.874-4.131 4.18-4.131m-33.27 21.5v-19.23h20.846v16.851c0 .549.444.992.993.992h10.378v-1.983h-8.291a9.02 9.02 0 0 1 6.522-8.488c1.755.82 3.85.828 5.633-.001a9.1 9.1 0 0 1 5.226 4.005l1.699-1.027a11.1 11.1 0 0 0-5.147-4.432 6.05 6.05 0 0 0 1.577-4.056c0-3.37-2.767-6.114-6.166-6.114s-6.166 2.743-6.166 6.114c0 1.518.578 2.944 1.564 4.045a11 11 0 0 0-5.836 5.789V21.93h20.847v15.86h1.985v-9.912h2.978l.001 14.869h1.986l-.001-24.186c0-2.515-1.842-4.561-4.106-4.561H16.106C13.84 14 12 16.046 12 18.56v28.548c0 2.515 1.841 4.56 4.106 4.56h26.668v-1.982H16.106c-1.149 0-2.12-1.18-2.12-2.578\" /></g></svg>;\nexport default SvgCognitoIdentity;","import * as React from \"react\";\nconst SvgCognitoIdp = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Cognito_64\"}</title><defs><linearGradient id=\"linearGradient-cgn\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#bd0816\" /><stop offset=\"100%\" stopColor=\"#ff5252\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Cognito_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"url(#linearGradient-cgn)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Cognito_Icon_64_Squid\" fill=\"#fff\" d=\"M16.964 35.808h12.905v-1.983H16.964zM61.376 50.23l1.403 1.402-7.372 7.36a.994.994 0 0 1-1.403 0l-3.71-3.702L51.7 53.89l3.006 3.001zm4.568 5.463a9.44 9.44 0 0 1-2.197 5.015 9.55 9.55 0 0 1-3.143 2.406 9.37 9.37 0 0 1-5.158.833 9.4 9.4 0 0 1-4.706-1.966 9.43 9.43 0 0 1-3.518-8.573 9.47 9.47 0 0 1 5.058-7.282 9.34 9.34 0 0 1 5.441-.972 9.43 9.43 0 0 1 7.26 5.088 9.45 9.45 0 0 1 .963 5.45m.806-6.35a11.406 11.406 0 0 0-15.381-4.978 11.45 11.45 0 0 0-6.118 8.805 11.4 11.4 0 0 0 4.254 10.364A11.38 11.38 0 0 0 56.592 66c1.68 0 3.338-.37 4.864-1.094a11.5 11.5 0 0 0 3.801-2.91 11.4 11.4 0 0 0 2.659-6.064 11.4 11.4 0 0 0-1.166-6.588m-39.86-7.588h3.972v-1.983H26.89zm-9.926 0h7.941v-1.983h-7.941zm-.858-25.773h44.402c1.17 0 2.12 1.156 2.12 2.578v7.334H59.65V20.94a.99.99 0 0 0-.993-.991H35.825a.99.99 0 0 0-.993.99v4.957H13.985v-7.334c0-1.398.972-2.578 2.12-2.578m31.15 9.625c2.305 0 4.18 1.853 4.18 4.131a4.11 4.11 0 0 1-2.163 3.608 4.25 4.25 0 0 1-4.043 0 4.11 4.11 0 0 1-2.154-3.608c0-2.278 1.874-4.131 4.18-4.131m-33.27 21.5v-19.23h20.846v16.851c0 .549.444.992.993.992h10.378v-1.983h-8.291a9.02 9.02 0 0 1 6.522-8.488c1.755.82 3.85.828 5.633-.001a9.1 9.1 0 0 1 5.226 4.005l1.699-1.027a11.1 11.1 0 0 0-5.147-4.432 6.05 6.05 0 0 0 1.577-4.056c0-3.37-2.767-6.114-6.166-6.114s-6.166 2.743-6.166 6.114c0 1.518.578 2.944 1.564 4.045a11 11 0 0 0-5.836 5.789V21.93h20.847v15.86h1.985v-9.912h2.978l.001 14.869h1.986l-.001-24.186c0-2.515-1.842-4.561-4.106-4.561H16.106C13.84 14 12 16.046 12 18.56v28.548c0 2.515 1.841 4.56 4.106 4.56h26.668v-1.982H16.106c-1.149 0-2.12-1.18-2.12-2.578\" /></g></svg>;\nexport default SvgCognitoIdp;","import * as React from \"react\";\nconst SvgConfig = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Config_16\"}</title><defs><linearGradient id=\"linearGradient-cf\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Config_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Management-Governance\" fill=\"url(#linearGradient-cf)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Config_Icon_16_Squid\" fill=\"#fff\" d=\"M16.059 15.04a.547.547 0 1 0-1.076.198.547.547 0 0 0 1.076-.198m.984-.178a1.548 1.548 0 0 1-1.521 1.822A1.55 1.55 0 0 1 14 15.414a1.54 1.54 0 0 1 .251-1.157c.236-.339.589-.567.996-.64a1.55 1.55 0 0 1 1.796 1.245m1.546.908-.003-1.297-.899-.103a.5.5 0 0 1-.348-.203l-.338-.463a.5.5 0 0 1-.086-.392l.176-.889-1.235-.399-.372.816a.5.5 0 0 1-.304.269l-.562.179a.5.5 0 0 1-.396-.04l-.778-.436-.761 1.052.663.608a.5.5 0 0 1 .162.365l.004.58a.5.5 0 0 1-.16.371l-.664.615.766 1.048.786-.445a.5.5 0 0 1 .402-.04l.551.18c.132.044.239.14.298.266l.378.818 1.233-.404-.178-.873a.5.5 0 0 1 .083-.39l.343-.481a.5.5 0 0 1 .348-.206zm1.001.443a.5.5 0 0 1-.44.497l-1.114.133-.088.124.222 1.096a.5.5 0 0 1-.335.575l-2.078.681a.5.5 0 0 1-.609-.265l-.474-1.025-.135-.044-.981.555a.5.5 0 0 1-.649-.14l-1.29-1.766a.5.5 0 0 1 .063-.662l.828-.768v-.143l-.831-.761a.5.5 0 0 1-.067-.662l1.282-1.772a.5.5 0 0 1 .649-.143l.978.546.145-.046.465-1.019a.495.495 0 0 1 .609-.268l2.081.672a.5.5 0 0 1 .337.572l-.219 1.111.08.111 1.123.128a.5.5 0 0 1 .443.495zm-3.601-6.26V7.984H17v-1h-1.011V5.953h-1v1.031h-.957v1h.957v1.969zm-3.94 2V9.996H13v-1h-.951V5.953h-1v3.043h-1.017v1h1.017v1.957zm-4.023 3V8.91H9v-1h-.974V5.953h-1V7.91h-.994v1h.994v6.043zM5 15.984h5v1H4.5a.5.5 0 0 1-.5-.5V4.5a.5.5 0 0 1 .5-.5h14.047a.5.5 0 0 1 .5.5v5.453h-1V5H5z\" /></g></svg>;\nexport default SvgConfig;","import * as React from \"react\";\nconst SvgDms = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Database-Migration-Service_64\"}</title><defs><linearGradient id=\"linearGradient-dms\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#055f4e\" /><stop offset=\"100%\" stopColor=\"#56c0a7\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Database-Migration-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-dms)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Database-Migration-Service_Icon_64_Squid\" fill=\"#fff\" d=\"M44 67h2v-7h-2zm-9-.14h2V60h-2zM53 65h2v-6h-2zm-27 0h2v-6h-2zm14-30c-7.511 0-12-2.034-12-4v-7.641C30.32 25.022 34.533 26 40 26c4.983 0 10.225-.894 13-2.8V31c0 1.932-5.223 4-13 4m0 10c-7.511 0-12-2.034-12-4v-6.641C30.32 36.022 34.533 37 40 37c4.983 0 10.225-.894 13-2.8V41c0 1.932-5.223 4-13 4m0 10c-7.794 0-12-2.061-12-4v-6.641C30.32 46.022 34.533 47 40 47c4.983 0 10.225-.894 13-2.8V51c0 1.932-5.223 4-13 4m0-39c7.661 0 13 2.108 13 4s-5.339 4-13 4c-7.511 0-12-2.034-12-4s4.489-4 12-4m0-2c-8.505 0-14 2.355-14 6v31c0 3.645 5.495 6 14 6 7.225 0 15-1.877 15-6V20c0-4.123-7.775-6-15-6\" /></g></svg>;\nexport default SvgDms;","import * as React from \"react\";\nconst SvgDocdb = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_Amazon-DocumentDB_16\"}</title><defs><linearGradient id=\"linearGradient-dcdb\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_Amazon-DocumentDB_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Database\" fill=\"url(#linearGradient-dcdb)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"Amazon-DocumentDB_Icon_16_Squid\" fill=\"#fff\" d=\"M9.5 5.032c2.747 0 4.5.917 4.5 1.549s-1.753 1.548-4.5 1.548S5 7.212 5 6.581c0-.632 1.753-1.549 4.5-1.549m0 7.742c1.019 0 2.007-.122 2.859-.352l-.254-.999c-.77.21-1.67.319-2.605.319-2.747 0-4.5-.917-4.5-1.548V8.107c1.061.69 2.813 1.054 4.5 1.054s3.439-.363 4.5-1.054v1.054h1V6.577C14.994 4.903 12.164 4 9.5 4c-2.605 0-5.364.866-5.488 2.47H4v11.174C4 19.191 6.552 20 9.073 20c1.167 0 2.298-.172 3.182-.485l-.324-.978c-.784.278-1.798.43-2.858.43-2.636 0-4.073-.874-4.073-1.323V15.85c1.061.69 2.813 1.054 4.5 1.054 1.019 0 2.007-.122 2.859-.352l-.254-.999c-.77.21-1.67.319-2.605.319-2.747 0-4.5-.917-4.5-1.548V11.72c1.061.69 2.813 1.054 4.5 1.054m9.5-.516h-1v-1.032h.1l.9.884zm0 6.194h-5v-7.226h3v1.548c0 .285.224.516.5.516H19zm.845-6.936-1.2-1.18a.5.5 0 0 0-.345-.142h-4.8c-.276 0-.5.23-.5.516v8.258c0 .285.224.516.5.516h6c.276 0 .5-.231.5-.516V11.89a.52.52 0 0 0-.155-.374\" /></g></svg>;\nexport default SvgDocdb;","import * as React from \"react\";\nconst SvgDynamodb = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-DynamoDB_64\"}</title><defs><linearGradient id=\"linearGradient-ddb\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-DynamoDB_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-ddb)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-DynamoDB_Icon_64_Squid\" fill=\"#fff\" d=\"M52.086 54.85c-3.338 2.699-10.341 4.125-17.042 4.125S21.337 57.548 18 54.85v5.436h.001c0 2.71 6.999 5.731 17.043 5.731 10.036 0 17.031-3.017 17.042-5.726zm.001-10.328 2-.01v.01c0 1.208-.605 2.336-1.783 3.369 1.428 1.256 1.783 2.489 1.783 3.367l-.001.017v9.01c0 5.01-9.811 7.715-19.042 7.715-9.209 0-18.994-2.693-19.041-7.68q-.002-.008-.003-.016v-9.05l.002-.007c.003-.878.359-2.106 1.785-3.36-1.417-1.251-1.777-2.472-1.786-3.343h.001l-.002-.01v-9.05l.002-.01c.003-.877.36-2.105 1.786-3.357-1.418-1.252-1.778-2.474-1.787-3.344h.001L16 28.76v-9.048l.002-.01C16.019 14.7 25.82 12 35.044 12c5.211 0 10.217.828 13.734 2.272l-.765 1.833c-3.283-1.348-8.01-2.121-12.969-2.121-10.044 0-17.043 3.02-17.043 5.733S25 25.45 35.044 25.45c.271.003.536 0 .804-.01l.084 1.982c-.296.012-.592.012-.888.012-6.702 0-13.707-1.427-17.044-4.126v5.432h.001v.023c.01 1.04 1.077 1.949 1.971 2.526 2.69 1.715 7.51 2.886 12.885 3.13l-.091 1.981c-5.445-.247-10.213-1.377-13.282-3.108-.756.565-1.483 1.33-1.483 2.197 0 2.711 6.999 5.732 17.043 5.732.985 0 1.963-.032 2.908-.098l.139 1.979c-.99.068-2.016.103-3.047.103-6.702 0-13.707-1.427-17.044-4.126v5.432h.001c.01 1.064 1.077 1.971 1.971 2.55 3.076 1.962 8.852 3.184 15.072 3.184h.44v1.984h-.44c-6.319 0-12.062-1.174-15.574-3.156-.752.564-1.469 1.325-1.469 2.185 0 2.712 6.999 5.734 17.043 5.734 10.036 0 17.031-3.018 17.042-5.727v-.011c-.002-.862-.722-1.623-1.476-2.187-.488.277-1.011.543-1.606.788l-.766-1.833c.726-.298 1.356-.62 1.873-.96.902-.588 1.976-1.507 1.976-2.54m8.566-14.505h-5.604a1 1 0 0 1-.827-.435.98.98 0 0 1-.103-.922l3.409-8.522H44.619l-6 11.902h6.382c.319 0 .619.152.808.407a.99.99 0 0 1 .145.886L40.258 51.09zm3.069-.305L38.723 55.54a1.006 1.006 0 0 1-1.233.165.99.99 0 0 1-.442-1.153l6.586-20.528h-6.633c-.347 0-.668-.178-.851-.47a.98.98 0 0 1-.043-.965l7-13.886a1 1 0 0 1 .894-.549h15c.33 0 .642.164.827.435a.98.98 0 0 1 .103.923l-3.41 8.521H63c.4 0 .763.238.92.603a.99.99 0 0 1-.198 1.076M19.455 60.674c1.417.799 3.201 1.47 5.302 1.994l.488-1.924c-1.899-.473-3.559-1.094-4.802-1.794zM24.757 46.8l.488-1.924c-1.899-.474-3.559-1.095-4.802-1.795l-.988 1.725c1.417.798 3.2 1.47 5.302 1.994m-5.302-17.863.988-1.725c1.241.7 2.902 1.32 4.802 1.795l-.488 1.923c-2.104-.525-3.887-1.196-5.302-1.993\" /></g></svg>;\nexport default SvgDynamodb;","import * as React from \"react\";\nconst SvgDynamodbstreams = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-DynamoDB_64\"}</title><defs><linearGradient id=\"linearGradient-ddb\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-DynamoDB_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-ddb)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-DynamoDB_Icon_64_Squid\" fill=\"#fff\" d=\"M52.086 54.85c-3.338 2.699-10.341 4.125-17.042 4.125S21.337 57.548 18 54.85v5.436h.001c0 2.71 6.999 5.731 17.043 5.731 10.036 0 17.031-3.017 17.042-5.726zm.001-10.328 2-.01v.01c0 1.208-.605 2.336-1.783 3.369 1.428 1.256 1.783 2.489 1.783 3.367l-.001.017v9.01c0 5.01-9.811 7.715-19.042 7.715-9.209 0-18.994-2.693-19.041-7.68q-.002-.008-.003-.016v-9.05l.002-.007c.003-.878.359-2.106 1.785-3.36-1.417-1.251-1.777-2.472-1.786-3.343h.001l-.002-.01v-9.05l.002-.01c.003-.877.36-2.105 1.786-3.357-1.418-1.252-1.778-2.474-1.787-3.344h.001L16 28.76v-9.048l.002-.01C16.019 14.7 25.82 12 35.044 12c5.211 0 10.217.828 13.734 2.272l-.765 1.833c-3.283-1.348-8.01-2.121-12.969-2.121-10.044 0-17.043 3.02-17.043 5.733S25 25.45 35.044 25.45c.271.003.536 0 .804-.01l.084 1.982c-.296.012-.592.012-.888.012-6.702 0-13.707-1.427-17.044-4.126v5.432h.001v.023c.01 1.04 1.077 1.949 1.971 2.526 2.69 1.715 7.51 2.886 12.885 3.13l-.091 1.981c-5.445-.247-10.213-1.377-13.282-3.108-.756.565-1.483 1.33-1.483 2.197 0 2.711 6.999 5.732 17.043 5.732.985 0 1.963-.032 2.908-.098l.139 1.979c-.99.068-2.016.103-3.047.103-6.702 0-13.707-1.427-17.044-4.126v5.432h.001c.01 1.064 1.077 1.971 1.971 2.55 3.076 1.962 8.852 3.184 15.072 3.184h.44v1.984h-.44c-6.319 0-12.062-1.174-15.574-3.156-.752.564-1.469 1.325-1.469 2.185 0 2.712 6.999 5.734 17.043 5.734 10.036 0 17.031-3.018 17.042-5.727v-.011c-.002-.862-.722-1.623-1.476-2.187-.488.277-1.011.543-1.606.788l-.766-1.833c.726-.298 1.356-.62 1.873-.96.902-.588 1.976-1.507 1.976-2.54m8.566-14.505h-5.604a1 1 0 0 1-.827-.435.98.98 0 0 1-.103-.922l3.409-8.522H44.619l-6 11.902h6.382c.319 0 .619.152.808.407a.99.99 0 0 1 .145.886L40.258 51.09zm3.069-.305L38.723 55.54a1.006 1.006 0 0 1-1.233.165.99.99 0 0 1-.442-1.153l6.586-20.528h-6.633c-.347 0-.668-.178-.851-.47a.98.98 0 0 1-.043-.965l7-13.886a1 1 0 0 1 .894-.549h15c.33 0 .642.164.827.435a.98.98 0 0 1 .103.923l-3.41 8.521H63c.4 0 .763.238.92.603a.99.99 0 0 1-.198 1.076M19.455 60.674c1.417.799 3.201 1.47 5.302 1.994l.488-1.924c-1.899-.473-3.559-1.094-4.802-1.794zM24.757 46.8l.488-1.924c-1.899-.474-3.559-1.095-4.802-1.795l-.988 1.725c1.417.798 3.2 1.47 5.302 1.994m-5.302-17.863.988-1.725c1.241.7 2.902 1.32 4.802 1.795l-.488 1.923c-2.104-.525-3.887-1.196-5.302-1.993\" /></g></svg>;\nexport default SvgDynamodbstreams;","import * as React from \"react\";\nconst SvgEc2 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-EC2_64\"}</title><defs><linearGradient id=\"linearGradient-ec2\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-EC2_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Compute\" fill=\"url(#linearGradient-ec2)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-EC2_Icon_64_Squid\" fill=\"#fff\" d=\"M27 53h25V28H27zm27-25h4v2h-4v4h4v2h-4v3h4v2h-4v4h4v2h-4v4h4v2h-4v.136A1.866 1.866 0 0 1 52.136 55H52v4h-2v-4h-4v4h-2v-4h-3v4h-2v-4h-4v4h-2v-4h-4v4h-2v-4h-.136A1.866 1.866 0 0 1 25 53.136V53h-3v-2h3v-4h-3v-2h3v-4h-3v-2h3v-3h-3v-2h3v-4h-3v-2h3v-.136c0-1.028.836-1.864 1.864-1.864H27v-4h2v4h4v-4h2v4h4v-4h2v4h3v-4h2v4h4v-4h2v4h.136c1.028 0 1.864.836 1.864 1.864zM41 65.876a.125.125 0 0 1-.124.124H14.124a.125.125 0 0 1-.124-.124V39.124c0-.068.056-.124.124-.124H20v-2h-5.876A2.127 2.127 0 0 0 12 39.124v26.752c0 1.171.953 2.124 2.124 2.124h26.752A2.127 2.127 0 0 0 43 65.876V61h-2zm27-51.752v26.752A2.127 2.127 0 0 1 65.876 43H60v-2h5.876a.125.125 0 0 0 .124-.124V14.124a.125.125 0 0 0-.124-.124H39.124a.125.125 0 0 0-.124.124V20h-2v-5.876c0-1.171.953-2.124 2.124-2.124h26.752c1.171 0 2.124.953 2.124 2.124\" /></g></svg>;\nexport default SvgEc2;","import * as React from \"react\";\nconst SvgEcr = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Elastic-Container-Registry_64\"}</title><defs><linearGradient id=\"linearGradient-ecr\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Elastic-Container-Registry_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Containers\" fill=\"url(#linearGradient-ecr)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Elastic-Container-Registry_Icon_64_Squid\" fill=\"#fff\" d=\"M38.788 37.578a1.62 1.62 0 0 0-.802 1.396V66.72L16.999 54.984V27.708l23.558-13.65 20.928 10.37zM63.92 24.402c0-.574-.307-1.11-.86-1.427l-21.714-10.76a1.6 1.6 0 0 0-1.606 0L15.802 26.085A1.62 1.62 0 0 0 15 27.48v27.736c0 .573.308 1.108.817 1.404l21.757 12.165a1.607 1.607 0 0 0 2.41-1.396V39.201l23.134-13.403c.495-.287.802-.821.802-1.396m.05 30.645L44.98 66.661v-10.4l9.901-6.388.068-.449c.018-.117.025-.117.025-.658l.03-12.406L64 31.148zm1.227-25.975a1.6 1.6 0 0 0-1.608 0l-9.575 5.546c-.3.164-1.006.548-1.006 1.34l-.032 12.76-9.125 5.888c-.545.325-.869.84-.869 1.383v11.32c0 .566.305 1.082.816 1.378.267.154.564.232.86.232.29 0 .581-.074.844-.227l19.666-12.028c.494-.288.8-.822.8-1.393L66 30.466c0-.573-.308-1.108-.803-1.394\" /></g></svg>;\nexport default SvgEcr;","import * as React from \"react\";\nconst SvgEcs = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Elastic-Container-Service_64\"}</title><defs><linearGradient id=\"linearGradient-ecs\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Elastic-Container-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Containers\" fill=\"url(#linearGradient-ecs)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Elastic-Container-Service_Icon_64_Squid\" fill=\"#fff\" d=\"m64 48.234-8-4.801V32a1 1 0 0 0-.496-.864L44 24.426v-9.674l20 11.819zm1.509-23.095-22-13a1 1 0 0 0-1.005-.008c-.311.178-.504.51-.504.869v12c0 .355.189.684.496.864L54 32.574V44a1 1 0 0 0 .486.857l10 6A.997.997 0 0 0 66 50V26a1 1 0 0 0-.491-.861M40.445 66.863 17 54.399V26.571l20-11.819v9.699l-10.537 6.705A1 1 0 0 0 26 32v17a1 1 0 0 0 .538.887l13.453 7c.289.15.633.151.921.001l13.052-6.744 8.032 4.82zm24.07-12.721-10-6a1 1 0 0 0-.974-.03l-13.086 6.761L28 48.393V32.549l10.537-6.705c.288-.184.463-.502.463-.844V13a1 1 0 0 0-1.509-.861l-22 13A1 1 0 0 0 15 26v29c0 .369.204.709.53.883l24.454 13a1 1 0 0 0 .953-.008l23.547-13a1.002 1.002 0 0 0 .031-1.733\" /></g></svg>;\nexport default SvgEcs;","import * as React from \"react\";\nconst SvgEfs = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_Amazon-Elastic-File-System_16\"}</title><defs><linearGradient id=\"linearGradient-efs\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_Amazon-Elastic-File-System_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Storage\" fill=\"url(#linearGradient-efs)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"Amazon-Elastic-File-System_Icon_16_Squid\" fill=\"#fff\" d=\"m19 18.293-1.646-1.646-.708.707L18.293 19H17v1h2.5a.5.5 0 0 0 .5-.5V17h-1zM6.646 16.647 5 18.293V17H4v2.5a.5.5 0 0 0 .5.5H7v-1H5.707l1.647-1.646zM19.5 4H17v1h1.293l-1.647 1.647.708.707L19 5.707V7h1V4.5a.5.5 0 0 0-.5-.5M5 5.707l1.646 1.647.708-.707L5.707 5H7V4H4.5a.5.5 0 0 0-.5.5V7h1zm10 6.41c0-.029-.024-.055-.038-.069-.039-.036-.09-.059-.108-.049L11.487 12a.5.5 0 0 1-.5-.5v-.007l-.536.005-.004.022c0 .275-.222.48-.499.48H9.25c-.147-.011-.248.031-.271.054L8.998 16H15zm.644-.8c.23.215.356.498.356.8V16.5a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5V12c0-.258.105-.499.297-.677.287-.268.695-.342.987-.322h.271c.094-.25.272-.501.601-.501h1.167c.314.057.48.279.567.5h2.93c.276-.026.59.099.824.317m.487-.345a.5.5 0 0 1-.397-.46c-.047-.802-.468-1.087-.816-1.087a.74.74 0 0 0-.59.312.501.501 0 0 1-.871-.131 3 3 0 0 0-.705-1.148c-.368-.367-1.384-1.153-2.808-.555-.803.338-1.458 1.348-1.458 2.252q.002.157.021.308a.5.5 0 0 1-.376.546c-.564.14-1.235.526-1.235 1.572l.004.128c.021.367.182.723.454.995l-.708.707a2.55 2.55 0 0 1-.745-1.653l-.005-.177c0-1.137.586-2.014 1.59-2.413v-.013c0-1.314.891-2.678 2.073-3.174 1.377-.577 2.834-.289 3.897.767q.385.38.657.881c.883-.475 2.289-.118 2.575 1.454 1.263.377 1.953 1.259 1.953 2.512 0 1.125-.518 1.948-1.457 2.319l-.368-.931c.563-.221.825-.663.825-1.388 0-.323 0-1.305-1.51-1.623\" /></g></svg>;\nexport default SvgEfs;","import * as React from \"react\";\nconst SvgEks = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Elastic-Container-Kubernetes_64\"}</title><defs><linearGradient id=\"linearGradient-eks\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Elastic-Container-Kubernetes_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Containers\" fill=\"url(#linearGradient-eks)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Elastic-Container-Kubernetes_Icon_64_Squid\" fill=\"#fff\" d=\"m46.842 32.199-6.829 7.921 7.428 8.664h-2.772L38 41v8h-2V32h2v7l6.181-6.801zM64 48.234l-8-4.801V32a1 1 0 0 0-.496-.864L44 24.426v-9.674l20 11.819zm1.509-23.095-22-13a1 1 0 0 0-1.005-.008c-.311.178-.504.51-.504.869v12c0 .355.189.684.496.864L54 32.574V44a1 1 0 0 0 .486.857l10 6A.997.997 0 0 0 66 50V26a1 1 0 0 0-.491-.861M40.445 66.863 17 54.399V26.571l20-11.819v9.699l-10.537 6.705A1 1 0 0 0 26 32v17a1 1 0 0 0 .538.887l13.453 7c.289.15.633.151.921.001l13.052-6.744 8.032 4.82zm24.07-12.721-10-6a1 1 0 0 0-.974-.03l-13.086 6.761L28 48.393V32.549l10.537-6.705c.288-.184.463-.502.463-.844V13a1 1 0 0 0-1.509-.861l-22 13A1 1 0 0 0 15 26v29c0 .369.204.709.53.883l24.454 13a1 1 0 0 0 .953-.008l23.547-13a1.002 1.002 0 0 0 .031-1.733\" /></g></svg>;\nexport default SvgEks;","import * as React from \"react\";\nconst SvgElasticache = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-ElastiCache_64\"}</title><defs><linearGradient id=\"linearGradient-elc\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-ElastiCache_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-elc)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-ElastiCache_Icon_64_Squid\" fill=\"#fff\" d=\"M51 61.555v-5.852c-2.534 1.637-7.096 2.41-11.444 2.41-4.74 0-8.435-.827-10.556-2.245v5.687C29 63.25 32.948 65 39.556 65 46.3 65 51 63.185 51 61.555M39.556 49.22c-4.74 0-8.435-.826-10.556-2.244v5.71c.031 1.688 3.973 3.427 10.556 3.427 6.723 0 11.413-1.804 11.444-3.43V46.81c-2.534 1.638-7.096 2.41-11.444 2.41M51 43.79v-6.76c-2.534 1.636-7.096 2.41-11.444 2.41-4.74 0-8.435-.827-10.556-2.245v6.6c.031 1.687 3.973 3.425 10.556 3.425 6.723 0 11.413-1.804 11.444-3.43m-22.003-9.797.001.009H29v.01c.031 1.688 3.973 3.427 10.556 3.427 7.342 0 11.413-2.022 11.444-3.43v-.007h.002l.001-.01c0-1.407-4.076-3.445-11.447-3.445-6.61 0-10.559 1.752-10.559 3.446M53 34.018v9.756h.003q-.001.013-.003.025v8.868h.003q-.001.013-.003.025v8.863C53 65.297 46.031 67 39.556 67 31.929 67 27 64.863 27 61.555v-8.857q-.002-.016-.003-.031H27v-8.862q-.002-.015-.003-.031H27v-9.75q-.002-.016-.003-.031c0-3.308 4.93-5.447 12.559-5.447 6.476 0 13.447 1.705 13.447 5.447q-.001.012-.003.025M67 21.12a1 1 0 0 0 1-1V15A1 1 0 0 0 67 14H13a1 1 0 0 0-1 1v5.12a1 1 0 0 0 1 1 2.21 2.21 0 0 1 2.214 2.2A2.21 2.21 0 0 1 13 25.522a1 1 0 0 0-1 1v20.482a1 1 0 0 0 1 1h10v-2h-5v-3h5v-2h-6a1 1 0 0 0-1 1v4h-2V27.401a4.21 4.21 0 0 0 3.214-4.08A4.21 4.21 0 0 0 14 19.239V16h52v3.24a4.21 4.21 0 0 0-3.214 4.08A4.21 4.21 0 0 0 66 27.402v18.602h-2v-4a1 1 0 0 0-1-1h-6v2h5v3h-5v2h10a1 1 0 0 0 1-1V26.521a1 1 0 0 0-1-1 2.21 2.21 0 0 1-2.214-2.2c0-1.213.993-2.2 2.214-2.2M28 28v-8a1 1 0 0 0-1-1h-6a1 1 0 0 0-1 1v17.001a1 1 0 0 0 1 1h3v-2h-2V21.001h4v7zm30 8.001h-1v2h2a1 1 0 0 0 1-1V20.001a1 1 0 0 0-1-1h-6a1 1 0 0 0-1 1v8h2v-7h4zm-8-9V20a1 1 0 0 0-1-1h-7a1 1 0 0 0-1 1v6h2v-5h5v6zm-13-1V21h-5v6h-2v-7a1 1 0 0 1 1-1h7a1 1 0 0 1 1 1v6z\" /></g></svg>;\nexport default SvgElasticache;","import * as React from \"react\";\nconst SvgElasticbeanstalk = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Elastic-Beanstalk_16\"}</title><defs><linearGradient id=\"linearGradient-ebs\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Elastic-Beanstalk_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Compute\" fill=\"url(#linearGradient-ebs)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Elastic-Beanstalk_Icon_16_Squid\" fill=\"#fff\" d=\"M14.999 13.643a.494.494 0 0 0-.5-.487c-.275 0-.5.218-.5.487s.225.487.5.487.5-.218.5-.487M11 9.747c0 .269.225.487.5.487s.5-.218.5-.487a.494.494 0 0 0-.5-.487c-.275 0-.5.218-.5.487m-2.998 2.922c0 .269.225.487.5.487s.5-.218.5-.487a.494.494 0 0 0-.5-.487c-.275 0-.5.218-.5.487m7.996.974c0 .634-.419 1.17-1 1.371v1.55a.494.494 0 0 1-.5.488H12V19h-1v-2.922H8.502a.494.494 0 0 1-.5-.487v-1.55c-.58-.202-1-.738-1-1.372 0-.806.673-1.461 1.5-1.461.826 0 1.499.655 1.499 1.46 0 .635-.419 1.17-1 1.372v1.064h2v-3.986c-.581-.201-1-.737-1-1.371 0-.806.673-1.461 1.5-1.461.826 0 1.499.655 1.499 1.46 0 .635-.42 1.17-1 1.372v4.96h1.999v-1.064c-.58-.201-1-.737-1-1.371 0-.806.673-1.461 1.5-1.461.826 0 1.499.655 1.499 1.46M20 12.06c0 1.746-1.103 2.88-2.95 3.03l-.083-.97c.927-.076 2.033-.495 2.033-2.06 0-1.122-.685-1.825-2.036-2.09a.49.49 0 0 1-.401-.448c-.064-1.063-.675-1.439-1.179-1.439-.337 0-.653.157-.867.432a.51.51 0 0 1-.472.187.5.5 0 0 1-.395-.314 3.8 3.8 0 0 0-.931-1.44c-.491-.465-1.84-1.462-3.741-.702-1.09.433-1.944 1.683-1.944 2.848q0 .194.024.385a.49.49 0 0 1-.375.533C6.054 10.16 5 10.627 5 12.038l.004.127c.058 1.02.928 1.847 2.024 1.953l-.097.97c-1.584-.153-2.84-1.374-2.923-2.841L4 12.037c0-1.354.753-2.395 2.036-2.852l-.001-.092c0-1.558 1.102-3.17 2.565-3.75 1.699-.677 3.499-.34 4.813.903q.526.496.885 1.164a2.1 2.1 0 0 1 1.086-.302c.902 0 1.906.625 2.135 1.989C19.122 9.521 20 10.562 20 12.059\" /></g></svg>;\nexport default SvgElasticbeanstalk;","import * as React from \"react\";\nconst SvgElasticsearch = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Elasticsearch-Service_64\"}</title><defs><linearGradient id=\"linearGradient-es\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Elasticsearch-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-es)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Elasticsearch-Service_Icon_64_Squid\" fill=\"#fff\" d=\"M44.26 51.33c-4.417 0-8.01-3.593-8.01-8.009s3.593-8.01 8.01-8.01 8.01 3.593 8.01 8.01-3.593 8.009-8.01 8.009m0-18.019c-5.52 0-10.01 4.49-10.01 10.01S38.74 53.33 44.26 53.33s10.01-4.49 10.01-10.009-4.49-10.01-10.01-10.01m20.288 28.035a1.774 1.774 0 0 1-2.496.131l-8.34-7.523a14.4 14.4 0 0 0 2.337-2.641l8.367 7.538c.723.652.781 1.773.132 2.495M32.011 43.321c0-6.755 5.495-12.25 12.249-12.25s12.249 5.495 12.249 12.25c0 6.754-5.495 12.249-12.249 12.249s-12.249-5.495-12.249-12.249m25.052 6.214a14.14 14.14 0 0 0 1.446-6.214c0-7.858-6.392-14.25-14.249-14.25s-14.249 6.392-14.249 14.25S36.403 57.57 44.26 57.57c2.899 0 5.596-.875 7.849-2.368l8.605 7.762a3.75 3.75 0 0 0 2.518.962 3.77 3.77 0 0 0 2.802-1.241 3.777 3.777 0 0 0-.278-5.319zM67 20v34h-2V21h-8v11h-2V20a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1M51 61h2v5a1 1 0 0 1-1 1H42a1 1 0 0 1-1-1v-6h2v5h8zm-8-35h-2V14a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v14h-2V15h-8zm-6 33h2v7a1 1 0 0 1-1 1H28a1 1 0 0 1-1-1V51h2v14h8zm-8-23h-2V23a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v4h-2v-3h-8zM15 65h8V31h-8zm9-36H14a1 1 0 0 0-1 1v36a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V30a1 1 0 0 0-1-1\" /></g></svg>;\nexport default SvgElasticsearch;","import * as React from \"react\";\nconst SvgElastictranscoder = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Elastic-Transcoder_64\"}</title><g id=\"Icon-Architecture/64/Arch_Amazon-Elastic-Transcoder_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Media-Services\" fill=\"#ed7100\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Elastic-Transcoder_Icon_64_Squid\" fill=\"#fff\" d=\"M14.797 33.529q-.014-.277-.014-.57c0-5.74 3.783-7.927 6.094-8.727a13 13 0 0 1-.018-.696c0-4.755 3.157-9.687 7.343-11.475 4.9-2.093 10.096-1.052 13.891 2.786 1.13 1.142 2.063 2.517 2.787 4.1 1.404-1.1 3.212-1.483 4.939-.972 2.429.715 4.063 2.94 4.456 6.013 1.397.349 3.713 1.202 5.372 3.19a12 12 0 0 0-1.112-.057c-.59 0-1.164.06-1.73.147-1.328-.933-2.804-1.312-3.646-1.458a1.007 1.007 0 0 1-.823-1.123c-.194-2.483-1.34-4.266-3.077-4.778-1.436-.422-2.98.14-3.929 1.437-.22.3-.59.452-.952.398a1 1 0 0 1-.795-.661c-.676-1.927-1.653-3.546-2.906-4.813-1.537-1.553-5.749-4.89-11.695-2.352-3.434 1.466-6.123 5.69-6.123 9.618 0 .431.024.862.074 1.283q.01.07.01.143c0 .485-.34.894-.799.989-2.025.533-5.361 2.15-5.361 7.007q0 .24.012.47a6.94 6.94 0 0 0 1.331 3.774h-2.337a8.95 8.95 0 0 1-.992-3.673M56.958 61.53v-4.556l4.197 2.279zm-.526-7.131a1 1 0 0 0-.987.022c-.302.181-.487.51-.487.866v7.932a1.01 1.01 0 0 0 1 1.008 1 1 0 0 0 .474-.121l7.306-3.966a1.01 1.01 0 0 0 0-1.775zm2.103 12.585c-4.116 0-7.466-3.376-7.466-7.526s3.35-7.526 7.466-7.526S66 55.308 66 59.458s-3.349 7.526-7.465 7.526M14 58.373h19V41.235H14zm44.535-27.22c4.116 0 7.465 3.377 7.465 7.526 0 4.15-3.349 7.527-7.465 7.527s-7.466-3.376-7.466-7.527 3.35-7.525 7.466-7.525m0 18.763c-4.772 0-8.72 3.582-9.363 8.217L35 52.449v-4.654l14.687-5.756c1.352 3.607 4.803 6.183 8.848 6.183 5.219 0 9.465-4.28 9.465-9.543 0-5.261-4.246-9.541-9.465-9.541s-9.466 4.28-9.466 9.541c0 .476.046.939.113 1.395L35 45.631v-5.404c0-.557-.447-1.008-1-1.008H13c-.553 0-1 .451-1 1.008V59.38c0 .556.447 1.008 1 1.008h21c.553 0 1-.452 1-1.008v-4.763l14.11 5.66c.416 4.88 4.48 8.722 9.425 8.722C63.754 69 68 64.72 68 59.458s-4.246-9.542-9.465-9.542m-1.577-13.34 4.197 2.279-4.197 2.278zm-1.513 7.11a1 1 0 0 0 .987.023l7.306-3.966a1.01 1.01 0 0 0 0-1.775L56.432 34a1 1 0 0 0-.987.022 1.01 1.01 0 0 0-.487.866v7.932c0 .354.185.684.487.866M21 46.982l5.762 3.226L21 52.789zm-1.545 8.204a1 1 0 0 0 .951.077l9-4.033c.347-.155.577-.495.593-.877a1.01 1.01 0 0 0-.514-.925l-9-5.04a.99.99 0 0 0-.992.011 1.01 1.01 0 0 0-.493.87v9.072c0 .34.171.66.455.845\" /></g></svg>;\nexport default SvgElastictranscoder;","import * as React from \"react\";\nconst SvgElb = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 40 40\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/32/Arch_Elastic-Load-Balancing_32\"}</title><defs><linearGradient id=\"linearGradient-elb\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/32/Arch_Elastic-Load-Balancing_32\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/32/Networking-Content-Delivery\" fill=\"url(#linearGradient-elb)\"><path id=\"Rectangle\" d=\"M0 0h40v40H0z\" /></g><path id=\"Elastic-Load-Balancing_Icon_32_Squid\" fill=\"#fff\" d=\"M15 27c-3.859 0-7-3.14-7-7s3.141-7 7-7 7 3.14 7 7-3.141 7-7 7m14 1c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2m0-20c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2m1 10.5c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2M22.931 21h4.12A3 3 0 0 0 30 23.5c1.654 0 3-1.346 3-3s-1.346-3-3-3a3 3 0 0 0-2.949 2.5H23c0-1.489-.416-2.88-1.128-4.075l4.827-4.023A2.98 2.98 0 0 0 29 13c1.654 0 3-1.346 3-3s-1.346-3-3-3-3 1.346-3 3c0 .361.074.702.191 1.022l-4.885 4.072A7.99 7.99 0 0 0 15 12c-4.411 0-8 3.589-8 8s3.589 8 8 8a7.99 7.99 0 0 0 6.306-3.094l4.885 4.072c-.117.32-.191.661-.191 1.022 0 1.654 1.346 3 3 3s3-1.346 3-3-1.346-3-3-3c-.929 0-1.75.433-2.301 1.098l-4.827-4.023A7.9 7.9 0 0 0 22.931 21\" /></g></svg>;\nexport default SvgElb;","import * as React from \"react\";\nconst SvgElbv2 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 40 40\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/32/Arch_Elastic-Load-Balancing_32\"}</title><defs><linearGradient id=\"linearGradient-elb\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/32/Arch_Elastic-Load-Balancing_32\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/32/Networking-Content-Delivery\" fill=\"url(#linearGradient-elb)\"><path id=\"Rectangle\" d=\"M0 0h40v40H0z\" /></g><path id=\"Elastic-Load-Balancing_Icon_32_Squid\" fill=\"#fff\" d=\"M15 27c-3.859 0-7-3.14-7-7s3.141-7 7-7 7 3.14 7 7-3.141 7-7 7m14 1c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2m0-20c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2m1 10.5c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2M22.931 21h4.12A3 3 0 0 0 30 23.5c1.654 0 3-1.346 3-3s-1.346-3-3-3a3 3 0 0 0-2.949 2.5H23c0-1.489-.416-2.88-1.128-4.075l4.827-4.023A2.98 2.98 0 0 0 29 13c1.654 0 3-1.346 3-3s-1.346-3-3-3-3 1.346-3 3c0 .361.074.702.191 1.022l-4.885 4.072A7.99 7.99 0 0 0 15 12c-4.411 0-8 3.589-8 8s3.589 8 8 8a7.99 7.99 0 0 0 6.306-3.094l4.885 4.072c-.117.32-.191.661-.191 1.022 0 1.654 1.346 3 3 3s3-1.346 3-3-1.346-3-3-3c-.929 0-1.75.433-2.301 1.098l-4.827-4.023A7.9 7.9 0 0 0 22.931 21\" /></g></svg>;\nexport default SvgElbv2;","import * as React from \"react\";\nconst SvgEmrServerless = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-EMR_64\"}</title><defs><linearGradient id=\"linearGradient-emr\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-EMR_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-emr)\" transform=\"translate(.504)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-EMR_Icon_64_Squid\" fill=\"#fff\" d=\"M64.815 47.688a4.04 4.04 0 0 0-2.868-1.187 4.04 4.04 0 0 0-2.869 1.187 4.04 4.04 0 0 0-1.189 2.872 4.059 4.059 0 0 0 6.926 2.872 4.07 4.07 0 0 0 0-5.744m-8.528.722a6 6 0 0 1 1.323-2.078l-2.153-4.104-2.682 5.072zm-6.402.075-11.798-3.73a12.9 12.9 0 0 1-2.897 4.434c-.164.163-.34.308-.51.46l5.203 7.228a6 6 0 0 1 3.338-1.003c.869 0 1.706.187 2.476.532zm-2.607 13.451a4.04 4.04 0 0 0-1.188-2.871 4.03 4.03 0 0 0-2.869-1.189 4.03 4.03 0 0 0-2.867 1.189 4.04 4.04 0 0 0-1.19 2.871c0 1.085.424 2.105 1.19 2.872a4.03 4.03 0 0 0 2.867 1.19 4.03 4.03 0 0 0 2.869-1.19 4.04 4.04 0 0 0 1.188-2.872M33.776 47.772c4.29-4.294 4.29-11.28 0-15.575a10.97 10.97 0 0 0-7.78-3.22 10.96 10.96 0 0 0-7.78 3.22c-4.29 4.294-4.29 11.28 0 15.575s11.27 4.295 15.56 0m.888-17.467c.175.157.357.307.526.476a12.95 12.95 0 0 1 2.82 4.237l11.754-3.633-4.084-7.782a6 6 0 0 1-2.459.524 6 6 0 0 1-3.353-1.013zm4.5-12.24c0 1.084.424 2.103 1.19 2.87a4.03 4.03 0 0 0 2.867 1.19 4.03 4.03 0 0 0 2.869-1.19 4.04 4.04 0 0 0 1.188-2.87 4.04 4.04 0 0 0-1.188-2.873 4.03 4.03 0 0 0-2.869-1.19 4.03 4.03 0 0 0-2.867 1.19 4.04 4.04 0 0 0-1.19 2.873m-.5 24.772 12.172 3.849 3.494-6.605-3.62-6.893-12.094 3.739c.466 1.941.484 3.963.049 5.91m13.992-10.25 2.807 5.348 2.632-4.98c-.142-.119-.297-.218-.43-.352a6 6 0 0 1-.965-1.266zm5.233-4.272a4.059 4.059 0 0 0 6.926 2.873 4.07 4.07 0 0 0 0-5.744 4.04 4.04 0 0 0-2.868-1.187 4.04 4.04 0 0 0-2.869 1.187 4.04 4.04 0 0 0-1.189 2.87m8.34 17.957a6.077 6.077 0 0 1 0 8.575 6.03 6.03 0 0 1-4.282 1.774 6.03 6.03 0 0 1-4.283-1.774 6.03 6.03 0 0 1-1.775-4.287c0-.058.007-.115.009-.173l-4.074-1.288-4.455 8.427c.044.042.091.08.135.123a6.03 6.03 0 0 1 1.775 4.287c0 1.62-.63 3.143-1.775 4.288A6.01 6.01 0 0 1 43.221 68a6 6 0 0 1-4.281-1.776 6.02 6.02 0 0 1-1.776-4.288c0-1.347.443-2.624 1.25-3.676l-5.311-7.377a13 13 0 0 1-7.108 2.112c-3.33 0-6.659-1.269-9.193-3.806-5.07-5.075-5.07-13.333 0-18.408 4.415-4.422 11.245-4.988 16.283-1.705l5.318-7.35a6 6 0 0 1-1.239-3.661 6.03 6.03 0 0 1 1.776-4.289A6 6 0 0 1 43.22 12c1.618 0 3.14.63 4.283 1.776a6.03 6.03 0 0 1 1.775 4.289c0 1.619-.63 3.142-1.775 4.286-.047.048-.1.09-.149.137l4.354 8.295 4.29-1.326a6.025 6.025 0 0 1 1.665-5.429 6.057 6.057 0 0 1 8.566 0 6.077 6.077 0 0 1 0 8.575 6.04 6.04 0 0 1-4.283 1.773 6.1 6.1 0 0 1-2.128-.398l-3.23 6.106 2.665 5.075c2.268-1.13 5.088-.775 6.976 1.113m-39.233-7.289h5v2.003h-5v5.006h-2v-5.006h-5.002v-2.003h5.001v-5.006h2z\" /></g></svg>;\nexport default SvgEmrServerless;","import * as React from \"react\";\nconst SvgEmr = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-EMR_64\"}</title><defs><linearGradient id=\"linearGradient-emr\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-EMR_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-emr)\" transform=\"translate(.504)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-EMR_Icon_64_Squid\" fill=\"#fff\" d=\"M64.815 47.688a4.04 4.04 0 0 0-2.868-1.187 4.04 4.04 0 0 0-2.869 1.187 4.04 4.04 0 0 0-1.189 2.872 4.059 4.059 0 0 0 6.926 2.872 4.07 4.07 0 0 0 0-5.744m-8.528.722a6 6 0 0 1 1.323-2.078l-2.153-4.104-2.682 5.072zm-6.402.075-11.798-3.73a12.9 12.9 0 0 1-2.897 4.434c-.164.163-.34.308-.51.46l5.203 7.228a6 6 0 0 1 3.338-1.003c.869 0 1.706.187 2.476.532zm-2.607 13.451a4.04 4.04 0 0 0-1.188-2.871 4.03 4.03 0 0 0-2.869-1.189 4.03 4.03 0 0 0-2.867 1.189 4.04 4.04 0 0 0-1.19 2.871c0 1.085.424 2.105 1.19 2.872a4.03 4.03 0 0 0 2.867 1.19 4.03 4.03 0 0 0 2.869-1.19 4.04 4.04 0 0 0 1.188-2.872M33.776 47.772c4.29-4.294 4.29-11.28 0-15.575a10.97 10.97 0 0 0-7.78-3.22 10.96 10.96 0 0 0-7.78 3.22c-4.29 4.294-4.29 11.28 0 15.575s11.27 4.295 15.56 0m.888-17.467c.175.157.357.307.526.476a12.95 12.95 0 0 1 2.82 4.237l11.754-3.633-4.084-7.782a6 6 0 0 1-2.459.524 6 6 0 0 1-3.353-1.013zm4.5-12.24c0 1.084.424 2.103 1.19 2.87a4.03 4.03 0 0 0 2.867 1.19 4.03 4.03 0 0 0 2.869-1.19 4.04 4.04 0 0 0 1.188-2.87 4.04 4.04 0 0 0-1.188-2.873 4.03 4.03 0 0 0-2.869-1.19 4.03 4.03 0 0 0-2.867 1.19 4.04 4.04 0 0 0-1.19 2.873m-.5 24.772 12.172 3.849 3.494-6.605-3.62-6.893-12.094 3.739c.466 1.941.484 3.963.049 5.91m13.992-10.25 2.807 5.348 2.632-4.98c-.142-.119-.297-.218-.43-.352a6 6 0 0 1-.965-1.266zm5.233-4.272a4.059 4.059 0 0 0 6.926 2.873 4.07 4.07 0 0 0 0-5.744 4.04 4.04 0 0 0-2.868-1.187 4.04 4.04 0 0 0-2.869 1.187 4.04 4.04 0 0 0-1.189 2.87m8.34 17.957a6.077 6.077 0 0 1 0 8.575 6.03 6.03 0 0 1-4.282 1.774 6.03 6.03 0 0 1-4.283-1.774 6.03 6.03 0 0 1-1.775-4.287c0-.058.007-.115.009-.173l-4.074-1.288-4.455 8.427c.044.042.091.08.135.123a6.03 6.03 0 0 1 1.775 4.287c0 1.62-.63 3.143-1.775 4.288A6.01 6.01 0 0 1 43.221 68a6 6 0 0 1-4.281-1.776 6.02 6.02 0 0 1-1.776-4.288c0-1.347.443-2.624 1.25-3.676l-5.311-7.377a13 13 0 0 1-7.108 2.112c-3.33 0-6.659-1.269-9.193-3.806-5.07-5.075-5.07-13.333 0-18.408 4.415-4.422 11.245-4.988 16.283-1.705l5.318-7.35a6 6 0 0 1-1.239-3.661 6.03 6.03 0 0 1 1.776-4.289A6 6 0 0 1 43.22 12c1.618 0 3.14.63 4.283 1.776a6.03 6.03 0 0 1 1.775 4.289c0 1.619-.63 3.142-1.775 4.286-.047.048-.1.09-.149.137l4.354 8.295 4.29-1.326a6.025 6.025 0 0 1 1.665-5.429 6.057 6.057 0 0 1 8.566 0 6.077 6.077 0 0 1 0 8.575 6.04 6.04 0 0 1-4.283 1.773 6.1 6.1 0 0 1-2.128-.398l-3.23 6.106 2.665 5.075c2.268-1.13 5.088-.775 6.976 1.113m-39.233-7.289h5v2.003h-5v5.006h-2v-5.006h-5.002v-2.003h5.001v-5.006h2z\" /></g></svg>;\nexport default SvgEmr;","import * as React from \"react\";\nconst SvgEvents = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-EventBridge_64\"}</title><defs><linearGradient id=\"linearGradient-ebr\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-EventBridge_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Application-Integration\" fill=\"url(#linearGradient-ebr)\" transform=\"translate(0 1)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-EventBridge_Icon_64_Squid\" fill=\"#fff\" d=\"M53.657 67c-2.143 0-3.887-1.753-3.887-3.909s1.744-3.909 3.887-3.909 3.887 1.753 3.887 3.909S55.8 67 53.657 67m-8.524-17H34.798l-5.168-9 5.168-9h10.335l5.167 9zM27.62 22.818c-2.143 0-3.887-1.753-3.887-3.909S25.478 15 27.62 15c2.144 0 3.888 1.753 3.888 3.909s-1.744 3.909-3.888 3.909m26.036 34.364c-.738 0-1.442.143-2.093.394L47.34 50.41l-.223.133L52.31 41.5c.177-.31.177-.69 0-1l-5.741-10a.99.99 0 0 0-.862-.5H35.258l.04-.024-3.871-6.572a5.9 5.9 0 0 0 2.071-4.495c0-3.258-2.636-5.909-5.877-5.909s-5.876 2.651-5.876 5.909 2.636 5.909 5.876 5.909c.739 0 1.443-.143 2.094-.394l3.615 6.133-5.71 9.943c-.177.31-.177.69 0 1l5.743 10c.178.31.506.5.861.5h11.482q.125-.002.241-.032l3.905 6.628a5.9 5.9 0 0 0-2.071 4.495c0 3.258 2.635 5.909 5.876 5.909 3.24 0 5.876-2.651 5.876-5.909s-2.635-5.909-5.876-5.909m5.927-24.078c-2.143 0-3.886-1.753-3.886-3.909s1.743-3.909 3.886-3.909 3.888 1.753 3.888 3.909-1.745 3.909-3.888 3.909m7.283 7.396-3.775-6.575a5.91 5.91 0 0 0 2.368-4.73c0-3.258-2.635-5.909-5.876-5.909-.824 0-1.61.173-2.323.484l-3.077-5.361a1 1 0 0 0-.861-.5H40.995v2h11.754l2.847 4.96a5.9 5.9 0 0 0-1.887 4.326c0 3.258 2.636 5.909 5.875 5.909.604 0 1.188-.093 1.737-.264L64.858 41l-4.966 8.648 1.722 1 5.253-9.148c.177-.31.177-.69 0-1M21.229 56.247c-2.144 0-3.888-1.754-3.888-3.909 0-2.156 1.744-3.909 3.888-3.909 2.143 0 3.887 1.753 3.887 3.909s-1.744 3.909-3.887 3.909m3.248 1.011a5.92 5.92 0 0 0 2.628-4.92c0-3.258-2.636-5.909-5.876-5.909-.939 0-1.823.228-2.61.623L15.143 41l5.759-10.029-1.723-1L13.133 40.5c-.177.31-.177.69 0 1l3.872 6.74a5.9 5.9 0 0 0-1.653 4.098c0 3.258 2.636 5.909 5.877 5.909.488 0 .96-.067 1.415-.181l3.172 5.525c.178.309.506.5.861.5h12.33v-2H27.25z\" /></g></svg>;\nexport default SvgEvents;","import * as React from \"react\";\nconst SvgFirehose = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Kinesis-Firehose_64\"}</title><defs><linearGradient id=\"linearGradient-fho\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Kinesis-Firehose_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-fho)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><g id=\"Icon-Service/64/Amazon-Kinesis-Data-Firehose\" fill=\"#fff\" transform=\"translate(8 8)\"><path id=\"Amazon-Kinesis-Data-Firehose_Icon_64_Squid\" d=\"m58.625 36.072-.742 1.856C54.685 36.649 50.784 36 46.288 36v-2c4.752 0 8.902.697 12.337 2.072m-.687-1.123C55.032 33.984 49.152 33 46.288 33v-2c2.896 0 8.751-.983 11.604-1.947l.64 1.894c-1.094.371-2.572.737-4.16 1.057 1.607.319 3.104.684 4.197 1.047zm.673-7.015C55.03 29.305 50.884 30 46.288 30v-2c4.351 0 8.256-.651 11.608-1.934zm-16.356 7.285-10 2.5V26.281l10 2.5zm-12 4.781h-3V24h3v16m13.242-12.97-11.242-2.811V23a1 1 0 0 0-1-1h-5a1 1 0 0 0-1 1v.93c-15.202-1.109-17-7.311-17-11.93V7h-2v5c0 8.469 6.23 13.023 19 13.927v1.036c-7.763-.311-13.337-1.536-17.469-3.836l-.973 1.747c4.429 2.467 10.313 3.77 18.442 4.09v2.014c-5.648-.134-13.299-.508-18.745-1.945L6 30.967c1.633.431 3.449.767 5.342 1.033-1.893.267-3.709.603-5.342 1.033l.51 1.934c5.447-1.437 13.098-1.811 18.745-1.944v2.014c-8.084.316-13.965 1.619-18.439 4.088l.967 1.751c4.175-2.304 9.762-3.52 17.472-3.829v1.021c-16.495 1.214-19 9.834-19 14.932l-.002.392c-.017 3.224-.007 3.582.008 3.715l1.991-.185c-.011-.182-.01-1.366.001-3.519L8.255 53c0-7.62 5.883-12.067 17-12.92V41a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1v-1.219l11.242-2.811a1 1 0 0 0 .758-.97v-8a1 1 0 0 0-.758-.97\" /></g></g></svg>;\nexport default SvgFirehose;","import * as React from \"react\";\nconst SvgFis = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Valkyrie_16\"}</title><defs><linearGradient id=\"linearGradient-fis\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Valkyrie_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-fis)\" d=\"M0 0h24v24H0z\" /><g id=\"Icon-Service/16/AWS-Valkyrie_16\" fill=\"#fff\" transform=\"translate(4 4)\"><path id=\"Fill-1\" d=\"M6.489 4.986a.5.5 0 1 0-.002-1.002.5.5 0 0 0 .002 1.002m0 1c-.827 0-1.5-.673-1.5-1.5s.673-1.5 1.5-1.5 1.5.673 1.5 1.5-.673 1.5-1.5 1.5M9.782 8.9l.707-.707.707.707.707-.707-.707-.707.707-.707-.707-.707-.707.707-.707-.707-.707.707.707.707-.707.707zm-3.793.086h-1v5a.5.5 0 0 0 1 0zm2 0h-1v5c0 .827-.673 1.5-1.5 1.5s-1.5-.673-1.5-1.5v-5h-1v-1h5zm7.776-1.166c0 2.332-1.919 3.09-2.933 3.165l-4.843.001v-1h4.806c.167-.016 1.97-.221 1.97-2.166 0-1.663-1.41-2.086-2.016-2.19a.5.5 0 0 1-.408-.574c-.002-.675-.29-1.186-.792-1.351a1.08 1.08 0 0 0-1.205.399.5.5 0 0 1-.874-.131c-.213-.606-.521-1.113-.915-1.508-.479-.483-1.796-1.521-3.653-.733-1.052.447-1.907 1.787-1.907 2.986l.027.436a.5.5 0 0 1-.375.515C2.032 5.827 1 6.314 1 7.798c0 1.124.606 1.743 1.115 2.064a.7.7 0 0 0 .445.124h.429v1h-.43c-.382 0-.666-.081-.977-.278C.991 10.335 0 9.461 0 7.798c0-1.411.74-2.496 2.001-2.973l-.005-.076C1.995 3.101 3.077 1.421 4.511.812 6.19.098 7.968.454 9.264 1.759q.513.516.863 1.207a2.06 2.06 0 0 1 1.734-.211c.823.271 1.352.998 1.458 1.979 1.246.342 2.446 1.298 2.446 3.086\" /></g></g></svg>;\nexport default SvgFis;","import * as React from \"react\";\nconst SvgGlacier = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Glacier_64\"}</title><defs><linearGradient id=\"linearGradient-glc\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Glacier_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-glc)\" d=\"M0 0h80v80H0z\" /><g id=\"Icon-Service/64/Amazon-Glacier_64\" fill=\"#fff\" transform=\"translate(8 8)\"><path id=\"Amazon-Glacier_Icon_64_Squid\" d=\"M7.066 12.912C7.91 15.867 17.648 19 30.5 19c12.83 0 22.558-3.122 23.43-6.073l.063-.45C53.92 11.16 46.364 6 30.5 6 14.633 6 7.08 11.161 7.006 12.478zM53.22 32.19l-.383 2.703c3.36.827 3.963.322 3.97.317 0-.024-.046-.9-3.587-3.02M37.68 57.56l.251 1.983a59 59 0 0 1-7.436.458c-7.633 0-19.719-1.69-19.853-6.223L5.093 13.253a3.4 3.4 0 0 1-.082-.596l-.003-.02h.001C5.007 12.59 5 12.546 5 12.5 5 9.034 14.933 4 30.5 4S56 9.034 56 12.5c0 .047-.009.093-.01.14l-.002.01a3.4 3.4 0 0 1-.09.642L53.52 30.054c3.347 1.91 4.99 3.402 5.248 4.786a1.95 1.95 0 0 1-.435 1.66c-.486.577-1.286.865-2.468.865-.88 0-1.979-.163-3.313-.482l-.128.904-1.98-.28.163-1.152c-6.165-1.82-14.622-5.674-18.68-7.595a2.38 2.38 0 0 1-1.527.562A2.406 2.406 0 0 1 28 26.92a2.406 2.406 0 0 1 2.402-2.403 2.406 2.406 0 0 1 2.403 2.403q-.002.021-.004.042c3.45 1.63 11.973 5.54 18.092 7.391l2.55-17.979C49.021 19.4 39.554 21 30.5 21c-9.07 0-18.553-1.606-22.962-4.64l5.093 37.205q.01.068.01.136c0 1.516 6.778 4.3 17.853 4.3 2.453 0 4.871-.15 7.184-.443m18.287-7.69 2.371 2.37-1.415 1.414L54.27 51h-4.753l2.26 3.917 3.811 1.073-.542 1.924-3.174-.893-.867 3.238-1.932-.518 1.007-3.76-2.354-4.084-2.323 4.017.977 3.84-1.937.492-.814-3.195-3.237.867-.517-1.932 3.76-1.007L45.934 51h-4.689l-2.729 2.662-1.396-1.432 2.361-2.303-2.37-2.37 1.414-1.414L41.382 49h4.671l-2.384-4.123-3.807-1.07.541-1.926 3.175.893.867-3.237 1.932.518-1.009 3.767 2.357 4.076 2.32-4.023-.976-3.833 1.937-.493.815 3.196 3.236-.867.518 1.931-3.766 1.01L49.4 49h4.594l2.938-2.866 1.397 1.432z\" /></g></g></svg>;\nexport default SvgGlacier;","import * as React from \"react\";\nconst SvgGlue = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Glue_64\"}</title><defs><linearGradient id=\"linearGradient-glu\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Glue_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-glu)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Glue_Icon_64_Squid\" fill=\"#fff\" d=\"M33 23h2v-2h-2zm-2 1v-4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1m10-7h2v-2h-2zm-2 1v-4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1m4 9h2v-2h-2zm-1-4h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1m-2 10.5c-1.761 0-8.146-.075-12.299-1.096l10.145 16.062c.1.16.154.345.154.534v2.277c1.404.407 2.701.411 4 .016V49c0-.189.054-.374.154-.534l10.145-16.062C48.146 33.425 41.761 33.5 40 33.5m-15.746-2.808a1.32 1.32 0 0 1-.254-.755c0-2.845 9.384-3.371 14.978-3.432l.021 2c-6.872.075-11.071.859-12.551 1.443 1.57.656 6.195 1.552 13.552 1.552 7.338 0 11.957-.891 13.539-1.546-.646-.261-1.984-.647-4.66-.974l.242-1.985c6.062.74 6.879 1.902 6.879 2.942 0 .273-.095.523-.254.755L44 49.29V52a1 1 0 0 1-.627.928 8.8 8.8 0 0 1-3.307.656c-1.11 0-2.242-.215-3.412-.646A1 1 0 0 1 36 52v-2.71zm22.67 28.925a1 1 0 0 1-.217 1.09l-6 6a.997.997 0 0 1-1.414 0l-6-6A1 1 0 0 1 34 59h3v-3h2v4a1 1 0 0 1-1 1h-1.586L40 64.586 43.586 61H42a1 1 0 0 1-1-1v-4h2v3h3a1 1 0 0 1 .924.617\" /></g></svg>;\nexport default SvgGlue;","import * as React from \"react\";\nconst SvgIam = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Identity-and-Access-Management_64\"}</title><defs><linearGradient id=\"linearGradient-iam\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#bd0816\" /><stop offset=\"100%\" stopColor=\"#ff5252\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Identity-and-Access-Management_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"url(#linearGradient-iam)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Identity-and-Access-Management_Icon_64_Squid\" fill=\"#fff\" d=\"M14 59h52V21H14zm54-39v40a1 1 0 0 1-1 1H13a1 1 0 0 1-1-1V20a1 1 0 0 1 1-1h54a1 1 0 0 1 1 1M44 48h15v-2H44zm13-6h5v-2h-5zm-13 0h8v-2h-8zm-15 4a1.001 1.001 0 0 0-2 0 1.001 1.001 0 0 0 2 0m2 0a3 3 0 0 1-2 2.816V51h-2v-2.185A2.995 2.995 0 0 1 25 46c0-1.654 1.346-3 3-3s3 1.346 3 3m-12 7.993L36.994 54l.002-4H33v-2h3.996l.002-3H33v-2h3.999L37 40.007 19.006 40zm3-15.992 12 .005V31c.001-2.303-2.803-4.323-6-4.325h-.004c-3.192 0-5.992 2.021-5.994 4.325zm-5 16.991L17.006 39a1 1 0 0 1 1-1l1.994.001.002-7.001c.002-3.488 3.588-6.325 7.994-6.325H28c4.412.002 8.001 2.84 8 6.325v7.007l2 .001a1 1 0 0 1 1 1L38.994 55a1 1 0 0 1-1 1L18 55.992a1 1 0 0 1-1-1M60 36h2v-2h-2zm-16 0h11v-2H44z\" /></g></svg>;\nexport default SvgIam;","import * as React from \"react\";\nconst SvgIdentitystore = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-IAM-Identity-Center_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-IAM-Identity-Center_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"#dd344c\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-IAM-Identity-Center_Icon_64_Squid\" fill=\"#fff\" d=\"M67.438 62.325 52.56 47.447a1 1 0 0 1-.181-1.167c2.078-4.003 1.28-9.048-1.94-12.268a10.45 10.45 0 0 0-8.691-3c-3.23.392-6.078 2.256-7.812 5.117-2.038 3.359-1.947 7.668.23 10.979 3.021 4.595 8.91 6.184 13.698 3.7.387-.2.858-.127 1.168.182l2.468 2.468a1 1 0 0 1 .292.707v3.243h3.243c.264 0 .519.105.707.292l1.415 1.414c.187.188.293.442.293.708v3.242h3.242c.266 0 .519.106.707.293l1.855 1.856 3.942.263zm2.029-.305-.353 4.596a1 1 0 0 1-.996.923q-.034 0-.068-.002l-5.303-.354a1 1 0 0 1-.641-.29l-1.828-1.83H56.45a1 1 0 0 1-1-1v-3.827l-.829-.828h-3.829a1 1 0 0 1-1-1v-3.83l-1.672-1.672c-5.574 2.486-12.179.544-15.626-4.7-2.598-3.951-2.703-9.1-.269-13.114 2.056-3.39 5.44-5.6 9.282-6.064a12.44 12.44 0 0 1 10.346 3.57c3.653 3.653 4.683 9.286 2.622 13.936l14.702 14.702a1 1 0 0 1 .29.784M45.423 41.346a2.48 2.48 0 0 0-.733-1.768 2.48 2.48 0 0 0-1.768-.733c-.667 0-1.295.26-1.767.732a2.503 2.503 0 0 0 0 3.536c.974.975 2.56.975 3.535 0 .473-.473.733-1.1.733-1.767m.681-3.183a4.47 4.47 0 0 1 1.319 3.183 4.47 4.47 0 0 1-1.319 3.18v.002a4.49 4.49 0 0 1-3.182 1.315 4.48 4.48 0 0 1-3.181-1.316 4.506 4.506 0 0 1 0-6.364 4.47 4.47 0 0 1 3.181-1.318c1.203 0 2.332.468 3.182 1.318m-24.103 6.759H28v2h-6c-5.854-.013-10.674-4.165-10.976-9.454-.013-.25-.024-.481-.024-.713 0-6.524 4.627-8.95 7.351-9.81a14 14 0 0 1-.027-.875c0-5.35 3.757-10.888 8.739-12.881 5.807-2.344 11.965-1.178 16.463 3.118 1.187 1.12 2.705 2.794 3.769 4.835 1.136-.998 2.419-1.487 3.888-1.487 2.903 0 6.157 2.336 6.748 7.442C63.95 28.472 67 31.775 67 36.922c0 5.427-3.222 9.068-8.839 9.987l-.323-1.974C61.105 44.4 65 42.575 65 36.922c0-4.381-2.603-6.93-8.192-8.018a1 1 0 0 1-.807-.922c-.224-3.725-2.206-6.327-4.818-6.327-1.335 0-2.382.58-3.394 1.88-.223.287-.58.429-.941.376a1 1 0 0 1-.785-.638c-.872-2.33-2.609-4.285-3.913-5.515-3.919-3.742-9.278-4.754-14.342-2.713-4.198 1.679-7.484 6.522-7.484 11.025 0 .505.03.99.093 1.485q.006.056.007.113v.014c0 .505-.374.927-.86.996-2.499.634-6.564 2.52-6.564 8.077 0 .197.01.394.02.583.242 4.249 4.188 7.574 8.981 7.584\" /></g></svg>;\nexport default SvgIdentitystore;","import * as React from \"react\";\nconst SvgInfrastructure = props => <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"152.322 142.26 200 200\" width=\"1em\" height=\"1em\" fill=\"currentColor\" {...props}><defs><linearGradient id=\"gradient-0\" x1={250} x2={250} y1={180.147} y2={319.853} gradientTransform=\"rotate(55.846 328.855 173.433)scale(1.43158 1.22198)\" gradientUnits=\"userSpaceOnUse\"><stop offset={0} style={{\n stopColor: \"#3e3174\"\n }} /><stop offset={1} style={{\n stopColor: \"#18132c\"\n }} /></linearGradient><linearGradient id=\"paint0_linear_21_62\" x1={72.298} x2={13.442} y1={11.447} y2={69.721} gradientTransform=\"translate(195.584 153)\" gradientUnits=\"userSpaceOnUse\"><stop stopColor=\"#4d29b4\" /><stop offset={1} stopColor=\"#836fff\" /></linearGradient><linearGradient id=\"paint1_linear_21_62\" x1={46.837} x2={87.572} y1={34.241} y2={-5.772} gradientTransform=\"translate(195.584 153)\" gradientUnits=\"userSpaceOnUse\"><stop stopColor=\"#70ffe5\" /><stop offset={1} stopColor=\"#6295e1\" /></linearGradient><linearGradient id=\"paint2_linear_21_62\" x1={68.903} x2={30.593} y1={18.237} y2={54.613} gradientTransform=\"translate(195.584 153)\" gradientUnits=\"userSpaceOnUse\"><stop offset={0.007} stopColor=\"#654fec\" /><stop offset={1} stopColor=\"#71b2ff\" /></linearGradient></defs><g transform=\"translate(2.322 -7.74)\"><rect width={200} height={200} x={150} y={150} rx={30} ry={30} style={{\n stroke: \"#000\",\n fill: \"url(#gradient-0)\",\n strokeWidth: 0\n }} /><path fill=\"url(#paint0_linear_21_62)\" fillRule=\"evenodd\" d=\"M266.766 210.593c.928 0 1.393 1.122.736 1.778l-22.576 22.575c-.656.656-1.778.191-1.778-.737v-22.574c0-.576.466-1.042 1.041-1.042zm-69.617-21.272c-.928 0-1.393-1.122-.736-1.779l22.576-22.574c.656-.656 1.778-.191 1.778.737v22.574c0 .576-.466 1.042-1.041 1.042z\" clipRule=\"evenodd\" transform=\"translate(-98.841 -29.782)scale(1.47289)\" /><path fill=\"url(#paint1_linear_21_62)\" d=\"M246.294 185.616h30.242c.576 0 1.042-.466 1.042-1.042v-30.24c0-.575-.466-1.042-1.042-1.042h-30.242c-.575 0-1.042.467-1.042 1.042v30.24c0 .576.467 1.042 1.042 1.042\" transform=\"translate(-98.841 -29.782)scale(1.47289)\" /><path fill=\"url(#paint2_linear_21_62)\" d=\"M268.695 205.384h-41.676a1.04 1.04 0 0 1-1.042-1.042v-41.673c0-.576.466-1.042 1.042-1.042h11.982c.575 0 1.042.466 1.042 1.042v27.087c0 .576.466 1.042 1.042 1.042h27.61c.575 0 1.042.466 1.042 1.042v12.502c0 .575-.467 1.042-1.042 1.042\" transform=\"translate(-98.841 -29.782)scale(1.47289)\" /></g></svg>;\nexport default SvgInfrastructure;","import * as React from \"react\";\nconst SvgIotData = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-IoT-Core_64\"}</title><defs><linearGradient id=\"linearGradient-iot\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-IoT-Core_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Internet-of-Things\" fill=\"url(#linearGradient-iot)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-IoT-Core_Icon_64_Squid\" fill=\"#fff\" d=\"M57.423 47.906c0-1.11-.897-2.012-2-2.012s-2 .903-2 2.012c0 1.11.897 2.012 2 2.012s2-.902 2-2.012m-3.36 3.768a4.01 4.01 0 0 1-2.497-2.762h-2.143v8.071c1.94-1.165 3.672-3.132 4.64-5.309m-6.64 6.203v-9.97c0-.556.447-1.007 1-1.007h3.143a4 4 0 0 1 2.503-2.764c-1.107-2.54-3.378-4.826-5.897-5.934a4 4 0 0 1-2.748 2.52v17.555a10.3 10.3 0 0 0 2-.4m-4 .399V40.722a4 4 0 0 1-2.747-2.516c-2.524 1.122-4.794 3.405-5.899 5.93a4 4 0 0 1 2.503 2.764h3.143c.553 0 1 .45 1 1.006v9.948c.657.21 1.32.354 2 .422m-4-1.334v-8.03H37.28a4.01 4.01 0 0 1-2.495 2.762c.96 2.144 2.69 4.09 4.638 5.268m-6-7.024c1.103 0 2-.902 2-2.012s-.897-2.012-2-2.012-2 .903-2 2.012c0 1.11.897 2.012 2 2.012m9-13.076c0 1.109.897 2.011 2 2.011s2-.902 2-2.011c0-1.11-.897-2.012-2-2.012s-2 .902-2 2.012m16.999 11.064a4.016 4.016 0 0 1-3.289 3.951c-1.217 3.2-3.797 6.042-6.71 7.39V64h-2v-4.042c-.651.164-1.321.279-2 .334V64h-2v-3.708a12 12 0 0 1-2-.347V64h-2v-4.787c-2.927-1.374-5.504-4.195-6.71-7.356a4.017 4.017 0 0 1-.005-7.902c1.276-3.46 4.332-6.534 7.787-7.83.338-1.877 1.966-3.307 3.928-3.307 1.96 0 3.587 1.428 3.927 3.302 3.45 1.28 6.508 4.355 7.787 7.835a4.02 4.02 0 0 1 3.285 3.951m5.576-9.432c.045 2.737-1.036 5.393-2.891 7.148l-1.37-1.467c1.452-1.372 2.296-3.467 2.26-5.603 0-4.124-3.01-7.457-7-7.831a1.005 1.005 0 0 1-.905-1.063l.008-.119q.009-.102.01-.208c0-2.642-2.123-4.79-4.733-4.79-1.22 0-2.38.472-3.265 1.328a.999.999 0 0 1-1.629-.373c-1.664-4.477-5.95-7.484-10.662-7.484-6.285 0-11.397 5.173-11.397 11.533 0 .435-.278.826-.69.962C19.306 31.634 17 34.845 17 38.495c0 4.634 3.726 8.405 8.306 8.405h.119v2.012h-.12C19.624 48.912 15 44.239 15 38.495c0-4.28 2.562-8.074 6.444-9.654C21.81 21.695 27.67 16 34.822 16c5.096 0 9.766 2.986 12.004 7.555a6.64 6.64 0 0 1 3.552-1.026c3.551 0 6.469 2.791 6.717 6.317 4.565.861 7.904 4.85 7.904 9.628\" /></g></svg>;\nexport default SvgIotData;","import * as React from \"react\";\nconst SvgIot = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-IoT-Core_64\"}</title><defs><linearGradient id=\"linearGradient-iot\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-IoT-Core_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Internet-of-Things\" fill=\"url(#linearGradient-iot)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-IoT-Core_Icon_64_Squid\" fill=\"#fff\" d=\"M57.423 47.906c0-1.11-.897-2.012-2-2.012s-2 .903-2 2.012c0 1.11.897 2.012 2 2.012s2-.902 2-2.012m-3.36 3.768a4.01 4.01 0 0 1-2.497-2.762h-2.143v8.071c1.94-1.165 3.672-3.132 4.64-5.309m-6.64 6.203v-9.97c0-.556.447-1.007 1-1.007h3.143a4 4 0 0 1 2.503-2.764c-1.107-2.54-3.378-4.826-5.897-5.934a4 4 0 0 1-2.748 2.52v17.555a10.3 10.3 0 0 0 2-.4m-4 .399V40.722a4 4 0 0 1-2.747-2.516c-2.524 1.122-4.794 3.405-5.899 5.93a4 4 0 0 1 2.503 2.764h3.143c.553 0 1 .45 1 1.006v9.948c.657.21 1.32.354 2 .422m-4-1.334v-8.03H37.28a4.01 4.01 0 0 1-2.495 2.762c.96 2.144 2.69 4.09 4.638 5.268m-6-7.024c1.103 0 2-.902 2-2.012s-.897-2.012-2-2.012-2 .903-2 2.012c0 1.11.897 2.012 2 2.012m9-13.076c0 1.109.897 2.011 2 2.011s2-.902 2-2.011c0-1.11-.897-2.012-2-2.012s-2 .902-2 2.012m16.999 11.064a4.016 4.016 0 0 1-3.289 3.951c-1.217 3.2-3.797 6.042-6.71 7.39V64h-2v-4.042c-.651.164-1.321.279-2 .334V64h-2v-3.708a12 12 0 0 1-2-.347V64h-2v-4.787c-2.927-1.374-5.504-4.195-6.71-7.356a4.017 4.017 0 0 1-.005-7.902c1.276-3.46 4.332-6.534 7.787-7.83.338-1.877 1.966-3.307 3.928-3.307 1.96 0 3.587 1.428 3.927 3.302 3.45 1.28 6.508 4.355 7.787 7.835a4.02 4.02 0 0 1 3.285 3.951m5.576-9.432c.045 2.737-1.036 5.393-2.891 7.148l-1.37-1.467c1.452-1.372 2.296-3.467 2.26-5.603 0-4.124-3.01-7.457-7-7.831a1.005 1.005 0 0 1-.905-1.063l.008-.119q.009-.102.01-.208c0-2.642-2.123-4.79-4.733-4.79-1.22 0-2.38.472-3.265 1.328a.999.999 0 0 1-1.629-.373c-1.664-4.477-5.95-7.484-10.662-7.484-6.285 0-11.397 5.173-11.397 11.533 0 .435-.278.826-.69.962C19.306 31.634 17 34.845 17 38.495c0 4.634 3.726 8.405 8.306 8.405h.119v2.012h-.12C19.624 48.912 15 44.239 15 38.495c0-4.28 2.562-8.074 6.444-9.654C21.81 21.695 27.67 16 34.822 16c5.096 0 9.766 2.986 12.004 7.555a6.64 6.64 0 0 1 3.552-1.026c3.551 0 6.469 2.791 6.717 6.317 4.565.861 7.904 4.85 7.904 9.628\" /></g></svg>;\nexport default SvgIot;","import * as React from \"react\";\nconst SvgIotanalytics = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-IoT-Core_64\"}</title><defs><linearGradient id=\"linearGradient-iot\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-IoT-Core_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Internet-of-Things\" fill=\"url(#linearGradient-iot)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-IoT-Core_Icon_64_Squid\" fill=\"#fff\" d=\"M57.423 47.906c0-1.11-.897-2.012-2-2.012s-2 .903-2 2.012c0 1.11.897 2.012 2 2.012s2-.902 2-2.012m-3.36 3.768a4.01 4.01 0 0 1-2.497-2.762h-2.143v8.071c1.94-1.165 3.672-3.132 4.64-5.309m-6.64 6.203v-9.97c0-.556.447-1.007 1-1.007h3.143a4 4 0 0 1 2.503-2.764c-1.107-2.54-3.378-4.826-5.897-5.934a4 4 0 0 1-2.748 2.52v17.555a10.3 10.3 0 0 0 2-.4m-4 .399V40.722a4 4 0 0 1-2.747-2.516c-2.524 1.122-4.794 3.405-5.899 5.93a4 4 0 0 1 2.503 2.764h3.143c.553 0 1 .45 1 1.006v9.948c.657.21 1.32.354 2 .422m-4-1.334v-8.03H37.28a4.01 4.01 0 0 1-2.495 2.762c.96 2.144 2.69 4.09 4.638 5.268m-6-7.024c1.103 0 2-.902 2-2.012s-.897-2.012-2-2.012-2 .903-2 2.012c0 1.11.897 2.012 2 2.012m9-13.076c0 1.109.897 2.011 2 2.011s2-.902 2-2.011c0-1.11-.897-2.012-2-2.012s-2 .902-2 2.012m16.999 11.064a4.016 4.016 0 0 1-3.289 3.951c-1.217 3.2-3.797 6.042-6.71 7.39V64h-2v-4.042c-.651.164-1.321.279-2 .334V64h-2v-3.708a12 12 0 0 1-2-.347V64h-2v-4.787c-2.927-1.374-5.504-4.195-6.71-7.356a4.017 4.017 0 0 1-.005-7.902c1.276-3.46 4.332-6.534 7.787-7.83.338-1.877 1.966-3.307 3.928-3.307 1.96 0 3.587 1.428 3.927 3.302 3.45 1.28 6.508 4.355 7.787 7.835a4.02 4.02 0 0 1 3.285 3.951m5.576-9.432c.045 2.737-1.036 5.393-2.891 7.148l-1.37-1.467c1.452-1.372 2.296-3.467 2.26-5.603 0-4.124-3.01-7.457-7-7.831a1.005 1.005 0 0 1-.905-1.063l.008-.119q.009-.102.01-.208c0-2.642-2.123-4.79-4.733-4.79-1.22 0-2.38.472-3.265 1.328a.999.999 0 0 1-1.629-.373c-1.664-4.477-5.95-7.484-10.662-7.484-6.285 0-11.397 5.173-11.397 11.533 0 .435-.278.826-.69.962C19.306 31.634 17 34.845 17 38.495c0 4.634 3.726 8.405 8.306 8.405h.119v2.012h-.12C19.624 48.912 15 44.239 15 38.495c0-4.28 2.562-8.074 6.444-9.654C21.81 21.695 27.67 16 34.822 16c5.096 0 9.766 2.986 12.004 7.555a6.64 6.64 0 0 1 3.552-1.026c3.551 0 6.469 2.791 6.717 6.317 4.565.861 7.904 4.85 7.904 9.628\" /></g></svg>;\nexport default SvgIotanalytics;","import * as React from \"react\";\nconst SvgIotwireless = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-IoT-Core_64\"}</title><defs><linearGradient id=\"linearGradient-iot\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-IoT-Core_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Internet-of-Things\" fill=\"url(#linearGradient-iot)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-IoT-Core_Icon_64_Squid\" fill=\"#fff\" d=\"M57.423 47.906c0-1.11-.897-2.012-2-2.012s-2 .903-2 2.012c0 1.11.897 2.012 2 2.012s2-.902 2-2.012m-3.36 3.768a4.01 4.01 0 0 1-2.497-2.762h-2.143v8.071c1.94-1.165 3.672-3.132 4.64-5.309m-6.64 6.203v-9.97c0-.556.447-1.007 1-1.007h3.143a4 4 0 0 1 2.503-2.764c-1.107-2.54-3.378-4.826-5.897-5.934a4 4 0 0 1-2.748 2.52v17.555a10.3 10.3 0 0 0 2-.4m-4 .399V40.722a4 4 0 0 1-2.747-2.516c-2.524 1.122-4.794 3.405-5.899 5.93a4 4 0 0 1 2.503 2.764h3.143c.553 0 1 .45 1 1.006v9.948c.657.21 1.32.354 2 .422m-4-1.334v-8.03H37.28a4.01 4.01 0 0 1-2.495 2.762c.96 2.144 2.69 4.09 4.638 5.268m-6-7.024c1.103 0 2-.902 2-2.012s-.897-2.012-2-2.012-2 .903-2 2.012c0 1.11.897 2.012 2 2.012m9-13.076c0 1.109.897 2.011 2 2.011s2-.902 2-2.011c0-1.11-.897-2.012-2-2.012s-2 .902-2 2.012m16.999 11.064a4.016 4.016 0 0 1-3.289 3.951c-1.217 3.2-3.797 6.042-6.71 7.39V64h-2v-4.042c-.651.164-1.321.279-2 .334V64h-2v-3.708a12 12 0 0 1-2-.347V64h-2v-4.787c-2.927-1.374-5.504-4.195-6.71-7.356a4.017 4.017 0 0 1-.005-7.902c1.276-3.46 4.332-6.534 7.787-7.83.338-1.877 1.966-3.307 3.928-3.307 1.96 0 3.587 1.428 3.927 3.302 3.45 1.28 6.508 4.355 7.787 7.835a4.02 4.02 0 0 1 3.285 3.951m5.576-9.432c.045 2.737-1.036 5.393-2.891 7.148l-1.37-1.467c1.452-1.372 2.296-3.467 2.26-5.603 0-4.124-3.01-7.457-7-7.831a1.005 1.005 0 0 1-.905-1.063l.008-.119q.009-.102.01-.208c0-2.642-2.123-4.79-4.733-4.79-1.22 0-2.38.472-3.265 1.328a.999.999 0 0 1-1.629-.373c-1.664-4.477-5.95-7.484-10.662-7.484-6.285 0-11.397 5.173-11.397 11.533 0 .435-.278.826-.69.962C19.306 31.634 17 34.845 17 38.495c0 4.634 3.726 8.405 8.306 8.405h.119v2.012h-.12C19.624 48.912 15 44.239 15 38.495c0-4.28 2.562-8.074 6.444-9.654C21.81 21.695 27.67 16 34.822 16c5.096 0 9.766 2.986 12.004 7.555a6.64 6.64 0 0 1 3.552-1.026c3.551 0 6.469 2.791 6.717 6.317 4.565.861 7.904 4.85 7.904 9.628\" /></g></svg>;\nexport default SvgIotwireless;","import * as React from \"react\";\nconst SvgKafka = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_Amazon-Managed-Streaming-for-Kafka_16\"}</title><defs><linearGradient id=\"linearGradient-kfk\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_Amazon-Managed-Streaming-for-Kafka_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Analytics\" fill=\"url(#linearGradient-kfk)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"Amazon-Managed-Streaming-for-Kafka-Icon_16_Squid\" fill=\"#fff\" d=\"M7.725 11.188h8.55l-4.276-4.896zm-1.604.73a.52.52 0 0 1 .081-.553l5.41-6.196a.53.53 0 0 1 .775 0l5.41 6.196a.516.516 0 0 1-.388.856H6.59a.52.52 0 0 1-.468-.303m6.153-2.738.847-1.142h-.6l-.73 1.085V8.038h-.542v2.443h.541V9.3l.759 1.18h.643zm7.052 5.183-.204.176c-.506.444-1.427.444-1.936 0l-.403-.35c-.891-.783-2.399-.783-3.29-.002l-.405.352c-.505.444-1.429.444-1.938 0l-.401-.35c-.892-.784-2.4-.784-3.29-.002l-.406.353c-.507.442-1.428.442-1.936-.002l-.203-.175-.674.78.2.174c.446.391 1.047.586 1.647.586.598 0 1.197-.195 1.642-.584l.406-.353c.506-.444 1.427-.444 1.936.002l.403.349c.892.782 2.4.782 3.29 0l.406-.351c.505-.443 1.428-.444 1.937.002l.402.349c.892.783 2.4.78 3.289.002l.202-.176zm-.445 4.273c-.507.444-1.43.443-1.936-.002l-.402-.348c-.893-.784-2.4-.784-3.29-.002l-.405.352c-.506.444-1.43.444-1.937-.001l-.403-.35c-.893-.782-2.4-.781-3.289-.001l-.407.352c-.505.443-1.427.444-1.936-.002l-.202-.175-.674.78.2.174c.893.783 2.4.781 3.29.001l.405-.352c.505-.444 1.43-.444 1.936.001l.403.35c.894.782 2.4.781 3.29.001l.406-.352c.505-.445 1.427-.444 1.936.001l.403.35c.446.392 1.047.587 1.646.587.6 0 1.198-.195 1.642-.586l.203-.175-.675-.78zm.204-2.094.675.78-.203.176c-.444.39-1.043.585-1.642.585-.6 0-1.2-.196-1.646-.587l-.403-.35c-.51-.445-1.43-.445-1.936-.001l-.406.353c-.89.78-2.396.78-3.29-.002l-.403-.35c-.507-.444-1.43-.444-1.936 0l-.406.352c-.888.78-2.396.78-3.29-.002L4 17.322l.674-.78.202.175c.509.446 1.431.445 1.936.002l.407-.353c.89-.78 2.396-.78 3.29.002l.402.35c.507.444 1.43.444 1.937 0l.406-.352c.89-.78 2.396-.78 3.289.002l.402.35c.507.444 1.429.444 1.936.001z\" /></g></svg>;\nexport default SvgKafka;","import * as React from \"react\";\nconst SvgKinesis = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Kinesis_64\"}</title><defs><linearGradient id=\"linearGradient-kns\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Kinesis_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-kns)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Kinesis_Icon_64_Squid\" fill=\"#fff\" d=\"M19 62h2c0-8.406 5.465-17 46-17v-2c-42.297 0-48 9.604-48 19m6 6h2c0-7.566 0-19 40-19v-2c-18.337 0-30.272 2.359-36.49 7.212C25 58.512 25 63.996 25 68M15 26h-2c0 7.396 10.039 12.08 29.893 14C23.039 41.92 13 46.604 13 54h2c0-4.855 6.756-13 52-13v-2c-45.244 0-52-8.145-52-13m6-8h-2c0 9.396 5.703 19 48 19v-2c-40.535 0-46-8.594-46-17m46 13v2c-18.337 0-30.272-2.359-36.49-7.212C25 21.488 25 16.004 25 12h2c0 7.566 0 19 40 19\" /></g></svg>;\nexport default SvgKinesis;","import * as React from \"react\";\nconst SvgKinesisanalytics = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Kinesis_64\"}</title><defs><linearGradient id=\"linearGradient-kns\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Kinesis_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-kns)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Kinesis_Icon_64_Squid\" fill=\"#fff\" d=\"M19 62h2c0-8.406 5.465-17 46-17v-2c-42.297 0-48 9.604-48 19m6 6h2c0-7.566 0-19 40-19v-2c-18.337 0-30.272 2.359-36.49 7.212C25 58.512 25 63.996 25 68M15 26h-2c0 7.396 10.039 12.08 29.893 14C23.039 41.92 13 46.604 13 54h2c0-4.855 6.756-13 52-13v-2c-45.244 0-52-8.145-52-13m6-8h-2c0 9.396 5.703 19 48 19v-2c-40.535 0-46-8.594-46-17m46 13v2c-18.337 0-30.272-2.359-36.49-7.212C25 21.488 25 16.004 25 12h2c0 7.566 0 19 40 19\" /></g></svg>;\nexport default SvgKinesisanalytics;","import * as React from \"react\";\nconst SvgKinesisanalyticsv2 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Kinesis_64\"}</title><defs><linearGradient id=\"linearGradient-kns\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Kinesis_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-kns)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Kinesis_Icon_64_Squid\" fill=\"#fff\" d=\"M19 62h2c0-8.406 5.465-17 46-17v-2c-42.297 0-48 9.604-48 19m6 6h2c0-7.566 0-19 40-19v-2c-18.337 0-30.272 2.359-36.49 7.212C25 58.512 25 63.996 25 68M15 26h-2c0 7.396 10.039 12.08 29.893 14C23.039 41.92 13 46.604 13 54h2c0-4.855 6.756-13 52-13v-2c-45.244 0-52-8.145-52-13m6-8h-2c0 9.396 5.703 19 48 19v-2c-40.535 0-46-8.594-46-17m46 13v2c-18.337 0-30.272-2.359-36.49-7.212C25 21.488 25 16.004 25 12h2c0 7.566 0 19 40 19\" /></g></svg>;\nexport default SvgKinesisanalyticsv2;","import * as React from \"react\";\nconst SvgKms = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Key-Management-Services_64\"}</title><defs><linearGradient id=\"linearGradient-kms\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#bd0816\" /><stop offset=\"100%\" stopColor=\"#ff5252\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Key-Management-Services_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"url(#linearGradient-kms)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Key-Management-Services_Icon_64_Squid\" fill=\"#fff\" d=\"M51.997 52.496h7v-2h-7zm-9 0h7v-2h-7zm-9 0h7v-2h-7zm11-8c0-1.103.898-2 2-2 1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2m6 0c0-2.206-1.793-4-4-4s-4 1.794-4 4 1.794 4 4 4 4-1.794 4-4m-14-2c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .898-2 2-2m0 6c2.207 0 4-1.794 4-4s-1.793-4-4-4-4 1.794-4 4 1.794 4 4 4m29-15v23a1 1 0 0 1-1 1h-31v-2h30v-21h-22v-2h23a1 1 0 0 1 1 1m-35.301 5.047a1 1 0 0 0-.7.953v21.04l-2.398 2.057-2.601-2.973v-2.624a1 1 0 0 0-.293-.707l-2.292-2.293 2.292-2.293a1 1 0 0 0 .293-.707v-2a1 1 0 0 0-.293-.707l-2.292-2.293 2.292-2.293a1 1 0 0 0 .293-.707v-3.49a1 1 0 0 0-.698-.953c-5.142-1.63-8.182-6.919-7.07-12.304.803-3.88 3.787-6.99 7.602-7.926 3.249-.797 6.58-.1 9.14 1.907a10.45 10.45 0 0 1 4.026 8.266c0 4.553-3.002 8.685-7.301 10.047m9.3-10.047c0-3.864-1.745-7.45-4.79-9.84s-6.997-3.22-10.851-2.275c-4.561 1.117-8.126 4.832-9.084 9.463v.001C14 31.99 17.3 38.035 22.997 40.215v2.367L20.29 45.29a1 1 0 0 0 0 1.414l2.707 2.707v1.172L20.29 53.29a1 1 0 0 0 0 1.414l2.707 2.707v2.586c0 .242.088.476.248.66l3.5 4a1 1 0 0 0 1.403.1l3.5-3a1 1 0 0 0 .349-.76V40.204c4.746-1.832 8-6.542 8-11.708m-12.5 2.37a2.503 2.503 0 0 1-2.5-2.5c0-1.378 1.123-2.5 2.5-2.5 1.38 0 2.5 1.122 2.5 2.5 0 1.38-1.12 2.5-2.5 2.5m0-7a4.505 4.505 0 0 0-4.5 4.5c0 2.482 2.02 4.5 4.5 4.5 2.483 0 4.5-2.018 4.5-4.5 0-2.48-2.017-4.5-4.5-4.5\" /></g></svg>;\nexport default SvgKms;","import * as React from \"react\";\nconst SvgLakeformation = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Lake-Formation_16\"}</title><defs><linearGradient id=\"linearGradient-lf\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Lake-Formation_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Analytics\" fill=\"url(#linearGradient-lf)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Lake-Formation_Icon_16_Squid\" fill=\"#fff\" d=\"m14.146 15.146.707.707-2 2a.5.5 0 0 1-.707 0l-2-2 .707-.707L12 16.292V14.5h1v1.792zM12.5 19A6.51 6.51 0 0 1 6 12.5C6 8.916 8.916 6 12.5 6S19 8.916 19 12.5 16.083 19 12.5 19m0-14C8.364 5 5 8.364 5 12.5c0 4.135 3.364 7.5 7.5 7.5 4.135 0 7.5-3.365 7.5-7.5C20 8.364 16.635 5 12.5 5m1.035 6.298a.5.5 0 0 0-.053.224V13h-1.965v-1.478a.5.5 0 0 0-.053-.224L10.31 9h4.379zM15.5 8h-6a.5.5 0 0 0-.448.724l1.465 2.917V13.5a.5.5 0 0 0 .5.5h2.965a.5.5 0 0 0 .5-.5v-1.859l1.465-2.917A.503.503 0 0 0 15.5 8\" /></g></svg>;\nexport default SvgLakeformation;","import * as React from \"react\";\nconst SvgLambda = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Lambda_64\"}</title><defs><linearGradient id=\"linearGradient-lmb\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Lambda_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Compute\" fill=\"url(#linearGradient-lmb)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Lambda_Icon_64_Squid\" fill=\"#fff\" d=\"M28.008 66H15.59l13.733-28.704 6.222 12.81zm2.212-31.447a1 1 0 0 0-.902-.564h-.003a1 1 0 0 0-.903.569L13.098 66.569A1 1 0 0 0 14.002 68h14.64c.388 0 .74-.223.906-.572l8.016-16.9a1 1 0 0 0-.005-.863zM64.995 66H52.66L32.867 24.57a1 1 0 0 0-.905-.57H23.89l.009-10h15.82L59.42 55.429c.166.348.519.571.906.571h4.67zm1.003-12H60.96l-19.7-41.429a1 1 0 0 0-.907-.571H22.898c-.553 0-1.002.447-1.003.999l-.01 12A1 1 0 0 0 22.886 26h8.442l19.793 41.43c.167.348.517.57.904.57h13.972A1 1 0 0 0 67 67V55a1 1 0 0 0-1.002-1\" /></g></svg>;\nexport default SvgLambda;","import * as React from \"react\";\nconst SvgLogs = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-CloudWatch_64\"}</title><defs><linearGradient id=\"linearGradient-cwl\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-CloudWatch_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Management-Governance\" fill=\"url(#linearGradient-cwl)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-CloudWatch_Icon_64_Squid\" fill=\"#fff\" d=\"M55.06 46.777c0-3.909-3.202-7.09-7.138-7.09s-7.136 3.181-7.136 7.09c0 3.91 3.2 7.09 7.136 7.09s7.137-3.18 7.137-7.09m2.01 0c0 5.011-4.103 9.087-9.147 9.087-5.043 0-9.147-4.076-9.147-9.087 0-5.01 4.104-9.086 9.147-9.086s9.148 4.076 9.148 9.086m8.44 13.697L58.5 54.203a13 13 0 0 1-1.947 2.16l6.998 6.27a1.474 1.474 0 0 0 2.066-.107 1.453 1.453 0 0 0-.108-2.052m-17.588-2.812c6.043 0 10.958-4.883 10.958-10.885s-4.915-10.884-10.958-10.884c-6.041 0-10.957 4.882-10.957 10.884s4.916 10.885 10.957 10.885m19.19 6.2A3.48 3.48 0 0 1 64.529 65a3.48 3.48 0 0 1-2.322-.883L54.931 57.6a12.94 12.94 0 0 1-7.009 2.06c-7.15 0-12.967-5.779-12.967-12.882s5.817-12.881 12.967-12.881 12.969 5.779 12.969 12.881c0 2.038-.492 3.96-1.344 5.674l7.309 6.54a3.444 3.444 0 0 1 .256 4.872M21.28 29.393c0 .519.032 1.036.094 1.536a.994.994 0 0 1-.823 1.106c-2.472.634-6.54 2.553-6.54 8.31 0 4.348 2.413 6.748 4.439 7.996.691.433 1.51.664 2.373.673l12.122.011-.002 1.997-12.131-.01c-1.246-.014-2.428-.351-3.428-.977C15.377 48.797 12 45.89 12 40.345c0-6.683 4.6-9.153 7.3-10.026q-.03-.462-.03-.926c0-5.46 3.728-11.123 8.672-13.171 5.782-2.407 11.908-1.214 16.384 3.189 1.388 1.364 2.529 3.02 3.404 4.937a6.5 6.5 0 0 1 4.154-1.502c3.002 0 6.382 2.264 6.984 7.215 2.812.644 8.753 2.894 8.753 10.362 0 2.981-.941 5.444-2.798 7.319l-1.433-1.401c1.473-1.488 2.22-3.479 2.22-5.918 0-6.532-5.504-8.157-7.873-8.551a1 1 0 0 1-.823-1.157c-.329-4.055-2.753-5.872-5.03-5.872-1.437 0-2.784.695-3.697 1.907a1.006 1.006 0 0 1-1.75-.258c-.823-2.266-2.01-4.171-3.525-5.661-3.88-3.816-9.184-4.85-14.195-2.766-4.17 1.727-7.437 6.702-7.437 11.328\" /></g></svg>;\nexport default SvgLogs;","import * as React from \"react\";\nconst SvgManagedblockchain = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Managed-Blockchain_64\"}</title><g id=\"Icon-Architecture/64/Arch_Amazon-Managed-Blockchain_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Blockchain\" fill=\"#ed7100\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Managed-Blockchain-Icon_64_Squid\" fill=\"#fff\" d=\"m21.621 32.018-1.73-1.001A18.1 18.1 0 0 1 35.513 22c6.339 0 12.098 3.235 15.405 8.653l-1.707 1.042C46.27 26.877 41.149 24 35.513 24a16.1 16.1 0 0 0-13.892 8.018M49.199 48.25l1.731 1.001c-3.217 5.562-9.203 9.017-15.621 9.017-6.341 0-12.1-3.234-15.407-8.653l1.707-1.042c2.941 4.819 8.062 7.695 13.7 7.695a16.1 16.1 0 0 0 13.89-8.018m18.633-4.561-2 3-1.664-1.109.963-1.446H57v2a1 1 0 0 1-1 1H44a1 1 0 0 1-1-1v-3h-1v3a1 1 0 0 1-1 1H29a1 1 0 0 1-1-1v-3h-1v3a1 1 0 0 1-1 1H14a1 1 0 0 1-1-1v-12a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v4h1v-4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v4h1v-4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v2h4.131l-.963-1.445 1.664-1.109 2 3a1 1 0 0 1 0 1.109l-2 3-1.664-1.109.963-1.446H56a1 1 0 0 1-1-1v-2H45v4a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1v-4H30v4a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1v-4H15v10h10v-3a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v3h10v-3a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v3h10v-2a1 1 0 0 1 1-1h9.131l-.963-1.445 1.664-1.109 2 3a1 1 0 0 1 0 1.109M48 42.134h4v-4h-4zm-1-6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1zm-14 6h4v-4h-4zm-1-6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1zm-14 6h4v-4h-4zm-1-6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1z\" /></g></svg>;\nexport default SvgManagedblockchain;","import * as React from \"react\";\nconst SvgMediaconvert = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Elemental-MediaConvert_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-Elemental-MediaConvert_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Media-Services\" fill=\"#ed7100\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Elemental-MediaConvert_Icon_64_Squid\" fill=\"#fff\" d=\"m62 52.422-6.496 3.713.992 1.736 7-4a1 1 0 0 0 .504-.869v-7h-2zm-9-20.844L40 24.15l-13 7.43v15.876l13 8.359 13-8.359zm11-4.577v6.998h-2v-5.46l-7 3.11V48a1 1 0 0 1-.459.842L41 57.549v6.75l5.514-3.066.972 1.748-7 3.893a1 1 0 0 1-.972 0l-7-3.893.972-1.748L39 64.299v-6.75l-13.541-8.706A1 1 0 0 1 25 48V31.648l-7-3.111v5.462h-2V27c0-.36.192-.69.504-.87l7-4.002.992 1.736-5.283 3.022 6.73 2.991 13.561-7.75a1 1 0 0 1 .992 0l13.561 7.751 6.732-2.991-5.285-3.023.992-1.736 7 4.002c.312.18.504.51.504.87m-24 8.164-4 2.4v4.87l4 2.4 4-2.4v-4.87zm.515-2.023 4.529 2.717 3.509-1.754.894 1.79L46 37.617V43c0 .35-.185.677-.485.857L41 46.568v4.434h-2v-4.435l-4.515-2.71c-.3-.18-.485-.505-.485-.856v-5.383l-3.447-1.724.894-1.79 3.509 1.755 4.529-2.717a1 1 0 0 1 1.03 0M40 15.144l6.514 3.624.972-1.748-7-3.894a1 1 0 0 0-.972 0l-7 3.894.972 1.748zM18 52.42l6.496 3.716-.992 1.736-7-4.003a1 1 0 0 1-.504-.869v-6.998h2z\" /></g></svg>;\nexport default SvgMediaconvert;","import * as React from \"react\";\nconst SvgMediastoreData = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Elemental-MediaStore_16\"}</title><defs><linearGradient id=\"linearGradient-ms\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Elemental-MediaStore_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Media-Services\" fill=\"url(#linearGradient-ms)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Elemental-MediaStore_Icon_16_Squid\" fill=\"#fff\" d=\"M8.98 15.475 7.977 16l-1.002-.525v-1.393l1.002-.502 1.001.502zm1.001.302v-2.005a.5.5 0 0 0-.276-.448l-1.503-.752a.5.5 0 0 0-.449 0l-1.503.752a.5.5 0 0 0-.276.448v2.005c0 .187.104.358.268.445l1.503.788a.5.5 0 0 0 .465 0l1.503-.788a.5.5 0 0 0 .268-.445m7.013.894v-2.839l2.004-1.004v2.835zm-4.007-.75 2.478 1.519-2.478 1.246zM9.98 9.72V6.797l6.012 3.127v6.665l-3.006-1.845v-3.187a.5.5 0 0 0-.274-.447zm-1.002-2.9v2.39L6.613 8.009zm3.507-1.759 2.262 1.13-1.667 1.087-2.462-1.281zm4.003 3.99L14.102 7.81l1.685-1.098 2.623 1.31zM19 11.706l-2.005 1.005V9.92l2.004-1.075zm.724-4.149L12.71 4.053a.5.5 0 0 0-.448 0L5.278 7.558A.5.5 0 0 0 5 8.004l.001.001H5v4.011h1.002V8.823l5.983 3.04v6.746l-1.702-1.032-.52.858 2.458 1.49h.002l.003.003.001-.001a.5.5 0 0 0 .484.02l7.013-3.526a.5.5 0 0 0 .276-.448V8.005a.5.5 0 0 0-.277-.448\" /></g></svg>;\nexport default SvgMediastoreData;","import * as React from \"react\";\nconst SvgMediastore = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Elemental-MediaStore_16\"}</title><defs><linearGradient id=\"linearGradient-ms\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Elemental-MediaStore_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Media-Services\" fill=\"url(#linearGradient-ms)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Elemental-MediaStore_Icon_16_Squid\" fill=\"#fff\" d=\"M8.98 15.475 7.977 16l-1.002-.525v-1.393l1.002-.502 1.001.502zm1.001.302v-2.005a.5.5 0 0 0-.276-.448l-1.503-.752a.5.5 0 0 0-.449 0l-1.503.752a.5.5 0 0 0-.276.448v2.005c0 .187.104.358.268.445l1.503.788a.5.5 0 0 0 .465 0l1.503-.788a.5.5 0 0 0 .268-.445m7.013.894v-2.839l2.004-1.004v2.835zm-4.007-.75 2.478 1.519-2.478 1.246zM9.98 9.72V6.797l6.012 3.127v6.665l-3.006-1.845v-3.187a.5.5 0 0 0-.274-.447zm-1.002-2.9v2.39L6.613 8.009zm3.507-1.759 2.262 1.13-1.667 1.087-2.462-1.281zm4.003 3.99L14.102 7.81l1.685-1.098 2.623 1.31zM19 11.706l-2.005 1.005V9.92l2.004-1.075zm.724-4.149L12.71 4.053a.5.5 0 0 0-.448 0L5.278 7.558A.5.5 0 0 0 5 8.004l.001.001H5v4.011h1.002V8.823l5.983 3.04v6.746l-1.702-1.032-.52.858 2.458 1.49h.002l.003.003.001-.001a.5.5 0 0 0 .484.02l7.013-3.526a.5.5 0 0 0 .276-.448V8.005a.5.5 0 0 0-.277-.448\" /></g></svg>;\nexport default SvgMediastore;","import * as React from \"react\";\nconst SvgMemorydb = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-MemoryDB-for-Redis_64\"}</title><defs><linearGradient id=\"linearGradient-1\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-MemoryDB-for-Redis_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-1)\" d=\"M0 0h80v80H0z\" /><g id=\"Icon-Service/64/Amazon-MemoryDB-for-Redis_64\" fill=\"#fff\" transform=\"translate(8 8)\"><path id=\"Fill-1\" d=\"M22.979 17.248C12.823 17.248 6 14.34 6 11.624S12.823 6 22.979 6c10.036 0 16.033 2.86 16.033 5.624 0 2.765-5.997 5.624-16.033 5.624m15.43 15.483c1.94 0 3.876.217 5.752.645l.445-1.95A28 28 0 0 0 41 30.861V11.955h-.022c.009-.111.034-.218.034-.331C41.012 7.136 33.597 4 22.979 4 13.548 4 4 6.619 4 11.624c0 .114.031.22.04.331H4v40.358c0 2.88 3.13 5.205 8.814 6.546l.459-1.946C8.788 55.853 6 54.091 6 52.313v-9.607c1.295 1.045 3.198 1.933 5.648 2.613l.535-1.926C8.312 42.317 6 40.713 6 39.101v-9.74c3.073 2.535 9.256 3.91 15.417 4.165l.082-1.998C11.797 31.126 6 28.242 6 25.687V15.213c3.284 2.656 10.152 4.035 16.979 4.035 7.33 0 13.13-1.495 16.021-3.896v15.396c-.197-.004-.394-.017-.591-.017-10.349 0-19.797 5.699-24.659 14.871l1.768.937c4.513-8.517 13.284-13.808 22.891-13.808m13.228 3.643a25.7 25.7 0 0 0-5.176-2.36l.623-1.901a27.8 27.8 0 0 1 5.579 2.544zm-9.849 21.581a6.37 6.37 0 0 0-1.319-3.002l11.339-10.721c3.622 3.516 5.873 8.529 6.13 13.723zm-6.317-3.414a4.4 4.4 0 0 1 4.28 3.414h-8.559a4.4 4.4 0 0 1 4.279-3.414m17.804-11.696 3.675-3.474-1.375-1.454L38.988 53.6a6.35 6.35 0 0 0-3.517-1.059c-3.193 0-5.839 2.353-6.316 5.414H17.864c.515-10.764 9.305-19.359 20.037-19.359 2.886 0 5.669.598 8.274 1.779l.826-1.821a21.9 21.9 0 0 0-9.1-1.958c-12.164 0-22.061 10.03-22.061 22.359v1h44.122v-1c0-6.046-2.488-11.999-6.687-16.11\" /></g></g></svg>;\nexport default SvgMemorydb;","import * as React from \"react\";\nconst SvgMq = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_Amazon-MQ_16\"}</title><defs><linearGradient id=\"linearGradient-mq\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_Amazon-MQ_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Application-Integration\" fill=\"url(#linearGradient-mq)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"Amazon-MQ-Icon_16_Squid\" fill=\"#fff\" d=\"M8.005 12.983h1.002v-.99H8.005zm7.012 0h1.002v-.99h-1.002zm-2.227-1.76a3.2 3.2 0 0 1-1.556 0 5 5 0 0 1 0 2.434q.382-.096.778-.097.396.001.778.097a5 5 0 0 1 0-2.434m1.58-.908c-.965.953-.965 3.297 0 4.25a.494.494 0 0 1-.355.846.5.5 0 0 1-.353-.145 2.31 2.31 0 0 0-3.299 0 .505.505 0 0 1-.708 0 .49.49 0 0 1 0-.701c.964-.953.964-3.297 0-4.25a.49.49 0 0 1 0-.7.505.505 0 0 1 .708 0 2.31 2.31 0 0 0 3.299 0 .505.505 0 0 1 .708 0 .494.494 0 0 1 0 .7M6.865 8.064c0 .34.281.617.625.617a.62.62 0 0 0 .625-.617c0-.341-.28-.617-.625-.617a.62.62 0 0 0-.625.617m-1.001 0c0-.887.73-1.608 1.626-1.608.897 0 1.626.721 1.626 1.608A1.62 1.62 0 0 1 7.49 9.672a1.62 1.62 0 0 1-1.626-1.608m11.27 8.908c0-.34-.28-.618-.625-.618a.623.623 0 0 0-.625.618c0 .34.282.617.625.617a.62.62 0 0 0 .625-.617m1.001 0c0 .886-.729 1.607-1.626 1.607a1.62 1.62 0 0 1-1.626-1.607c0-.886.73-1.608 1.626-1.608.897 0 1.626.722 1.626 1.608M15.88 8.06c0 .34.282.617.625.617a.62.62 0 0 0 .624-.617.62.62 0 0 0-.624-.617.62.62 0 0 0-.625.617m-1.001 0c0-.887.73-1.607 1.626-1.607.897 0 1.626.72 1.626 1.607 0 .886-.73 1.608-1.626 1.608A1.62 1.62 0 0 1 14.88 8.06m-6.76 8.916c0-.34-.28-.618-.625-.618a.62.62 0 0 0-.624.618c0 .34.28.617.624.617a.62.62 0 0 0 .625-.617m1.001 0c0 .886-.729 1.607-1.626 1.607s-1.626-.72-1.626-1.607c0-.886.73-1.608 1.626-1.608a1.62 1.62 0 0 1 1.626 1.608m9.696-4.897a.626.626 0 0 0-.883 0 .61.61 0 0 0 0 .872.646.646 0 0 0 .883 0 .61.61 0 0 0 0-.872m.708 1.572a1.62 1.62 0 0 1-1.148.471c-.436 0-.844-.167-1.151-.47a1.595 1.595 0 0 1 0-2.273c.613-.607 1.684-.608 2.3 0a1.595 1.595 0 0 1 0 2.272M6.066 12.085a.62.62 0 0 0-.44-.182.62.62 0 0 0-.442.182.61.61 0 0 0 0 .872.645.645 0 0 0 .882 0 .61.61 0 0 0 0-.872m.71 1.572a1.62 1.62 0 0 1-1.15.471 1.62 1.62 0 0 1-1.15-.471 1.595 1.595 0 0 1 0-2.272c.614-.607 1.683-.608 2.3 0a1.597 1.597 0 0 1 0 2.272m2.995 3.785-.444.888c.914.446 1.78.67 2.643.67.864 0 1.73-.224 2.643-.67l-.444-.888c-1.542.752-2.856.753-4.398 0M9.75 7.448l-.4-.907a6.63 6.63 0 0 1 5.242 0l-.4.907a5.62 5.62 0 0 0-4.442 0\" /></g></svg>;\nexport default SvgMq;","import * as React from \"react\";\nconst SvgMwaa = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_CN-Pinwheel_16\"}</title><defs><linearGradient id=\"linearGradient-mwaa\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_CN-Pinwheel_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-mwaa)\" d=\"M0 0h24v24H0z\" /><g id=\"Icon-Service/16/CN-Pinwheel_16\" fill=\"#fff\" transform=\"translate(4 4)\"><path id=\"Fill-7\" d=\"M1 3h2V1H1zM.5 4h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5m14 8a.5.5 0 1 1 .002-1.002A.5.5 0 0 1 14.5 12m0-2c-.827 0-1.5.673-1.5 1.5s.673 1.5 1.5 1.5 1.5-.673 1.5-1.5-.673-1.5-1.5-1.5m0-6a.5.5 0 1 1 .002-1.002A.5.5 0 0 1 14.5 4m0-2c-.827 0-1.5.673-1.5 1.5S13.673 5 14.5 5 16 4.327 16 3.5 15.327 2 14.5 2m0 6a.5.5 0 1 1 .002-1.002A.5.5 0 0 1 14.5 8m0-2c-.827 0-1.5.673-1.5 1.5S13.673 9 14.5 9 16 8.327 16 7.5 15.327 6 14.5 6M16 0v1h-4v14h4v1h-4.5a.5.5 0 0 1-.5-.5V8H6V7h5V.5a.5.5 0 0 1 .5-.5zM1 9.191V6.809L3.382 8zm3.724-1.638-4-2A.5.5 0 0 0 0 6v4a.5.5 0 0 0 .724.447l4-2a.5.5 0 0 0 0-.894M2.5 15c-.827 0-1.5-.673-1.5-1.5S1.673 12 2.5 12s1.5.673 1.5 1.5S3.327 15 2.5 15m0-4A2.503 2.503 0 0 0 0 13.5C0 14.878 1.121 16 2.5 16S5 14.878 5 13.5 3.879 11 2.5 11\" /></g></g></svg>;\nexport default SvgMwaa;","import * as React from \"react\";\nconst SvgNeptune = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_Amazon-Neptune_16\"}</title><defs><linearGradient id=\"linearGradient-npt\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_Amazon-Neptune_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Database\" fill=\"url(#linearGradient-npt)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"Amazon-Neptune_Icon_16_Squid\" fill=\"#fff\" d=\"M16.435 18.968a.316.316 0 1 1 .001-.632.316.316 0 0 1-.001.632m-1.424-4.75a.87.87 0 0 1 1.74 0 .87.87 0 0 1-1.74 0m3.64-4.197a.316.316 0 1 1 0 .632.316.316 0 0 1 0-.632m-6.097 5.62a.315.315 0 1 1 0-.63.315.315 0 0 1 0 .63m6.376 0c-.59 0-1.07.48-1.07 1.071 0 .025.011.046.014.07l-.986.615c-.07-.026-.146-.031-.22-.045v-1.409a1.9 1.9 0 0 0 1.115-1.726c0-.424-.146-.812-.381-1.129l.88-1.478c.12.035.239.074.37.074A1.35 1.35 0 0 0 20 10.337a1.35 1.35 0 0 0-1.348-1.348 1.35 1.35 0 0 0-1.347 1.348c0 .225.069.427.167.614l-.893 1.501a1.9 1.9 0 0 0-.699-.136c-.305 0-.59.078-.845.207l-.613-.627c.01-.058.035-.112.035-.174 0-.59-.48-1.07-1.07-1.07a1.072 1.072 0 0 0 0 2.142c.139 0 .269-.032.39-.08l.493.504a1.9 1.9 0 0 0-.291 1l.002.017-.52.108a1.33 1.33 0 0 0-.907-.364 1.348 1.348 0 1 0 1.348 1.347c0-.007-.004-.012-.004-.02l.377-.078c.295.467.789.793 1.362.867v1.5c-.326.248-.55.62-.55 1.057 0 .743.604 1.348 1.348 1.348a1.35 1.35 0 0 0 1.238-1.877l.763-.476c.15.079.313.136.494.136a1.071 1.071 0 0 0 0-2.141M9.228 5.032c2.561 0 4.197.844 4.197 1.424S11.789 7.88 9.228 7.88s-4.196-.843-4.196-1.424c0-.58 1.634-1.424 4.196-1.424m0 13.661c-2.522 0-4.196-.811-4.196-1.348v-1.796c1.058.63 2.778.96 4.432.96v-1.031c-2.75 0-4.432-.895-4.432-1.383v-2.274c1.058.631 2.778.96 4.432.96.485 0 .966-.027 1.43-.081l-.12-1.025q-.64.075-1.31.074c-2.75 0-4.432-.894-4.432-1.382V7.961c1.015.624 2.635.952 4.196.952s3.182-.328 4.197-.952v1.344h1.032v-2.85C14.457 4.862 11.764 4 9.228 4S4 4.86 4 6.456v10.889c0 1.563 2.63 2.38 5.228 2.38 2.599 0 5.229-.817 5.229-2.38h-1.032c0 .537-1.674 1.348-4.197 1.348\" /></g></svg>;\nexport default SvgNeptune;","import * as React from \"react\";\nconst SvgOpensearch = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Elasticsearch-Service_64\"}</title><defs><linearGradient id=\"linearGradient-es\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Elasticsearch-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-es)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Elasticsearch-Service_Icon_64_Squid\" fill=\"#fff\" d=\"M44.26 51.33c-4.417 0-8.01-3.593-8.01-8.009s3.593-8.01 8.01-8.01 8.01 3.593 8.01 8.01-3.593 8.009-8.01 8.009m0-18.019c-5.52 0-10.01 4.49-10.01 10.01S38.74 53.33 44.26 53.33s10.01-4.49 10.01-10.009-4.49-10.01-10.01-10.01m20.288 28.035a1.774 1.774 0 0 1-2.496.131l-8.34-7.523a14.4 14.4 0 0 0 2.337-2.641l8.367 7.538c.723.652.781 1.773.132 2.495M32.011 43.321c0-6.755 5.495-12.25 12.249-12.25s12.249 5.495 12.249 12.25c0 6.754-5.495 12.249-12.249 12.249s-12.249-5.495-12.249-12.249m25.052 6.214a14.14 14.14 0 0 0 1.446-6.214c0-7.858-6.392-14.25-14.249-14.25s-14.249 6.392-14.249 14.25S36.403 57.57 44.26 57.57c2.899 0 5.596-.875 7.849-2.368l8.605 7.762a3.75 3.75 0 0 0 2.518.962 3.77 3.77 0 0 0 2.802-1.241 3.777 3.777 0 0 0-.278-5.319zM67 20v34h-2V21h-8v11h-2V20a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1M51 61h2v5a1 1 0 0 1-1 1H42a1 1 0 0 1-1-1v-6h2v5h8zm-8-35h-2V14a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v14h-2V15h-8zm-6 33h2v7a1 1 0 0 1-1 1H28a1 1 0 0 1-1-1V51h2v14h8zm-8-23h-2V23a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v4h-2v-3h-8zM15 65h8V31h-8zm9-36H14a1 1 0 0 0-1 1v36a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V30a1 1 0 0 0-1-1\" /></g></svg>;\nexport default SvgOpensearch;","import * as React from \"react\";\nconst SvgOrganizations = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Organizations_16\"}</title><defs><linearGradient id=\"linearGradient-org\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Organizations_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Management-Governance\" fill=\"url(#linearGradient-org)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Organizations_Icon_16_Squid\" fill=\"#fff\" d=\"M19.001 19.003h-1.06v-1.06h1.061zm-5.994 0h-1.014v-1.06h1.014zm-5.993 0H5.999v-1.06h1.015zM19.5 16.945H19v-1.496a.5.5 0 0 0-.5-.498h-5.494v-.562h-.998v.562H6.514c-.275 0-.5.222-.5.498v1.496H5.5a.5.5 0 0 0-.499.5V19.5a.5.5 0 0 0 .5.499h2.013a.5.5 0 0 0 .5-.499v-2.056a.5.5 0 0 0-.5-.5h-.5v-.998h4.996v.998h-.516a.5.5 0 0 0-.5.5V19.5a.5.5 0 0 0 .5.499h2.014a.5.5 0 0 0 .5-.499v-2.056a.5.5 0 0 0-.5-.5h-.5v-.998h4.995v.998h-.561a.5.5 0 0 0-.5.5V19.5a.5.5 0 0 0 .5.499h2.06a.5.5 0 0 0 .499-.499v-2.056a.5.5 0 0 0-.5-.5M12.499 6.042l2.702 1.163-2.712 1.218-2.716-1.217zm.498 6.568L12.99 9.29l2.952-1.324v2.957zm-3.97-4.645 2.964 1.326.008 3.32-2.971-1.688zm-.746 3.681 3.972 2.258a.5.5 0 0 0 .496-.001l3.942-2.257a.5.5 0 0 0 .25-.433V7.196c0-.2-.12-.38-.301-.458L12.698 5.04a.5.5 0 0 0-.394 0L8.331 6.736a.5.5 0 0 0-.302.459v4.017c0 .18.096.346.252.433\" /></g></svg>;\nexport default SvgOrganizations;","import * as React from \"react\";\nconst SvgPinpoint = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Pinpoint-APIs_64\"}</title><defs><linearGradient id=\"linearGradient-elc\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Pinpoint-APIs_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Business-Applications\" fill=\"url(#linearGradient-elc)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><g id=\"Icon-Service/64/Amazon-Pinpoint\" fill=\"#fff\" transform=\"translate(16 16)\"><path id=\"Amazon-Pinpoint-Icon_64_Squid\" d=\"m23.293 23.293 4.18-4.179A5.96 5.96 0 0 0 24.004 18a6.003 6.003 0 0 0-5.997 5.997 6.003 6.003 0 0 0 5.997 5.996A6 6 0 0 0 30 23.997a5.96 5.96 0 0 0-1.113-3.469l-4.18 4.179zm11.276-8.448-4.256 4.257A7.95 7.95 0 0 1 32 23.997c0 4.409-3.587 7.996-7.996 7.996s-7.997-3.587-7.997-7.996S19.595 16 24.004 16a7.94 7.94 0 0 1 4.894 1.688l4.257-4.257A13.92 13.92 0 0 0 24.004 10c-7.718 0-13.997 6.279-13.997 13.997 0 7.717 6.279 13.996 13.997 13.996S38 31.714 38 23.997c0-3.5-1.3-6.696-3.431-9.152m2.461-7.33A3.49 3.49 0 0 0 40.515 11 3.49 3.49 0 0 0 44 7.515a3.49 3.49 0 0 0-3.485-3.485 3.49 3.49 0 0 0-3.485 3.485m-2.462 4.502 1.416-1.415a5.46 5.46 0 0 1-.954-3.087 5.49 5.49 0 0 1 5.485-5.485A5.49 5.49 0 0 1 46 7.515 5.49 5.49 0 0 1 40.515 13a5.45 5.45 0 0 1-3.12-.98l-1.413 1.411C38.475 16.253 40 19.946 40 23.997c0 8.82-7.176 15.996-15.996 15.996S8.007 32.817 8.007 23.997 15.183 8 24.004 8c4.051 0 7.743 1.526 10.564 4.017M48 24c0 13.233-10.767 24-24 24S0 37.233 0 24 10.767 0 24 0c3.361 0 6.614.684 9.669 2.032l-.809 1.83A21.8 21.8 0 0 0 24 2C11.869 2 2 11.869 2 24s9.869 22 22 22 22-9.869 22-22c0-3.09-.622-6.056-1.851-8.814l1.829-.814C47.319 17.389 48 20.628 48 24\" /></g></g></svg>;\nexport default SvgPinpoint;","import * as React from \"react\";\nconst SvgPipes = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-EventBridge_64\"}</title><defs><linearGradient id=\"linearGradient-ebr\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-EventBridge_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Application-Integration\" fill=\"url(#linearGradient-ebr)\" transform=\"translate(0 1)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-EventBridge_Icon_64_Squid\" fill=\"#fff\" d=\"M53.657 67c-2.143 0-3.887-1.753-3.887-3.909s1.744-3.909 3.887-3.909 3.887 1.753 3.887 3.909S55.8 67 53.657 67m-8.524-17H34.798l-5.168-9 5.168-9h10.335l5.167 9zM27.62 22.818c-2.143 0-3.887-1.753-3.887-3.909S25.478 15 27.62 15c2.144 0 3.888 1.753 3.888 3.909s-1.744 3.909-3.888 3.909m26.036 34.364c-.738 0-1.442.143-2.093.394L47.34 50.41l-.223.133L52.31 41.5c.177-.31.177-.69 0-1l-5.741-10a.99.99 0 0 0-.862-.5H35.258l.04-.024-3.871-6.572a5.9 5.9 0 0 0 2.071-4.495c0-3.258-2.636-5.909-5.877-5.909s-5.876 2.651-5.876 5.909 2.636 5.909 5.876 5.909c.739 0 1.443-.143 2.094-.394l3.615 6.133-5.71 9.943c-.177.31-.177.69 0 1l5.743 10c.178.31.506.5.861.5h11.482q.125-.002.241-.032l3.905 6.628a5.9 5.9 0 0 0-2.071 4.495c0 3.258 2.635 5.909 5.876 5.909 3.24 0 5.876-2.651 5.876-5.909s-2.635-5.909-5.876-5.909m5.927-24.078c-2.143 0-3.886-1.753-3.886-3.909s1.743-3.909 3.886-3.909 3.888 1.753 3.888 3.909-1.745 3.909-3.888 3.909m7.283 7.396-3.775-6.575a5.91 5.91 0 0 0 2.368-4.73c0-3.258-2.635-5.909-5.876-5.909-.824 0-1.61.173-2.323.484l-3.077-5.361a1 1 0 0 0-.861-.5H40.995v2h11.754l2.847 4.96a5.9 5.9 0 0 0-1.887 4.326c0 3.258 2.636 5.909 5.875 5.909.604 0 1.188-.093 1.737-.264L64.858 41l-4.966 8.648 1.722 1 5.253-9.148c.177-.31.177-.69 0-1M21.229 56.247c-2.144 0-3.888-1.754-3.888-3.909 0-2.156 1.744-3.909 3.888-3.909 2.143 0 3.887 1.753 3.887 3.909s-1.744 3.909-3.887 3.909m3.248 1.011a5.92 5.92 0 0 0 2.628-4.92c0-3.258-2.636-5.909-5.876-5.909-.939 0-1.823.228-2.61.623L15.143 41l5.759-10.029-1.723-1L13.133 40.5c-.177.31-.177.69 0 1l3.872 6.74a5.9 5.9 0 0 0-1.653 4.098c0 3.258 2.636 5.909 5.877 5.909.488 0 .96-.067 1.415-.181l3.172 5.525c.178.309.506.5.861.5h12.33v-2H27.25z\" /></g></svg>;\nexport default SvgPipes;","import * as React from \"react\";\nconst SvgQldbSession = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Quantum-Ledger-Database_64\"}</title><defs><linearGradient id=\"linearGradient-qld\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Quantum-Ledger-Database_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-qld)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Quantum-Ledger-Database_Icon_64_Squid\" fill=\"#fff\" d=\"M66 47.283H56V43.25h-5v4.034H41V43.25h-5v4.034H26V37.197h9.564c.167.148.333.308.436.429v4.614h5v-4.907l.002-.136H51v5.043h5v-5.043h10zm.121-12.103H55.879A1.89 1.89 0 0 0 54 37.075v3.148h-1V37.58c.085-.22.115-.461.086-.703-.094-.769-.761-1.336-.964-1.49l-.268-.207H40.287c-.48 0-1.287.28-1.287 2.153v2.89h-1v-3.108l-.089-.198c-.296-.66-1.135-1.338-1.385-1.53l-.267-.207h-10.38A1.89 1.89 0 0 0 24 37.075v10.33a1.89 1.89 0 0 0 1.879 1.895h10.242A1.89 1.89 0 0 0 38 47.405v-2.139h1v2.383c0 1.306.842 1.651 1.287 1.651h11.23c.718 0 1.483-.579 1.483-1.65v-2.384h1.001l.001 2.316c-.055.822.606 1.506 1.646 1.701l10.473.017A1.89 1.89 0 0 0 68 47.405v-10.33a1.89 1.89 0 0 0-1.879-1.895M63 40.222l.002 4.035-4.002.001-.001-4.035zm-4.001 6.053h4.002A2.01 2.01 0 0 0 65 44.258v-4.036a2.01 2.01 0 0 0-1.999-2.016h-4.002A2.01 2.01 0 0 0 57 40.222v4.036a2.01 2.01 0 0 0 1.999 2.017M48 44.24q-.001.015-.016.016L44 44.241l.016-4.018L48 40.24zm-.016-6.035h-3.968A2.027 2.027 0 0 0 42 40.239v4.002c0 1.122.904 2.034 2.016 2.034h3.968A2.027 2.027 0 0 0 50 44.24V40.24a2.027 2.027 0 0 0-2.016-2.033M29 44.258l-.001-4.035H33l.002 4.034zm4.001-6.052h-4.002A2.01 2.01 0 0 0 27 40.222v4.036a2.01 2.01 0 0 0 1.999 2.017h4.002A2.01 2.01 0 0 0 35 44.258v-4.036a2.01 2.01 0 0 0-1.999-2.016M30 16.017c9.429 0 16 2.923 16 5.547 0 2.625-6.571 5.548-16 5.548s-16-2.923-16-5.548 6.571-5.547 16-5.547M46 59.31c0 2.682-6.571 5.673-16 5.673s-16-2.99-16-5.673v-8.623c3.184 2.703 9.189 4.55 15.545 4.55 8.035 0 12.237-1.905 12.412-1.986l-.836-1.834c-.039.019-3.975 1.803-11.576 1.803-7.775 0-14.027-2.852-15.545-5.559v-9.87c1.916 1.731 4.818 3.095 8.096 3.711l.367-1.983c-4.514-.848-7.526-3.104-8.463-4.876v-9.486c3.19 2.595 9.728 3.972 16 3.972s12.81-1.377 16-3.972v9.015h2V21.06h-.06C47.321 16.474 38.418 14 30 14s-17.321 2.474-17.94 7.06H12v38.25C12 63.694 19.738 67 30 67s18-3.306 18-7.69v-7.992h-2z\" /></g></svg>;\nexport default SvgQldbSession;","import * as React from \"react\";\nconst SvgQldb = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Quantum-Ledger-Database_64\"}</title><defs><linearGradient id=\"linearGradient-qld\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Quantum-Ledger-Database_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-qld)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Quantum-Ledger-Database_Icon_64_Squid\" fill=\"#fff\" d=\"M66 47.283H56V43.25h-5v4.034H41V43.25h-5v4.034H26V37.197h9.564c.167.148.333.308.436.429v4.614h5v-4.907l.002-.136H51v5.043h5v-5.043h10zm.121-12.103H55.879A1.89 1.89 0 0 0 54 37.075v3.148h-1V37.58c.085-.22.115-.461.086-.703-.094-.769-.761-1.336-.964-1.49l-.268-.207H40.287c-.48 0-1.287.28-1.287 2.153v2.89h-1v-3.108l-.089-.198c-.296-.66-1.135-1.338-1.385-1.53l-.267-.207h-10.38A1.89 1.89 0 0 0 24 37.075v10.33a1.89 1.89 0 0 0 1.879 1.895h10.242A1.89 1.89 0 0 0 38 47.405v-2.139h1v2.383c0 1.306.842 1.651 1.287 1.651h11.23c.718 0 1.483-.579 1.483-1.65v-2.384h1.001l.001 2.316c-.055.822.606 1.506 1.646 1.701l10.473.017A1.89 1.89 0 0 0 68 47.405v-10.33a1.89 1.89 0 0 0-1.879-1.895M63 40.222l.002 4.035-4.002.001-.001-4.035zm-4.001 6.053h4.002A2.01 2.01 0 0 0 65 44.258v-4.036a2.01 2.01 0 0 0-1.999-2.016h-4.002A2.01 2.01 0 0 0 57 40.222v4.036a2.01 2.01 0 0 0 1.999 2.017M48 44.24q-.001.015-.016.016L44 44.241l.016-4.018L48 40.24zm-.016-6.035h-3.968A2.027 2.027 0 0 0 42 40.239v4.002c0 1.122.904 2.034 2.016 2.034h3.968A2.027 2.027 0 0 0 50 44.24V40.24a2.027 2.027 0 0 0-2.016-2.033M29 44.258l-.001-4.035H33l.002 4.034zm4.001-6.052h-4.002A2.01 2.01 0 0 0 27 40.222v4.036a2.01 2.01 0 0 0 1.999 2.017h4.002A2.01 2.01 0 0 0 35 44.258v-4.036a2.01 2.01 0 0 0-1.999-2.016M30 16.017c9.429 0 16 2.923 16 5.547 0 2.625-6.571 5.548-16 5.548s-16-2.923-16-5.548 6.571-5.547 16-5.547M46 59.31c0 2.682-6.571 5.673-16 5.673s-16-2.99-16-5.673v-8.623c3.184 2.703 9.189 4.55 15.545 4.55 8.035 0 12.237-1.905 12.412-1.986l-.836-1.834c-.039.019-3.975 1.803-11.576 1.803-7.775 0-14.027-2.852-15.545-5.559v-9.87c1.916 1.731 4.818 3.095 8.096 3.711l.367-1.983c-4.514-.848-7.526-3.104-8.463-4.876v-9.486c3.19 2.595 9.728 3.972 16 3.972s12.81-1.377 16-3.972v9.015h2V21.06h-.06C47.321 16.474 38.418 14 30 14s-17.321 2.474-17.94 7.06H12v38.25C12 63.694 19.738 67 30 67s18-3.306 18-7.69v-7.992h-2z\" /></g></svg>;\nexport default SvgQldb;","import * as React from \"react\";\nconst SvgRam = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Resource-Access-Manager_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-Resource-Access-Manager_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"#dd344c\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Resource-Access-Manager_Icon_64_Squid\" fill=\"#fff\" d=\"M33 60a1.001 1.001 0 0 0-2 0 1.001 1.001 0 0 0 2 0m2 0c0 1.654-1.346 3-3 3s-3-1.346-3-3 1.346-3 3-3 3 1.346 3 3m19.431.845L52.586 59H38.71a1 1 0 0 1-.958-.715C37.001 55.762 34.636 54 32 54c-3.309 0-6 2.691-6 6s2.691 6 6 6a6.03 6.03 0 0 0 5.423-3.429 1 1 0 0 1 .903-.571H41c.266 0 .52.105.707.293L43 63.586l1.293-1.293A1 1 0 0 1 45 62h2c.266 0 .52.105.707.293L49 63.586l1.293-1.293A1 1 0 0 1 51 62h1.697zm2.276-.552a1 1 0 0 1-.152 1.539l-3 2A1 1 0 0 1 53 64h-1.586l-1.707 1.707a1 1 0 0 1-1.414 0L46.586 64h-1.172l-1.707 1.707a1 1 0 0 1-1.414 0L40.586 64h-1.657A8.05 8.05 0 0 1 32 68c-4.411 0-8-3.589-8-8s3.589-8 8-8c3.26 0 6.208 2.022 7.418 5H53c.266 0 .52.105.707.293zM47.414 25 53 30.586 58.586 25 53 19.414zm4.879 7.707-7-7a1 1 0 0 1 0-1.414l7-7a1 1 0 0 1 1.414 0l7 7a1 1 0 0 1 0 1.414l-7 7a.997.997 0 0 1-1.414 0M34.09 29l-6.087-8.304L21.964 29zm1.973 2H20a1 1 0 0 1-.809-1.588l8-11a1 1 0 0 1 .807-.412c.346-.016.62.151.809.409l8.062 11A1 1 0 0 1 36.063 31M22 42.5c0 3.033 2.468 5.5 5.5 5.5s5.5-2.467 5.5-5.5-2.468-5.5-5.5-5.5a5.506 5.506 0 0 0-5.5 5.5m-2 0c0-4.136 3.364-7.5 7.5-7.5s7.5 3.364 7.5 7.5-3.364 7.5-7.5 7.5-7.5-3.364-7.5-7.5M48 47h9v-9h-9zm11 1a1 1 0 0 1-1 1H47a1 1 0 0 1-1-1V37a1 1 0 0 1 1-1h11a1 1 0 0 1 1 1zm9-35v50a1 1 0 0 1-1 1h-8v-2h7V14H14v48h7v2h-8a1 1 0 0 1-1-1V13a1 1 0 0 1 1-1h54a1 1 0 0 1 1 1\" /></g></svg>;\nexport default SvgRam;","import * as React from \"react\";\nconst SvgRdsData = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-RDS_64\"}</title><defs><linearGradient id=\"linearGradient-rds\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-RDS_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-rds)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-RDS_Icon_64_Squid\" fill=\"#fff\" d=\"m15.414 14 9.293 9.293-1.414 1.414L14 15.414V23h-2V13a1 1 0 0 1 1-1h10v2zM68 13v10h-2v-7.586l-9.293 9.293-1.414-1.414L64.586 14H57v-2h10a1 1 0 0 1 1 1m-2 44h2v10a1 1 0 0 1-1 1H57v-2h7.586l-9.293-9.293 1.414-1.414L66 64.586zm-.5-17.787c0-3.319-3.832-6.598-10.25-8.771l.641-1.894C63.268 31.045 67.5 34.932 67.5 39.213c0 4.282-4.232 8.17-11.61 10.666l-.641-1.895c6.419-2.172 10.251-5.45 10.251-8.771m-50.944 0c0 3.18 3.587 6.372 9.596 8.54l-.679 1.881c-6.938-2.503-10.917-6.301-10.917-10.421s3.979-7.917 10.917-10.421l.679 1.881c-6.009 2.169-9.596 5.361-9.596 8.54m10.151 17.494L15.414 66H23v2H13a1 1 0 0 1-1-1V57h2v7.586l9.293-9.293zM40 31.286c-7.146 0-11-1.846-11-2.6 0-.755 3.854-2.6 11-2.6 7.145 0 11 1.845 11 2.6 0 .754-3.855 2.6-11 2.6m.029 7.745C33.187 39.031 29 37.162 29 36.145v-4.861c2.463 1.359 6.832 2.002 11 2.002s8.537-.643 11-2.002v4.861c0 1.018-4.165 2.886-10.971 2.886m0 7.636C33.187 46.667 29 44.798 29 43.781v-4.919c2.431 1.429 6.742 2.169 11.029 2.169 4.263 0 8.549-.739 10.971-2.164v4.914c0 1.018-4.165 2.886-10.971 2.886M40 53.518c-7.117 0-11-1.913-11-2.896v-4.124c2.431 1.429 6.742 2.169 11.029 2.169 4.263 0 8.549-.738 10.971-2.164v4.119c0 .983-3.883 2.896-11 2.896m0-29.432c-6.261 0-13 1.439-13 4.6v21.936c0 3.214 6.54 4.896 13 4.896s13-1.682 13-4.896V28.686c0-3.161-6.739-4.6-13-4.6\" /></g></svg>;\nexport default SvgRdsData;","import * as React from \"react\";\nconst SvgRds = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-RDS_64\"}</title><defs><linearGradient id=\"linearGradient-rds\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-RDS_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-rds)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-RDS_Icon_64_Squid\" fill=\"#fff\" d=\"m15.414 14 9.293 9.293-1.414 1.414L14 15.414V23h-2V13a1 1 0 0 1 1-1h10v2zM68 13v10h-2v-7.586l-9.293 9.293-1.414-1.414L64.586 14H57v-2h10a1 1 0 0 1 1 1m-2 44h2v10a1 1 0 0 1-1 1H57v-2h7.586l-9.293-9.293 1.414-1.414L66 64.586zm-.5-17.787c0-3.319-3.832-6.598-10.25-8.771l.641-1.894C63.268 31.045 67.5 34.932 67.5 39.213c0 4.282-4.232 8.17-11.61 10.666l-.641-1.895c6.419-2.172 10.251-5.45 10.251-8.771m-50.944 0c0 3.18 3.587 6.372 9.596 8.54l-.679 1.881c-6.938-2.503-10.917-6.301-10.917-10.421s3.979-7.917 10.917-10.421l.679 1.881c-6.009 2.169-9.596 5.361-9.596 8.54m10.151 17.494L15.414 66H23v2H13a1 1 0 0 1-1-1V57h2v7.586l9.293-9.293zM40 31.286c-7.146 0-11-1.846-11-2.6 0-.755 3.854-2.6 11-2.6 7.145 0 11 1.845 11 2.6 0 .754-3.855 2.6-11 2.6m.029 7.745C33.187 39.031 29 37.162 29 36.145v-4.861c2.463 1.359 6.832 2.002 11 2.002s8.537-.643 11-2.002v4.861c0 1.018-4.165 2.886-10.971 2.886m0 7.636C33.187 46.667 29 44.798 29 43.781v-4.919c2.431 1.429 6.742 2.169 11.029 2.169 4.263 0 8.549-.739 10.971-2.164v4.914c0 1.018-4.165 2.886-10.971 2.886M40 53.518c-7.117 0-11-1.913-11-2.896v-4.124c2.431 1.429 6.742 2.169 11.029 2.169 4.263 0 8.549-.738 10.971-2.164v4.119c0 .983-3.883 2.896-11 2.896m0-29.432c-6.261 0-13 1.439-13 4.6v21.936c0 3.214 6.54 4.896 13 4.896s13-1.682 13-4.896V28.686c0-3.161-6.739-4.6-13-4.6\" /></g></svg>;\nexport default SvgRds;","import * as React from \"react\";\nconst SvgRedshiftData = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Redshiftct_64\"}</title><defs><linearGradient id=\"linearGradient-red\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Redshiftct_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-red)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Redshift_Icon_64_Squid\" fill=\"#fff\" d=\"M50.825 35.17a1.92 1.92 0 0 1-1.92-1.916 1.921 1.921 0 0 1 3.84 0 1.92 1.92 0 0 1-1.92 1.916m-4.866 11.655a1.92 1.92 0 0 1-1.92-1.917 1.92 1.92 0 0 1 3.841 0 1.92 1.92 0 0 1-1.92 1.917m-11.678-1.943a1.92 1.92 0 0 1-1.919-1.916 1.92 1.92 0 0 1 3.84 0 1.92 1.92 0 0 1-1.92 1.916m-4.865 10.683a1.92 1.92 0 0 1-1.92-1.916 1.92 1.92 0 0 1 3.84 0 1.92 1.92 0 0 1-1.92 1.916m21.407-26.222a3.92 3.92 0 0 0-3.919 3.911c0 1.322.665 2.488 1.675 3.197l-1.828 4.628a4 4 0 0 0-.794-.081c-1.718 0-3.165 1.117-3.692 2.657l-4.09-.928a3.91 3.91 0 0 0-3.895-3.672 3.92 3.92 0 0 0-3.916 3.911c0 1.008.393 1.92 1.024 2.613l-1.786 4.179c-.063-.004-.122-.02-.186-.02A3.92 3.92 0 0 0 25.5 53.65a3.92 3.92 0 0 0 7.836 0 3.9 3.9 0 0 0-1.817-3.29l1.576-3.686c.377.12.77.203 1.187.203a3.91 3.91 0 0 0 3.503-2.193l4.334.983a3.919 3.919 0 0 0 7.76-.758 3.89 3.89 0 0 0-1.338-2.919l1.92-4.861c.122.012.24.037.364.037a3.92 3.92 0 0 0 3.918-3.91 3.92 3.92 0 0 0-3.918-3.912M40 66.006c-9.731 0-17.002-2.921-17.002-5.533V23.152c3.31 2.69 10.317 4.111 17.023 4.111 6.676 0 13.653-1.41 16.981-4.077v37.287c0 2.612-7.272 5.533-17.002 5.533m.021-52.012c10.007 0 16.981 2.971 16.981 5.638s-6.974 5.637-16.981 5.637S23.04 22.3 23.04 19.632s6.973-5.638 16.981-5.638M59 19.632C59 14.675 49.222 12 40.021 12s-18.979 2.675-18.979 7.632l.002.025H21v40.816C21 65.362 30.79 68 40 68s19-2.638 19-7.527V19.657h-.002z\" /></g></svg>;\nexport default SvgRedshiftData;","import * as React from \"react\";\nconst SvgRedshift = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Redshiftct_64\"}</title><defs><linearGradient id=\"linearGradient-red\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Redshiftct_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Analytics\" fill=\"url(#linearGradient-red)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Redshift_Icon_64_Squid\" fill=\"#fff\" d=\"M50.825 35.17a1.92 1.92 0 0 1-1.92-1.916 1.921 1.921 0 0 1 3.84 0 1.92 1.92 0 0 1-1.92 1.916m-4.866 11.655a1.92 1.92 0 0 1-1.92-1.917 1.92 1.92 0 0 1 3.841 0 1.92 1.92 0 0 1-1.92 1.917m-11.678-1.943a1.92 1.92 0 0 1-1.919-1.916 1.92 1.92 0 0 1 3.84 0 1.92 1.92 0 0 1-1.92 1.916m-4.865 10.683a1.92 1.92 0 0 1-1.92-1.916 1.92 1.92 0 0 1 3.84 0 1.92 1.92 0 0 1-1.92 1.916m21.407-26.222a3.92 3.92 0 0 0-3.919 3.911c0 1.322.665 2.488 1.675 3.197l-1.828 4.628a4 4 0 0 0-.794-.081c-1.718 0-3.165 1.117-3.692 2.657l-4.09-.928a3.91 3.91 0 0 0-3.895-3.672 3.92 3.92 0 0 0-3.916 3.911c0 1.008.393 1.92 1.024 2.613l-1.786 4.179c-.063-.004-.122-.02-.186-.02A3.92 3.92 0 0 0 25.5 53.65a3.92 3.92 0 0 0 7.836 0 3.9 3.9 0 0 0-1.817-3.29l1.576-3.686c.377.12.77.203 1.187.203a3.91 3.91 0 0 0 3.503-2.193l4.334.983a3.919 3.919 0 0 0 7.76-.758 3.89 3.89 0 0 0-1.338-2.919l1.92-4.861c.122.012.24.037.364.037a3.92 3.92 0 0 0 3.918-3.91 3.92 3.92 0 0 0-3.918-3.912M40 66.006c-9.731 0-17.002-2.921-17.002-5.533V23.152c3.31 2.69 10.317 4.111 17.023 4.111 6.676 0 13.653-1.41 16.981-4.077v37.287c0 2.612-7.272 5.533-17.002 5.533m.021-52.012c10.007 0 16.981 2.971 16.981 5.638s-6.974 5.637-16.981 5.637S23.04 22.3 23.04 19.632s6.973-5.638 16.981-5.638M59 19.632C59 14.675 49.222 12 40.021 12s-18.979 2.675-18.979 7.632l.002.025H21v40.816C21 65.362 30.79 68 40 68s19-2.638 19-7.527V19.657h-.002z\" /></g></svg>;\nexport default SvgRedshift;","import * as React from \"react\";\nconst SvgResourceGroups = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Service-Catalog_16\"}</title><defs><linearGradient id=\"linearGradient-rg\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Service-Catalog_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Management-Governance\" fill=\"url(#linearGradient-rg)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Service-Catalog_Icon_16_Squid\" fill=\"#fff\" d=\"M6.5 8a.5.5 0 1 1-.002 1.002A.5.5 0 0 1 6.5 8M6 11.5c0-.52.076-1.03.197-1.531q.147.03.303.031C7.327 10 8 9.327 8 8.5S7.327 7 6.5 7 5 7.673 5 8.5c0 .336.115.644.303.894A7.5 7.5 0 0 0 5 11.5a7.53 7.53 0 0 0 4.913 7.042l.346-.938A6.53 6.53 0 0 1 6 11.5m13-3a.5.5 0 1 1-1.002-.002A.5.5 0 0 1 19 8.5M12.5 5c1.969 0 3.773.868 5.014 2.379A1.49 1.49 0 0 0 17 8.5c0 .827.673 1.5 1.5 1.5S20 9.327 20 8.5 19.327 7 18.5 7h-.002A7.54 7.54 0 0 0 12.5 4c-1.869 0-3.66.692-5.043 1.949l.672.74A6.49 6.49 0 0 1 12.5 5m0 14a.5.5 0 1 1 .002-1.002A.5.5 0 0 1 12.5 19m6.465-8.187q.035.339.035.687a6.46 6.46 0 0 1-5.158 6.343A1.5 1.5 0 0 0 12.5 17c-.827 0-1.5.673-1.5 1.5s.673 1.5 1.5 1.5a1.5 1.5 0 0 0 1.454-1.147A7.47 7.47 0 0 0 20 11.5q0-.4-.041-.791zM10.5 14.941l-1.5-.75v-1.882l1.258-.629c.008.005.011.013.018.017l1.724.862v1.632zm2-6.632 1.5.75v1.632l-1.5.75-1.5-.75V9.059zm3.5 5.882-1.5.75-1.5-.75v-1.632l1.724-.862c.007-.004.01-.012.018-.017l1.258.629zm-1.724 1.756a.5.5 0 0 0 .448 0l2-1A.5.5 0 0 0 17 14.5V12a.5.5 0 0 0-.276-.447L15 10.691V8.75a.5.5 0 0 0-.276-.447l-2-1a.5.5 0 0 0-.448 0l-2 1A.5.5 0 0 0 10 8.75v1.941l-1.724.862A.5.5 0 0 0 8 12v2.5a.5.5 0 0 0 .276.447l2 1a.5.5 0 0 0 .448 0l1.776-.888z\" /></g></svg>;\nexport default SvgResourceGroups;","import * as React from \"react\";\nconst SvgResourcegroupstaggingapi = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Service-Catalog_16\"}</title><defs><linearGradient id=\"linearGradient-rg\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Service-Catalog_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Management-Governance\" fill=\"url(#linearGradient-rg)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Service-Catalog_Icon_16_Squid\" fill=\"#fff\" d=\"M6.5 8a.5.5 0 1 1-.002 1.002A.5.5 0 0 1 6.5 8M6 11.5c0-.52.076-1.03.197-1.531q.147.03.303.031C7.327 10 8 9.327 8 8.5S7.327 7 6.5 7 5 7.673 5 8.5c0 .336.115.644.303.894A7.5 7.5 0 0 0 5 11.5a7.53 7.53 0 0 0 4.913 7.042l.346-.938A6.53 6.53 0 0 1 6 11.5m13-3a.5.5 0 1 1-1.002-.002A.5.5 0 0 1 19 8.5M12.5 5c1.969 0 3.773.868 5.014 2.379A1.49 1.49 0 0 0 17 8.5c0 .827.673 1.5 1.5 1.5S20 9.327 20 8.5 19.327 7 18.5 7h-.002A7.54 7.54 0 0 0 12.5 4c-1.869 0-3.66.692-5.043 1.949l.672.74A6.49 6.49 0 0 1 12.5 5m0 14a.5.5 0 1 1 .002-1.002A.5.5 0 0 1 12.5 19m6.465-8.187q.035.339.035.687a6.46 6.46 0 0 1-5.158 6.343A1.5 1.5 0 0 0 12.5 17c-.827 0-1.5.673-1.5 1.5s.673 1.5 1.5 1.5a1.5 1.5 0 0 0 1.454-1.147A7.47 7.47 0 0 0 20 11.5q0-.4-.041-.791zM10.5 14.941l-1.5-.75v-1.882l1.258-.629c.008.005.011.013.018.017l1.724.862v1.632zm2-6.632 1.5.75v1.632l-1.5.75-1.5-.75V9.059zm3.5 5.882-1.5.75-1.5-.75v-1.632l1.724-.862c.007-.004.01-.012.018-.017l1.258.629zm-1.724 1.756a.5.5 0 0 0 .448 0l2-1A.5.5 0 0 0 17 14.5V12a.5.5 0 0 0-.276-.447L15 10.691V8.75a.5.5 0 0 0-.276-.447l-2-1a.5.5 0 0 0-.448 0l-2 1A.5.5 0 0 0 10 8.75v1.941l-1.724.862A.5.5 0 0 0 8 12v2.5a.5.5 0 0 0 .276.447l2 1a.5.5 0 0 0 .448 0l1.776-.888z\" /></g></svg>;\nexport default SvgResourcegroupstaggingapi;","import * as React from \"react\";\nconst SvgRoute53 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_Amazon-Route-53_16\"}</title><defs><linearGradient id=\"linearGradient-r53\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_Amazon-Route-53_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Networking-Content-Delivery\" fill=\"url(#linearGradient-r53)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"Amazon-Route-53-Icon_16_Squid\" fill=\"#fff\" d=\"M14.243 12.133q.304.282.305.75-.001.507-.368.813-.364.3-.964.3c-.311 0-.623-.067-.927-.2l-.046-.019v-.54l.099.032c.665.219 1.15.223 1.391.023q.171-.14.17-.41c0-.219-.068-.509-.662-.509q-.231 0-.45.024l-.084.01v-.434l.917-1h-1.332v-.548h2.116v.488l-.893.944q.451.022.728.276m-2.804-.083c.211.196.318.47.318.813 0 .337-.124.614-.369.823-.24.206-.562.31-.952.31-.337 0-.658-.067-.954-.2l-.044-.02v-.54l.1.033c.668.216 1.165.227 1.407.021q.17-.143.17-.422 0-.309-.158-.44c-.191-.16-.595-.165-1.29-.09l-.084.01v-.403l.098-1.52h1.908v.548h-1.361l-.053.814q.217-.034.396-.034c.367 0 .659.1.868.297m3.555 3.371c-1.199.216-2.255.687-2.995 1.094-.738-.407-1.794-.878-2.994-1.094-.191-.034-1.872-.36-1.872-1.18 0-.382.122-.63.45-1.193.375-.647.89-1.532.89-2.777a4.94 4.94 0 0 0-.523-2.214c1.363.563 2.863.447 4.05-.25 1.186.697 2.685.813 4.05.25a4.94 4.94 0 0 0-.522 2.214c0 1.245.514 2.13.888 2.777.328.563.45.81.45 1.194 0 .82-1.68 1.145-1.872 1.179m1.541-5.15c0-.756.214-1.482.635-2.155a.5.5 0 0 0-.038-.587l-.396-.489a.505.505 0 0 0-.636-.124c-1.297.718-2.725.632-3.812-.122a.505.505 0 0 0-.576 0c-1.087.754-2.517.839-3.812.122a.506.506 0 0 0-.636.124l-.396.489a.5.5 0 0 0-.038.587c.421.673.635 1.399.635 2.155 0 .974-.4 1.664-.754 2.27-.314.543-.586 1.01-.586 1.7 0 1.057 1.01 1.868 2.702 2.172 1.2.216 2.25.726 2.92 1.116a.51.51 0 0 0 .505 0c.67-.39 1.72-.9 2.92-1.116 1.692-.304 2.702-1.115 2.702-2.171 0-.69-.271-1.158-.586-1.7-.353-.607-.753-1.297-.753-2.271m-.967 7.102c-1.61.29-2.98 1.11-3.569 1.506-.589-.396-1.958-1.216-3.567-1.506-.803-.144-3.425-.783-3.425-2.938 0-.909.35-1.51.718-2.147.366-.63.745-1.283.745-2.19 0-1.267-.65-2.202-1.08-2.68.412-.5 1.162-1.418 1.642-2.027.757.65 1.62 1.001 2.478 1.001.96 0 1.764-.36 2.49-1.122.726.762 1.53 1.122 2.49 1.122.858 0 1.72-.352 2.478-1 .48.608 1.23 1.525 1.642 2.026-.43.478-1.08 1.413-1.08 2.68 0 .907.379 1.56.745 2.19.368.637.718 1.238.718 2.147 0 2.155-2.622 2.794-3.425 2.938m3.577-5.59c-.325-.563-.608-1.049-.608-1.686 0-1.355 1.061-2.244 1.07-2.252a.5.5 0 0 0 .072-.712c-.018-.022-1.834-2.224-2.246-2.79a.503.503 0 0 0-.776-.048c-.657.702-1.426 1.09-2.167 1.09-.823 0-1.448-.359-2.09-1.198-.19-.25-.611-.25-.8 0-.642.84-1.267 1.197-2.09 1.197-.742 0-1.51-.387-2.168-1.09a.501.501 0 0 0-.775.048c-.412.567-2.228 2.769-2.247 2.79a.502.502 0 0 0 .073.713c.01.009 1.07.881 1.07 2.252 0 .637-.283 1.123-.608 1.685-.402.69-.855 1.473-.855 2.653 0 1.982 1.59 3.451 4.255 3.931 1.859.334 3.423 1.518 3.438 1.53a.5.5 0 0 0 .614 0c.016-.012 1.57-1.194 3.44-1.53 2.663-.48 4.253-1.95 4.253-3.93 0-1.181-.453-1.963-.855-2.654\" /></g></svg>;\nexport default SvgRoute53;","import * as React from \"react\";\nconst SvgRoute53Resolver = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_Amazon-Route-53_16\"}</title><defs><linearGradient id=\"linearGradient-r53\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#4d27a8\" /><stop offset=\"100%\" stopColor=\"#a166ff\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_Amazon-Route-53_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Networking-Content-Delivery\" fill=\"url(#linearGradient-r53)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"Amazon-Route-53-Icon_16_Squid\" fill=\"#fff\" d=\"M14.243 12.133q.304.282.305.75-.001.507-.368.813-.364.3-.964.3c-.311 0-.623-.067-.927-.2l-.046-.019v-.54l.099.032c.665.219 1.15.223 1.391.023q.171-.14.17-.41c0-.219-.068-.509-.662-.509q-.231 0-.45.024l-.084.01v-.434l.917-1h-1.332v-.548h2.116v.488l-.893.944q.451.022.728.276m-2.804-.083c.211.196.318.47.318.813 0 .337-.124.614-.369.823-.24.206-.562.31-.952.31-.337 0-.658-.067-.954-.2l-.044-.02v-.54l.1.033c.668.216 1.165.227 1.407.021q.17-.143.17-.422 0-.309-.158-.44c-.191-.16-.595-.165-1.29-.09l-.084.01v-.403l.098-1.52h1.908v.548h-1.361l-.053.814q.217-.034.396-.034c.367 0 .659.1.868.297m3.555 3.371c-1.199.216-2.255.687-2.995 1.094-.738-.407-1.794-.878-2.994-1.094-.191-.034-1.872-.36-1.872-1.18 0-.382.122-.63.45-1.193.375-.647.89-1.532.89-2.777a4.94 4.94 0 0 0-.523-2.214c1.363.563 2.863.447 4.05-.25 1.186.697 2.685.813 4.05.25a4.94 4.94 0 0 0-.522 2.214c0 1.245.514 2.13.888 2.777.328.563.45.81.45 1.194 0 .82-1.68 1.145-1.872 1.179m1.541-5.15c0-.756.214-1.482.635-2.155a.5.5 0 0 0-.038-.587l-.396-.489a.505.505 0 0 0-.636-.124c-1.297.718-2.725.632-3.812-.122a.505.505 0 0 0-.576 0c-1.087.754-2.517.839-3.812.122a.506.506 0 0 0-.636.124l-.396.489a.5.5 0 0 0-.038.587c.421.673.635 1.399.635 2.155 0 .974-.4 1.664-.754 2.27-.314.543-.586 1.01-.586 1.7 0 1.057 1.01 1.868 2.702 2.172 1.2.216 2.25.726 2.92 1.116a.51.51 0 0 0 .505 0c.67-.39 1.72-.9 2.92-1.116 1.692-.304 2.702-1.115 2.702-2.171 0-.69-.271-1.158-.586-1.7-.353-.607-.753-1.297-.753-2.271m-.967 7.102c-1.61.29-2.98 1.11-3.569 1.506-.589-.396-1.958-1.216-3.567-1.506-.803-.144-3.425-.783-3.425-2.938 0-.909.35-1.51.718-2.147.366-.63.745-1.283.745-2.19 0-1.267-.65-2.202-1.08-2.68.412-.5 1.162-1.418 1.642-2.027.757.65 1.62 1.001 2.478 1.001.96 0 1.764-.36 2.49-1.122.726.762 1.53 1.122 2.49 1.122.858 0 1.72-.352 2.478-1 .48.608 1.23 1.525 1.642 2.026-.43.478-1.08 1.413-1.08 2.68 0 .907.379 1.56.745 2.19.368.637.718 1.238.718 2.147 0 2.155-2.622 2.794-3.425 2.938m3.577-5.59c-.325-.563-.608-1.049-.608-1.686 0-1.355 1.061-2.244 1.07-2.252a.5.5 0 0 0 .072-.712c-.018-.022-1.834-2.224-2.246-2.79a.503.503 0 0 0-.776-.048c-.657.702-1.426 1.09-2.167 1.09-.823 0-1.448-.359-2.09-1.198-.19-.25-.611-.25-.8 0-.642.84-1.267 1.197-2.09 1.197-.742 0-1.51-.387-2.168-1.09a.501.501 0 0 0-.775.048c-.412.567-2.228 2.769-2.247 2.79a.502.502 0 0 0 .073.713c.01.009 1.07.881 1.07 2.252 0 .637-.283 1.123-.608 1.685-.402.69-.855 1.473-.855 2.653 0 1.982 1.59 3.451 4.255 3.931 1.859.334 3.423 1.518 3.438 1.53a.5.5 0 0 0 .614 0c.016-.012 1.57-1.194 3.44-1.53 2.663-.48 4.253-1.95 4.253-3.93 0-1.181-.453-1.963-.855-2.654\" /></g></svg>;\nexport default SvgRoute53Resolver;","import * as React from \"react\";\nconst SvgS3 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Simple-Storage-Service_64\"}</title><defs><linearGradient id=\"linearGradient-s3\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Simple-Storage-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-s3)\" d=\"M0 0h80v80H0z\" /><g id=\"Icon-Service/64/Amazon-Simple-Storage-Service_64\" fill=\"#fff\" transform=\"translate(8 8)\"><path id=\"Amazon-Simple-Storage-Service-Icon_64_Squid\" d=\"m52.836 34.893.384-2.704c3.54 2.12 3.587 2.997 3.586 3.02-.006.006-.61.51-3.97-.316m-1.943-.54C44.773 32.5 36.25 28.59 32.8 26.96q.002-.02.004-.041a2.406 2.406 0 0 0-2.404-2.403 2.406 2.406 0 0 0-2.402 2.403 2.406 2.406 0 0 0 2.402 2.403c.582 0 1.11-.217 1.527-.562 4.058 1.92 12.515 5.774 18.68 7.594L48.17 53.56a1 1 0 0 0-.01.14c0 1.516-6.707 4.299-17.666 4.299-11.075 0-17.853-2.783-17.853-4.298q0-.069-.01-.136L7.539 16.359c4.409 3.035 13.892 4.64 22.962 4.64 9.056 0 18.523-1.6 22.94-4.625zM7 12.478C7.072 11.162 14.634 6 30.5 6c15.864 0 23.427 5.16 23.5 6.478v.449C53.13 15.877 43.33 19 30.5 19 17.648 19 7.843 15.868 7 12.913zm49 .022C56 9.035 46.066 4 30.5 4S5 9.035 5 12.5l.094.754 5.548 40.524C10.775 58.31 22.86 60 30.494 60c9.472 0 19.535-2.178 19.665-6.22l2.396-16.896c1.333.319 2.43.482 3.31.482 1.184 0 1.984-.29 2.469-.867a1.95 1.95 0 0 0 .436-1.66c-.26-1.383-1.902-2.875-5.248-4.784l2.376-16.762z\" /></g></g></svg>;\nexport default SvgS3;","import * as React from \"react\";\nconst SvgS3Control = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Simple-Storage-Service_64\"}</title><defs><linearGradient id=\"linearGradient-s3\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#1b660f\" /><stop offset=\"100%\" stopColor=\"#6cae3e\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Simple-Storage-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-s3)\" d=\"M0 0h80v80H0z\" /><g id=\"Icon-Service/64/Amazon-Simple-Storage-Service_64\" fill=\"#fff\" transform=\"translate(8 8)\"><path id=\"Amazon-Simple-Storage-Service-Icon_64_Squid\" d=\"m52.836 34.893.384-2.704c3.54 2.12 3.587 2.997 3.586 3.02-.006.006-.61.51-3.97-.316m-1.943-.54C44.773 32.5 36.25 28.59 32.8 26.96q.002-.02.004-.041a2.406 2.406 0 0 0-2.404-2.403 2.406 2.406 0 0 0-2.402 2.403 2.406 2.406 0 0 0 2.402 2.403c.582 0 1.11-.217 1.527-.562 4.058 1.92 12.515 5.774 18.68 7.594L48.17 53.56a1 1 0 0 0-.01.14c0 1.516-6.707 4.299-17.666 4.299-11.075 0-17.853-2.783-17.853-4.298q0-.069-.01-.136L7.539 16.359c4.409 3.035 13.892 4.64 22.962 4.64 9.056 0 18.523-1.6 22.94-4.625zM7 12.478C7.072 11.162 14.634 6 30.5 6c15.864 0 23.427 5.16 23.5 6.478v.449C53.13 15.877 43.33 19 30.5 19 17.648 19 7.843 15.868 7 12.913zm49 .022C56 9.035 46.066 4 30.5 4S5 9.035 5 12.5l.094.754 5.548 40.524C10.775 58.31 22.86 60 30.494 60c9.472 0 19.535-2.178 19.665-6.22l2.396-16.896c1.333.319 2.43.482 3.31.482 1.184 0 1.984-.29 2.469-.867a1.95 1.95 0 0 0 .436-1.66c-.26-1.383-1.902-2.875-5.248-4.784l2.376-16.762z\" /></g></g></svg>;\nexport default SvgS3Control;","import * as React from \"react\";\nconst SvgSagemakerRuntime = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-SageMaker_64\"}</title><defs><linearGradient id=\"linearGradient-sgm\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#055f4e\" /><stop offset=\"100%\" stopColor=\"#56c0a7\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-SageMaker_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Machine-Learning\" fill=\"url(#linearGradient-sgm)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-SageMaker_Icon_64_Squid\" fill=\"#fff\" d=\"M54.034 26.034a1.017 1.017 0 1 1-1.017-1.016c.561 0 1.017.456 1.017 1.016M48.002 36a1.001 1.001 0 0 1 2 0 1.001 1.001 0 0 1-2 0m0 19a1.001 1.001 0 0 1 2 0 1.001 1.001 0 0 1-2 0m10-13a1.001 1.001 0 0 1-2 0 1.001 1.001 0 0 1 2 0M65 45.272l-5.037-2.89c.016-.126.039-.25.039-.382 0-1.654-1.346-3-3-3-1.655 0-3 1.346-3 3s1.345 3 3 3c.799 0 1.521-.319 2.059-.829l4.825 2.768-4.331 2.166c-.339.17-.553.516-.553.895v8.441l-12.019 7.396-5.98-3.417V56h5.183a3 3 0 0 0 2.816 2c1.654 0 3-1.346 3-3 0-1.655-1.346-3-3-3a2.995 2.995 0 0 0-2.816 2h-5.183V40c0-.35-.185-.677-.486-.858l-5.001-3-1.029 1.715 4.516 2.71v2.94l-6.001 4.616V44a1 1 0 0 0-.375-.78l-4.625-3.7v-4.985l5.554-3.702a1 1 0 0 0 .446-.832v-6h-2v5.465l-4.989 3.324-5.011-3.326v-7.89l5-2.915V27h2v-9.51l4.003-2.334 5.996 3.459L39.002 31c0 .359.192.69.504.867l6.536 3.735c-.018.131-.04.261-.04.397 0 1.654 1.345 3 3 3 1.654 0 3-1.346 3-3s-1.346-3-3-3c-.794 0-1.512.315-2.049.82l-5.951-3.4-.001-11.802 5.963-3.441 11.038 7.359V25h-2.151a3.02 3.02 0 0 0-2.834-1.983 3.02 3.02 0 0 0-3.015 3.016 3.02 3.02 0 0 0 3.015 3.016A3.02 3.02 0 0 0 55.875 27h2.127v3c0 .36.192.69.504.869L65 34.58zM33.02 65.837l-3.153-1.94 5.716-4.083-1.162-1.628-6.403 4.573-7.016-4.318v-7.875l4.514-2.709-1.029-1.715-4.529 2.718-4.956-2.478-.001-5.765 5.448-2.723-.894-1.789-4.554 2.276.001-3.8 5.961-3.406 5.039 3.344v4.961l-5.553 3.687 1.106 1.666 5.403-3.588 4.044 3.235v5.182l-4.61 3.545 1.219 1.585 11.392-8.762v16.39zm33.476-32.705-6.494-3.711V22a1 1 0 0 0-.446-.832l-12-8a1 1 0 0 0-1.054-.034l-6.498 3.75-6.502-3.75a1 1 0 0 0-1.004.002l-12 7a1 1 0 0 0-.496.864v8.42l-6.496 3.711a1 1 0 0 0-.504.868v.417L13 34.48v10.884l.002.06V47c0 .38.214.725.553.894l5.447 2.724V59c0 .347.179.67.475.851l13 8a1 1 0 0 0 1.021.017l6.505-3.716 6.503 3.716c.315.181.707.174 1.02-.017l13-8a1 1 0 0 0 .476-.85v-8.383l5.445-2.724A1 1 0 0 0 67 47V34a1 1 0 0 0-.504-.868\" /></g></svg>;\nexport default SvgSagemakerRuntime;","import * as React from \"react\";\nconst SvgSagemaker = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-SageMaker_64\"}</title><defs><linearGradient id=\"linearGradient-sgm\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#055f4e\" /><stop offset=\"100%\" stopColor=\"#56c0a7\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-SageMaker_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Machine-Learning\" fill=\"url(#linearGradient-sgm)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-SageMaker_Icon_64_Squid\" fill=\"#fff\" d=\"M54.034 26.034a1.017 1.017 0 1 1-1.017-1.016c.561 0 1.017.456 1.017 1.016M48.002 36a1.001 1.001 0 0 1 2 0 1.001 1.001 0 0 1-2 0m0 19a1.001 1.001 0 0 1 2 0 1.001 1.001 0 0 1-2 0m10-13a1.001 1.001 0 0 1-2 0 1.001 1.001 0 0 1 2 0M65 45.272l-5.037-2.89c.016-.126.039-.25.039-.382 0-1.654-1.346-3-3-3-1.655 0-3 1.346-3 3s1.345 3 3 3c.799 0 1.521-.319 2.059-.829l4.825 2.768-4.331 2.166c-.339.17-.553.516-.553.895v8.441l-12.019 7.396-5.98-3.417V56h5.183a3 3 0 0 0 2.816 2c1.654 0 3-1.346 3-3 0-1.655-1.346-3-3-3a2.995 2.995 0 0 0-2.816 2h-5.183V40c0-.35-.185-.677-.486-.858l-5.001-3-1.029 1.715 4.516 2.71v2.94l-6.001 4.616V44a1 1 0 0 0-.375-.78l-4.625-3.7v-4.985l5.554-3.702a1 1 0 0 0 .446-.832v-6h-2v5.465l-4.989 3.324-5.011-3.326v-7.89l5-2.915V27h2v-9.51l4.003-2.334 5.996 3.459L39.002 31c0 .359.192.69.504.867l6.536 3.735c-.018.131-.04.261-.04.397 0 1.654 1.345 3 3 3 1.654 0 3-1.346 3-3s-1.346-3-3-3c-.794 0-1.512.315-2.049.82l-5.951-3.4-.001-11.802 5.963-3.441 11.038 7.359V25h-2.151a3.02 3.02 0 0 0-2.834-1.983 3.02 3.02 0 0 0-3.015 3.016 3.02 3.02 0 0 0 3.015 3.016A3.02 3.02 0 0 0 55.875 27h2.127v3c0 .36.192.69.504.869L65 34.58zM33.02 65.837l-3.153-1.94 5.716-4.083-1.162-1.628-6.403 4.573-7.016-4.318v-7.875l4.514-2.709-1.029-1.715-4.529 2.718-4.956-2.478-.001-5.765 5.448-2.723-.894-1.789-4.554 2.276.001-3.8 5.961-3.406 5.039 3.344v4.961l-5.553 3.687 1.106 1.666 5.403-3.588 4.044 3.235v5.182l-4.61 3.545 1.219 1.585 11.392-8.762v16.39zm33.476-32.705-6.494-3.711V22a1 1 0 0 0-.446-.832l-12-8a1 1 0 0 0-1.054-.034l-6.498 3.75-6.502-3.75a1 1 0 0 0-1.004.002l-12 7a1 1 0 0 0-.496.864v8.42l-6.496 3.711a1 1 0 0 0-.504.868v.417L13 34.48v10.884l.002.06V47c0 .38.214.725.553.894l5.447 2.724V59c0 .347.179.67.475.851l13 8a1 1 0 0 0 1.021.017l6.505-3.716 6.503 3.716c.315.181.707.174 1.02-.017l13-8a1 1 0 0 0 .476-.85v-8.383l5.445-2.724A1 1 0 0 0 67 47V34a1 1 0 0 0-.504-.868\" /></g></svg>;\nexport default SvgSagemaker;","import * as React from \"react\";\nconst SvgScheduler = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 48 48\" fill=\"currentColor\" {...props}><title>{\"Icon-Resource/Application-Integration/Res_Amazon-EventBridge_Scheduler_48\"}</title><g id=\"Icon-Resource/Application-Integration/Res_Amazon-EventBridge_Scheduler_48\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Fill-1\" fill=\"#e7157b\" d=\"M15 16h3.92v-2h-3v-3H14v4a1 1 0 0 0 1 1m-9.707 8.293 1.414 1.414 3-3-1.414-1.414zm3.414-16-3-3-1.414 1.414 3 3zM15.92 6H16V2h-2v4zm9.787.707-1.414-1.414-3 3 1.414 1.414zM8.92 15c0 3.309 2.691 6 6 6s6-2.691 6-6-2.691-6-6-6-6 2.691-6 6m-2 0c0-4.411 3.589-8 8-8s8 3.589 8 8-3.589 8-8 8-8-3.589-8-8M18 38h4v-2h-4zm0-5h4v-2h-4zm0-5h4v-2h-4zm18 10h4v-2h-4zm0-5h4v-2h-4zm0-5h4v-2h-4zm-9 10h4v-2h-4zm0-5h4v-2h-4zm0-5h4v-2h-4zm18-16h-3v-2h-2v2h-4.08v-2H34v2h-4.08v-2H28v2h-3v2h3v2h1.92v-2H34v2h1.92v-2H40v2h1.92v-2H44v4H25v2h19v23H14V26h-2v18a1 1 0 0 0 1 1h32a1 1 0 0 0 1-1V13a1 1 0 0 0-1-1M2 17h3.976v-2H2z\" /></g></svg>;\nexport default SvgScheduler;","import * as React from \"react\";\nconst SvgSecretsmanager = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Secrets-Manager_64\"}</title><defs><linearGradient id=\"linearGradient-asm\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#bd0816\" /><stop offset=\"100%\" stopColor=\"#ff5252\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Secrets-Manager_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"url(#linearGradient-asm)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Secrets-Manager_Icon_64_Squid\" fill=\"#fff\" d=\"M38.76 43.36A1.241 1.241 0 1 0 40 42.12c-.683 0-1.24.556-1.24 1.24m-2 0A3.243 3.243 0 0 1 40 40.12a3.243 3.243 0 0 1 3.24 3.24A3.23 3.23 0 0 1 41 46.426V49h-2v-2.574a3.23 3.23 0 0 1-2.24-3.066M49 38H31v13h18v-3h-3v-2h3v-3h-3v-2h3zm-15-2h11.999L46 31c.001-2.616-2.857-4.998-5.996-5h-.003a6.6 6.6 0 0 0-4.238 1.575c-1.12.962-1.763 2.211-1.763 3.426zm14-4.999L47.999 36H50a1 1 0 0 1 1 1v15a1 1 0 0 1-1 1H30a1 1 0 0 1-1-1V37a1 1 0 0 1 1-1h2v-5c.001-1.798.897-3.599 2.459-4.942A8.63 8.63 0 0 1 40.001 24h.003c4.261.002 7.997 3.273 7.996 7.001M19.207 55.049l1.621-1.172c-2.735-3.78-4.247-8.215-4.432-12.877H19v-2h-2.601c.199-4.634 1.709-9.043 4.429-12.802l-1.621-1.173c-2.968 4.103-4.608 8.917-4.808 13.975H12v2h2.396c.186 5.086 1.828 9.926 4.811 14.049m34.631 4.159c-3.769 2.728-8.19 4.238-12.838 4.431V61h-2v2.639c-4.648-.192-9.07-1.702-12.841-4.431l-1.171 1.62c4.112 2.977 8.94 4.617 14.012 4.811V68h2v-2.361c5.072-.194 9.898-1.834 14.01-4.811zM26.159 20.866c3.771-2.728 8.193-4.238 12.841-4.43V19h2v-2.564c4.648.192 9.069 1.702 12.838 4.43l1.172-1.62c-4.112-2.976-8.938-4.616-14.01-4.81V12h-2v2.436c-5.072.193-9.9 1.833-14.012 4.81zM65.599 39c-.2-5.058-1.84-9.872-4.809-13.975l-1.621 1.173C61.89 29.957 63.4 34.366 63.599 39H61v2h2.602c-.186 4.662-1.697 9.097-4.433 12.877l1.621 1.172c2.984-4.123 4.625-8.963 4.812-14.049H68v-2zm-9.213-13.936 7.84-7.84-1.414-1.414-7.84 7.84zM23.612 55.01l-7.84 7.84 1.414 1.414 7.84-7.84zm5.054-27.757-14.841-14.84-1.414 1.414 14.841 14.84zM54.193 52.78l13.393 13.393-1.414 1.414-13.393-13.393z\" /></g></svg>;\nexport default SvgSecretsmanager;","import * as React from \"react\";\nconst SvgServerlessrepo = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Serverless-Application-Repository_16\"}</title><defs><linearGradient id=\"linearGradient-slr\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#c8511b\" /><stop offset=\"100%\" stopColor=\"#f90\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Serverless-Application-Repository_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Compute\" fill=\"url(#linearGradient-slr)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Serverless-Application-Repository_Icon_16_Squid\" fill=\"#fff\" d=\"M16.989 16.036H8.292c-.988 0-2.082-.955-2.285-1.929h7.526a1.362 1.362 0 0 0 .535 1.255 1.4 1.4 0 0 0 1.221.231 1.36 1.36 0 0 0 .992-1.486h2.728c-.176 1.571-1.49 1.929-2.02 1.929M7.53 11.812a.483.483 0 0 0 .365-.526 3 3 0 0 1-.022-.369c0-1.099.794-2.283 1.807-2.696q.344-.139.662-.2v2.184c0 .197.12.374.306.447a.49.49 0 0 0 .532-.115.423.423 0 0 1 .624.03c.047.06.118.185.073.366a.412.412 0 0 1-.696.17.49.49 0 0 0-.533-.115.48.48 0 0 0-.306.447v1.708H6.043c.236-.885 1-1.211 1.487-1.33m3.784-3.83c.906.111 1.547.617 1.847.907.363.349.662.82.864 1.364a.487.487 0 0 0 .842.125c.197-.255.487-.403.798-.403.463 0 1.026.355 1.086 1.352a.484.484 0 0 0 .388.445c.996.198 1.602.658 1.81 1.37h-3.422a.49.49 0 0 0-.45.304.48.48 0 0 0 .115.528.41.41 0 0 1 .106.438.39.39 0 0 1-.265.25.43.43 0 0 1-.374-.066.406.406 0 0 1-.035-.622.48.48 0 0 0 .116-.528.49.49 0 0 0-.45-.303h-2.976v-.957c.204.023.42.002.629-.068a1.37 1.37 0 0 0 .625-2.145 1.39 1.39 0 0 0-1.254-.518zm6.366 2.927c-.221-1.301-1.165-1.898-2.015-1.898-.361 0-.708.098-1.01.28a4.3 4.3 0 0 0-.818-1.095C12.602 7.003 10.91 6.68 9.312 7.33c-1.374.56-2.41 2.101-2.41 3.588v.078C5.704 11.435 5 12.43 5 13.725c0 .07.003.134.007.2C5.097 15.507 6.692 17 8.292 17h8.697C18.153 17 20 16.117 20 13.748c0-1.433-.82-2.431-2.32-2.84\" /></g></svg>;\nexport default SvgServerlessrepo;","import * as React from \"react\";\nconst SvgServicediscovery = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Application-Discovery-Service_16\"}</title><defs><linearGradient id=\"linearGradient-ads\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#055f4e\" /><stop offset=\"100%\" stopColor=\"#56c0a7\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Application-Discovery-Service_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Migration-Transfer\" fill=\"url(#linearGradient-ads)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Application-Discovery-Service_Icon_16_Squid\" fill=\"#fff\" d=\"M7.992 12.029h3.006v-1.001H7.992zm10.913 5.322-4.04-3.804a6.1 6.1 0 0 1-1.31 1.302l3.817 3.983c.07.07.277.135.564.105.288-.027.562-.14.715-.292.159-.16.29-.45.332-.742.042-.283-.01-.486-.078-.552m-8.95-2.325c2.802 0 5.082-2.252 5.082-5.021 0-2.76-2.28-5.004-5.081-5.004-2.778 0-4.954 2.198-4.954 5.004 0 2.816 2.176 5.021 4.954 5.021m10.02 3.022c-.074.506-.303.993-.616 1.305-.318.318-.802.53-1.326.58a3 3 0 0 1-.231.012c-.469 0-.88-.145-1.146-.412l-3.977-4.15a6.1 6.1 0 0 1-2.723.644C6.616 16.027 4 13.382 4 10.005 4 6.638 6.616 4 9.956 4c3.354 0 6.083 2.694 6.083 6.005 0 .96-.235 1.865-.64 2.67l4.204 3.958c.324.324.456.835.372 1.415M12.517 6.956H7.992v1.001h4.024v5.036h1.002V7.456a.5.5 0 0 0-.501-.5m-1.498 12.043h-4.03v-3.003H5.989v3.503a.5.5 0 0 0 .5.501h5.032a.5.5 0 0 0 .5-.5v-2.503H11.02zm-4.03-8.978h4.009V9.02H6.99z\" /></g></svg>;\nexport default SvgServicediscovery;","import * as React from \"react\";\nconst SvgSes = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Simple-Email-Service_64\"}</title><defs><linearGradient id=\"linearGradient-ses\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#bd0816\" /><stop offset=\"100%\" stopColor=\"#ff5252\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Simple-Email-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-ses)\" d=\"M0 0h80v80H0z\" /><path id=\"Amazon-Simple-Email-Service_Icon_64_Squid\" fill=\"#fff\" d=\"M57 61c0-1.626-1.374-3-3-3s-3 1.374-3 3 1.374 3 3 3 3-1.374 3-3m-17-1c-1.626 0-3 1.374-3 3s1.374 3 3 3 3-1.374 3-3-1.374-3-3-3m-14-2c-1.626 0-3 1.374-3 3s1.374 3 3 3 3-1.374 3-3-1.374-3-3-3m2.605-15h22.79l-7.656-6.89-3.09 2.648a.99.99 0 0 1-1.3 0L36.26 36.11zM27 28.173v13.582l7.729-6.957zM51.297 27H28.703l11.296 9.683zM53 41.755V28.173l-7.729 6.624zM59 61c0 2.71-2.29 5-5 5s-5-2.29-5-5c0-2.37 1.75-4.416 4-4.894V53H41v5.106c2.25.478 4 2.525 4 4.894 0 2.71-2.29 5-5 5s-5-2.29-5-5c0-2.37 1.75-4.416 4-4.894V53H27v3.106c2.25.478 4 2.525 4 4.894 0 2.71-2.29 5-5 5s-5-2.29-5-5c0-2.37 1.75-4.416 4-4.894V52a1 1 0 0 1 1-1h13v-6H26a1 1 0 0 1-1-1V26a1 1 0 0 1 1-1h28a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H41v6h13a1 1 0 0 1 1 1v4.106c2.25.478 4 2.525 4 4.894m9-21c0 5.907-1.823 11.56-5.273 16.345l-1.623-1.17A25.8 25.8 0 0 0 66 40c0-14.336-11.663-26-25.999-26C25.664 14 14 25.664 14 40a25.8 25.8 0 0 0 4.896 15.175l-1.623 1.17A27.8 27.8 0 0 1 12 39.999C12 24.561 24.561 12 39.999 12 55.438 12 68 24.561 68 40\" /></g></svg>;\nexport default SvgSes;","import * as React from \"react\";\nconst SvgSesv2 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Simple-Email-Service_64\"}</title><defs><linearGradient id=\"linearGradient-ses\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#bd0816\" /><stop offset=\"100%\" stopColor=\"#ff5252\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Simple-Email-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><path id=\"Rectangle\" fill=\"url(#linearGradient-ses)\" d=\"M0 0h80v80H0z\" /><path id=\"Amazon-Simple-Email-Service_Icon_64_Squid\" fill=\"#fff\" d=\"M57 61c0-1.626-1.374-3-3-3s-3 1.374-3 3 1.374 3 3 3 3-1.374 3-3m-17-1c-1.626 0-3 1.374-3 3s1.374 3 3 3 3-1.374 3-3-1.374-3-3-3m-14-2c-1.626 0-3 1.374-3 3s1.374 3 3 3 3-1.374 3-3-1.374-3-3-3m2.605-15h22.79l-7.656-6.89-3.09 2.648a.99.99 0 0 1-1.3 0L36.26 36.11zM27 28.173v13.582l7.729-6.957zM51.297 27H28.703l11.296 9.683zM53 41.755V28.173l-7.729 6.624zM59 61c0 2.71-2.29 5-5 5s-5-2.29-5-5c0-2.37 1.75-4.416 4-4.894V53H41v5.106c2.25.478 4 2.525 4 4.894 0 2.71-2.29 5-5 5s-5-2.29-5-5c0-2.37 1.75-4.416 4-4.894V53H27v3.106c2.25.478 4 2.525 4 4.894 0 2.71-2.29 5-5 5s-5-2.29-5-5c0-2.37 1.75-4.416 4-4.894V52a1 1 0 0 1 1-1h13v-6H26a1 1 0 0 1-1-1V26a1 1 0 0 1 1-1h28a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H41v6h13a1 1 0 0 1 1 1v4.106c2.25.478 4 2.525 4 4.894m9-21c0 5.907-1.823 11.56-5.273 16.345l-1.623-1.17A25.8 25.8 0 0 0 66 40c0-14.336-11.663-26-25.999-26C25.664 14 14 25.664 14 40a25.8 25.8 0 0 0 4.896 15.175l-1.623 1.17A27.8 27.8 0 0 1 12 39.999C12 24.561 24.561 12 39.999 12 55.438 12 68 24.561 68 40\" /></g></svg>;\nexport default SvgSesv2;","import * as React from \"react\";\nconst SvgShield = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Shield_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-Shield_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"#dd344c\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Shield_Icon_64_Squid\" fill=\"#fff\" d=\"M54.01 50h-2v4h-4v2h4v4h2v-4h4v-2h-4zm7 5c0-4.411-3.588-8-8-8-4.41 0-8 3.589-8 8s3.59 8 8 8c4.412 0 8-3.59 8-8m2 0c0 5.514-4.485 10-10 10-5.513 0-10-4.486-10-10s4.487-10 10-10c5.515 0 10 4.486 10 10m-27 2.97V22.457l-11 4.23V47c.013.414.397 10.38 11 10.971m13-14.27V26.686l-11-4.23v35.507a13.7 13.7 0 0 0 3.237-.6c.135.67.334 1.315.575 1.938-1.465.46-3.07.698-4.811.698-13.56 0-13.997-12.848-14-12.977V26c0-.415.255-.785.64-.934l13-5a1 1 0 0 1 .719 0l13 5c.386.149.64.52.64.934v17.18q-1.031.176-2 .52m-4.254 19.987a12 12 0 0 0 1.817 1.422c-2.755 1.248-5.958 1.879-9.562 1.879-6.327 0-11.371-1.925-14.991-5.721-6.431-6.744-6.03-16.887-6.008-17.315L16.01 22c0-.41.249-.776.629-.93l20-8c.238-.094.504-.094.742 0l20 8c.38.154.629.52.629.93v22l.004.106a12 12 0 0 0-2.003-.712l-.001-20.717-19-7.6-19 7.6v21.322c-.006.143-.375 9.784 5.466 15.898 3.227 3.378 7.78 5.09 13.534 5.09 2.888 0 5.475-.441 7.745-1.3\" /></g></svg>;\nexport default SvgShield;","import * as React from \"react\";\nconst SvgSns = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Simple-Notification-Service_64\"}</title><defs><linearGradient id=\"linearGradient-sns\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Simple-Notification-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Application-Integration\" fill=\"url(#linearGradient-sns)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Simple-Notification-Service_Icon_64_Squid\" fill=\"#fff\" d=\"M17 38c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2m24 26c-11.686 0-21.711-8.534-23.806-20.02A3.98 3.98 0 0 0 20.857 41H27v-2h-6.143a3.985 3.985 0 0 0-3.662-2.98C19.285 24.71 29.511 16 41 16c4.313 0 8.832 1.622 13.429 4.821l1.142-1.642C50.633 15.743 45.73 14 41 14c-12.73 0-24.051 9.865-25.937 22.521C13.839 37.207 13 38.5 13 40s.839 2.793 2.063 3.478C16.97 56.341 28.056 66 41 66c5.407 0 10.942-1.843 15.585-5.189l-1.17-1.622C51.11 62.292 45.991 64 41 64M30.101 36.442c1.854.453 4.174.558 5.899.558 1.642 0 3.823-.095 5.629-.494l-4.524 9.047A1 1 0 0 0 37 46v4.453c-.801.511-2.167 1.359-3 1.533V46a1 1 0 0 0-.077-.385zM36 33c4.025 0 6.174.604 6.841 1-.667.396-2.816 1-6.841 1s-6.174-.604-6.841-1c.667-.396 2.816-1 6.841-1m-3 21h1q.065 0 .128-.008c1.224-.159 2.781-1.105 4.144-1.979l.263-.168c.289-.184.465-.503.465-.845v-4.764l5.559-11.116c.274-.319.441-.686.441-1.12 0-2.61-5.639-3-9-3s-9 .39-9 3c0 .366.12.684.32.967L32 46.2V53a1 1 0 0 0 1 1m29-1c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2m0-30c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2m2 15c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2m-10 3h6.143c.446 1.72 1.999 3 3.857 3 2.206 0 4-1.794 4-4s-1.794-4-4-4c-1.858 0-3.411 1.28-3.857 3H54V26h4.143c.446 1.72 1.999 3 3.857 3 2.206 0 4-1.794 4-4s-1.794-4-4-4c-1.858 0-3.411 1.28-3.857 3H53a1 1 0 0 0-1 1v14h-7v2h7v14a1 1 0 0 0 1 1h5.143c.446 1.72 1.999 3 3.857 3 2.206 0 4-1.794 4-4s-1.794-4-4-4c-1.858 0-3.411 1.28-3.857 3H54z\" /></g></svg>;\nexport default SvgSns;","import * as React from \"react\";\nconst SvgSqs = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Simple-Queue-Service_64\"}</title><defs><linearGradient id=\"linearGradient-sqs\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Simple-Queue-Service_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Application-Integration\" fill=\"url(#linearGradient-sqs)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Simple-Queue-Service_Icon_64_Squid\" fill=\"#fff\" d=\"m28.717 43.688 3.002-2.966a.99.99 0 0 0 .004-1.406l-3.002-3-1.419 1.402 1.288 1.288h-4.581v1.988h4.597l-1.3 1.284zm22.91.09 4.003-2.985c.25-.188.4-.482.4-.794a1 1 0 0 0-.4-.796l-4.003-2.981-1.201 1.59 1.601 1.194h-4.003v1.988h4.002l-1.601 1.193zM35.209 40c0 2.11-.365 4.101-1.048 5.833 1.8-.692 3.831-1.038 5.86-1.038 2.028 0 4.058.346 5.857 1.038-.681-1.732-1.047-3.722-1.047-5.833 0-2.11.366-4.1 1.047-5.833-3.6 1.383-8.116 1.383-11.717 0 .683 1.733 1.048 3.722 1.048 5.833m-4.902 9.651a.99.99 0 0 1 0-1.406c1.816-1.804 2.9-4.887 2.9-8.245s-1.084-6.44-2.9-8.245a.99.99 0 0 1 0-1.406 1.004 1.004 0 0 1 1.415 0c3.877 3.853 12.72 3.853 16.597 0a1.004 1.004 0 0 1 1.415 0 .99.99 0 0 1 0 1.406c-1.817 1.804-2.901 4.887-2.901 8.245s1.084 6.44 2.9 8.245a.99.99 0 0 1 0 1.406 1 1 0 0 1-1.414 0c-3.878-3.853-12.72-3.853-16.597 0a1.004 1.004 0 0 1-1.415 0m35.695-9.646c0-.927-.363-1.798-1.023-2.453a3.5 3.5 0 0 0-2.468-1.014c-.894 0-1.788.337-2.469 1.014a3.456 3.456 0 0 0 0 4.906 3.51 3.51 0 0 0 4.937 0 3.44 3.44 0 0 0 1.023-2.453m.392 3.859a5.5 5.5 0 0 1-3.883 1.595 5.5 5.5 0 0 1-3.884-1.595 5.437 5.437 0 0 1 0-7.718 5.52 5.52 0 0 1 7.767 0 5.437 5.437 0 0 1 0 7.718M20.98 40.028c0-.927-.363-1.798-1.023-2.453a3.48 3.48 0 0 0-2.468-1.016c-.932 0-1.808.36-2.469 1.016A3.43 3.43 0 0 0 14 40.028c0 .925.362 1.796 1.021 2.453 1.32 1.31 3.619 1.31 4.937 0a3.44 3.44 0 0 0 1.023-2.453m.392 3.859a5.5 5.5 0 0 1-3.883 1.595 5.5 5.5 0 0 1-3.884-1.595 5.44 5.44 0 0 1 0-7.718c2.143-2.128 5.626-2.128 7.767 0a5.44 5.44 0 0 1 0 7.718m33.524 10.97c-3.995 3.97-9.307 6.154-14.957 6.154s-10.963-2.185-14.957-6.155c-2.74-2.721-4.248-5.973-5.03-8.221l-1.892.65c.852 2.446 2.498 5.988 5.507 8.977C27.939 60.608 33.753 63 39.939 63c6.185 0 11.999-2.392 16.372-6.738 2.526-2.509 4.539-5.698 5.668-8.98l-1.893-.644c-1.033 3-2.876 5.92-5.19 8.218M19.95 33.366l-1.889-.653c1.21-3.464 3.168-6.653 5.512-8.98C27.943 19.39 33.755 17 39.939 17s11.996 2.391 16.366 6.733c2.466 2.45 4.535 5.724 5.672 8.981l-1.889.652c-1.044-2.982-2.938-5.981-5.198-8.227-3.992-3.967-9.302-6.15-14.95-6.15-5.65 0-10.96 2.183-14.952 6.15-2.134 2.12-3.923 5.043-5.038 8.227\" /></g></svg>;\nexport default SvgSqs;","import * as React from \"react\";\nconst SvgSsm = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Systems-Manager_64\"}</title><defs><linearGradient id=\"linearGradient-ssm\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Systems-Manager_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Management-Governance\" fill=\"url(#linearGradient-ssm)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-Systems-Manager_Icon_64_Squid\" fill=\"#fff\" d=\"M47 54.998h13v2H47v2h-2v-2h-4v-2h4v-1h2zm4-6h9v2h-9v2h-2v-2h-8v-2h8v-1.001h2zm5-6.002h4v2h-4v2h-2v-2H41v-2h13v-1h2zm-35 4h9v2.001h-9c-1.255 0-2.596-.377-3.587-1.008-2.02-1.28-5.413-4.274-5.413-9.947 0-6.881 4.665-9.407 7.38-10.292l-.054-.916c-.002-5.668 3.748-11.48 8.72-13.577 5.823-2.476 11.99-1.25 16.499 3.28 1.399 1.402 2.551 3.11 3.433 5.094a6.74 6.74 0 0 1 6.422-1.245c2.847.934 4.619 3.565 4.827 7.108 2.838.68 8.773 3.014 8.773 10.638 0 .285-.011.56-.022.823l-1.999-.053c.01-.267.021-.513.021-.77 0-6.734-5.557-8.426-7.946-8.84a1 1 0 0 1-.808-1.194c-.029-2.981-1.29-5.097-3.47-5.812-1.953-.643-4.099.066-5.342 1.758a1 1 0 0 1-.952.396 1 1 0 0 1-.796-.654c-.833-2.343-2.03-4.306-3.557-5.835-3.913-3.932-9.262-4.996-14.303-2.852-4.208 1.774-7.502 6.903-7.502 11.676l.099 1.654a1 1 0 0 1-.752 1.027C18.18 30.09 14 32.05 14 38.042c0 4.48 2.438 6.963 4.485 8.258.675.43 1.638.697 2.515.697m45 5.322-1.764-.101a1.01 1.01 0 0 0-1.032.779 13.4 13.4 0 0 1-1.748 4.22 1 1 0 0 0 .181 1.282l1.317 1.174-3.281 3.282-1.171-1.313a1 1 0 0 0-1.28-.18 13.4 13.4 0 0 1-4.225 1.75 1 1 0 0 0-.777 1.033l.1 1.756h-4.64l.1-1.758a1 1 0 0 0-.777-1.033 13.4 13.4 0 0 1-4.223-1.751.996.996 0 0 0-1.28.18l-1.174 1.315-3.28-3.281 1.315-1.172a1 1 0 0 0 .18-1.28 13.4 13.4 0 0 1-1.747-4.224c-.107-.478-.585-.804-1.032-.78L34 52.319v-4.641l1.768.101A1.02 1.02 0 0 0 36.8 47a13.4 13.4 0 0 1 1.75-4.215 1 1 0 0 0-.18-1.281l-1.324-1.181 3.281-3.282 1.181 1.324a1 1 0 0 0 1.279.179c1.3-.82 2.718-1.407 4.216-1.745a1 1 0 0 0 .777-1.033l-.1-1.771h4.64l-.1 1.773a1 1 0 0 0 .777 1.032c1.495.34 2.912.926 4.214 1.747a1 1 0 0 0 1.279-.18l1.183-1.326 3.281 3.282-1.321 1.178a1 1 0 0 0-.18 1.281A13.4 13.4 0 0 1 63.202 47c.108.476.561.804 1.032.778L66 47.677zm.943-6.698-2.001.114a15.4 15.4 0 0 0-1.363-3.289l1.497-1.335a1 1 0 0 0 .041-1.453l-4.778-4.779a.99.99 0 0 0-.735-.292 1 1 0 0 0-.718.333l-1.34 1.502a15.4 15.4 0 0 0-3.283-1.36l.114-2.01a1 1 0 0 0-.272-.743 1 1 0 0 0-.726-.313h-6.758a1 1 0 0 0-.726.313c-.19.2-.288.469-.272.744l.114 2.006a15.4 15.4 0 0 0-3.285 1.36l-1.338-1.499a1 1 0 0 0-.718-.333.96.96 0 0 0-.735.292l-4.778 4.779a1 1 0 0 0 .041 1.453l1.5 1.338a15.4 15.4 0 0 0-1.364 3.286l-2.003-.114a1 1 0 0 0-1.057.998v6.759a1 1 0 0 0 1.057.998l1.996-.114c.325 1.148.781 2.25 1.362 3.293l-1.491 1.33a1 1 0 0 0-.041 1.454l4.778 4.779a.999.999 0 0 0 1.453-.041l1.33-1.493a15.4 15.4 0 0 0 3.292 1.368l-.113 1.992A1 1 0 0 0 46.621 68h6.758a1 1 0 0 0 .998-1.057l-.113-1.99a15.4 15.4 0 0 0 3.294-1.367l1.328 1.49a1 1 0 0 0 1.453.04l4.778-4.778a1 1 0 0 0-.042-1.454l-1.493-1.332a15.4 15.4 0 0 0 1.363-3.291l1.998.114A1 1 0 0 0 68 53.377v-6.76a1 1 0 0 0-1.057-.997\" /></g></svg>;\nexport default SvgSsm;","import * as React from \"react\";\nconst SvgSsoAdmin = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-IAM-Identity-Center_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-IAM-Identity-Center_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"#dd344c\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-IAM-Identity-Center_Icon_64_Squid\" fill=\"#fff\" d=\"M67.438 62.325 52.56 47.447a1 1 0 0 1-.181-1.167c2.078-4.003 1.28-9.048-1.94-12.268a10.45 10.45 0 0 0-8.691-3c-3.23.392-6.078 2.256-7.812 5.117-2.038 3.359-1.947 7.668.23 10.979 3.021 4.595 8.91 6.184 13.698 3.7.387-.2.858-.127 1.168.182l2.468 2.468a1 1 0 0 1 .292.707v3.243h3.243c.264 0 .519.105.707.292l1.415 1.414c.187.188.293.442.293.708v3.242h3.242c.266 0 .519.106.707.293l1.855 1.856 3.942.263zm2.029-.305-.353 4.596a1 1 0 0 1-.996.923q-.034 0-.068-.002l-5.303-.354a1 1 0 0 1-.641-.29l-1.828-1.83H56.45a1 1 0 0 1-1-1v-3.827l-.829-.828h-3.829a1 1 0 0 1-1-1v-3.83l-1.672-1.672c-5.574 2.486-12.179.544-15.626-4.7-2.598-3.951-2.703-9.1-.269-13.114 2.056-3.39 5.44-5.6 9.282-6.064a12.44 12.44 0 0 1 10.346 3.57c3.653 3.653 4.683 9.286 2.622 13.936l14.702 14.702a1 1 0 0 1 .29.784M45.423 41.346a2.48 2.48 0 0 0-.733-1.768 2.48 2.48 0 0 0-1.768-.733c-.667 0-1.295.26-1.767.732a2.503 2.503 0 0 0 0 3.536c.974.975 2.56.975 3.535 0 .473-.473.733-1.1.733-1.767m.681-3.183a4.47 4.47 0 0 1 1.319 3.183 4.47 4.47 0 0 1-1.319 3.18v.002a4.49 4.49 0 0 1-3.182 1.315 4.48 4.48 0 0 1-3.181-1.316 4.506 4.506 0 0 1 0-6.364 4.47 4.47 0 0 1 3.181-1.318c1.203 0 2.332.468 3.182 1.318m-24.103 6.759H28v2h-6c-5.854-.013-10.674-4.165-10.976-9.454-.013-.25-.024-.481-.024-.713 0-6.524 4.627-8.95 7.351-9.81a14 14 0 0 1-.027-.875c0-5.35 3.757-10.888 8.739-12.881 5.807-2.344 11.965-1.178 16.463 3.118 1.187 1.12 2.705 2.794 3.769 4.835 1.136-.998 2.419-1.487 3.888-1.487 2.903 0 6.157 2.336 6.748 7.442C63.95 28.472 67 31.775 67 36.922c0 5.427-3.222 9.068-8.839 9.987l-.323-1.974C61.105 44.4 65 42.575 65 36.922c0-4.381-2.603-6.93-8.192-8.018a1 1 0 0 1-.807-.922c-.224-3.725-2.206-6.327-4.818-6.327-1.335 0-2.382.58-3.394 1.88-.223.287-.58.429-.941.376a1 1 0 0 1-.785-.638c-.872-2.33-2.609-4.285-3.913-5.515-3.919-3.742-9.278-4.754-14.342-2.713-4.198 1.679-7.484 6.522-7.484 11.025 0 .505.03.99.093 1.485q.006.056.007.113v.014c0 .505-.374.927-.86.996-2.499.634-6.564 2.52-6.564 8.077 0 .197.01.394.02.583.242 4.249 4.188 7.574 8.981 7.584\" /></g></svg>;\nexport default SvgSsoAdmin;","import * as React from \"react\";\nconst SvgStepfunctions = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-Step-Functions_64\"}</title><defs><linearGradient id=\"linearGradient-stf\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-Step-Functions_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Application-Integration\" fill=\"url(#linearGradient-stf)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS_Step_Functions_Icon_64_Squid\" fill=\"#fff\" d=\"M45 44h21v-7H45zm22-9H44a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h23a1 1 0 0 0 1-1v-9a1 1 0 0 0-1-1M43.5 62.5c0 1.93-1.57 3.5-3.5 3.5s-3.5-1.57-3.5-3.5S38.07 59 40 59s3.5 1.57 3.5 3.5M14 47h18v-4H14zm0-10h18v-4H14zm22.5-19.5c0-1.93 1.57-3.5 3.5-3.5s3.5 1.57 3.5 3.5S41.93 21 40 21s-3.5-1.57-3.5-3.5M56 53H24v-4h9a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1h-9v-2h9a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1h-9v-3h32v4h2v-5a1 1 0 0 0-1-1H41v-3.096c2.556-.472 4.5-2.713 4.5-5.404 0-3.033-2.468-5.5-5.5-5.5a5.506 5.506 0 0 0-5.5 5.5c0 2.691 1.944 4.932 4.5 5.404V26H23a1 1 0 0 0-1 1v4h-9a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h9v2h-9a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h9v5a1 1 0 0 0 1 1h16v2.096c-2.556.472-4.5 2.713-4.5 5.404 0 3.033 2.468 5.5 5.5 5.5s5.5-2.467 5.5-5.5c0-2.691-1.944-4.932-4.5-5.404V55h16a1 1 0 0 0 1-1v-4.973h-2z\" /></g></svg>;\nexport default SvgStepfunctions;","import * as React from \"react\";\nconst SvgSts = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 48 48\" fill=\"currentColor\" {...props}><title>{\"Icon-Resource/General-Resource/Res_SAML-token_48_Light\"}</title><defs><linearGradient id=\"linearGradient-sts\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><path id=\"Icon-Resource/General-Resource/Res_SAML-token_48\" fill=\"url(#linearGradient-sts)\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1} d=\"M23.886 24.573a1 1 0 0 0-.175 1.18c1.068 1.994.728 4.39-.845 5.963a5.07 5.07 0 0 1-7.16 0 5.03 5.03 0 0 1-1.481-3.58c0-1.352.526-2.623 1.482-3.579a4.97 4.97 0 0 1 3.53-1.462c.824 0 1.66.203 2.435.617.388.206.866.136 1.179-.175l1.322-1.323a1 1 0 0 0 .292-.742l-.042-1.245 1.246.042a.95.95 0 0 0 .74-.292l.747-.745c.196-.196.3-.465.292-.74l-.043-1.247 1.246.043c.26.01.545-.097.74-.292l.866-.865 1.31-.128.04.85zm9.287-10.425a1.01 1.01 0 0 0-.752-.239l-2.716.267a1 1 0 0 0-.61.288l-.81.81-1.882-.064c-.255-.032-.546.095-.742.292a1 1 0 0 0-.292.741l.065 1.883-.131.13-1.882-.064a.94.94 0 0 0-.741.292 1 1 0 0 0-.292.741l.063 1.882-.518.52c-2.628-1.076-5.616-.507-7.64 1.516a7.01 7.01 0 0 0-2.068 4.993c0 1.886.734 3.66 2.068 4.994a7.04 7.04 0 0 0 4.994 2.065 7.04 7.04 0 0 0 4.994-2.065c2.022-2.023 2.59-5.012 1.515-7.639l7.536-7.536a1 1 0 0 0 .292-.752l-.106-2.344a1 1 0 0 0-.345-.71M18.579 30.04a.845.845 0 1 1-1.192-1.196.845.845 0 0 1 1.192 1.196m-2.608-2.61a2.85 2.85 0 0 0 0 4.024 2.84 2.84 0 0 0 2.012.832c.727 0 1.456-.277 2.01-.832a2.85 2.85 0 0 0 0-4.024c-1.075-1.075-2.95-1.072-4.022 0m22.57-15.604a1.777 1.777 0 0 1-2.51 0l-.001-.002a1.76 1.76 0 0 1-.516-1.255 1.766 1.766 0 0 1 1.772-1.77h.002a1.76 1.76 0 0 1 1.77 1.773c0 .476-.184.922-.517 1.254m-3.922-3.928a3.75 3.75 0 0 0-1.106 2.67 3.75 3.75 0 0 0 1.102 2.67 3.76 3.76 0 0 0 2.67 1.106c.966 0 1.932-.368 2.668-1.102a3.78 3.78 0 0 0 .005-5.339 3.78 3.78 0 0 0-5.34-.005M20.255 43.574 4.414 27.706 28.139 4.02l15.134.733.708 15.133zM45.228 3.751a1 1 0 0 0-.95-.952l-16.484-.798a.97.97 0 0 0-.755.291L2.294 26.997a1 1 0 0 0-.002 1.414l17.254 17.283a.997.997 0 0 0 1.414.002L45.706 20.99a1 1 0 0 0 .293-.755z\" /></svg>;\nexport default SvgSts;","import * as React from \"react\";\nconst SvgSupport = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Support_16\"}</title><defs><linearGradient id=\"linearGradient-spr\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Support_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Customer-Enablement\" fill=\"url(#linearGradient-spr)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Support_16_Squid\" fill=\"#fff\" d=\"M15.878 16.096a1 1 0 0 1-.7.307h-.02a1 1 0 1 1 .721-.307m-2.162-2.08c-.37.386-.568.892-.558 1.426s.23 1.032.614 1.403c.375.36.865.558 1.384.558h.04a2.003 2.003 0 0 0 1.348-3.442 2.004 2.004 0 0 0-2.828.055m4.375 3.093-.988-.198a.5.5 0 0 0-.395.087l-.504.369a.5.5 0 0 0-.2.345l-.117.996-1.465-.002-.114-.987a.5.5 0 0 0-.2-.344l-.51-.378a.51.51 0 0 0-.396-.089l-.98.196-.452-1.393.92-.421a.5.5 0 0 0 .265-.299l.193-.587a.5.5 0 0 0-.04-.401l-.494-.88 1.185-.86.678.737a.5.5 0 0 0 .368.161h.003l.635-.004a.5.5 0 0 0 .366-.161l.672-.73 1.184.861-.492.876a.5.5 0 0 0-.04.397l.188.594c.043.134.14.244.268.303l.915.42zm1.275-2.116-1.119-.513-.056-.177.603-1.073a.5.5 0 0 0-.142-.65l-1.903-1.385a.5.5 0 0 0-.662.066l-.827.897-.197.001-.83-.9a.5.5 0 0 0-.662-.066l-1.905 1.382a.5.5 0 0 0-.142.65l.604 1.076-.056.171-1.124.516a.5.5 0 0 0-.266.608l.725 2.24a.5.5 0 0 0 .574.336l1.2-.24.158.118.141 1.213a.5.5 0 0 0 .496.443l2.354.002h.001c.254 0 .467-.19.496-.442l.144-1.221.151-.11 1.208.242a.5.5 0 0 0 .574-.335l.73-2.239a.5.5 0 0 0-.268-.61M6.841 7.495A2.5 2.5 0 0 1 9.336 5a2.5 2.5 0 0 1 2.495 2.495 2.5 2.5 0 0 1-2.495 2.496 2.5 2.5 0 0 1-2.495-2.496m2.584 3.54c.776 0 1.483.245 2.104.728l.615-.789a4.5 4.5 0 0 0-.924-.544 3.49 3.49 0 0 0 1.611-2.935A3.5 3.5 0 0 0 9.336 4a3.5 3.5 0 0 0-3.495 3.495c0 1.266.683 2.367 1.693 2.98-2.009.944-3.499 3.316-3.534 6.019a.5.5 0 0 0 .145.357A.5.5 0 0 0 4.5 17h5.336v-1H5.024c.257-2.991 2.41-4.965 4.401-4.965\" /></g></svg>;\nexport default SvgSupport;","import * as React from \"react\";\nconst SvgSwf = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Step-Functions_16\"}</title><defs><linearGradient id=\"linearGradient-swf\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#b0084d\" /><stop offset=\"100%\" stopColor=\"#ff4f8b\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Step-Functions_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Application-Integration\" fill=\"url(#linearGradient-swf)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS_Step_Functions_Icon_16_Squid\" fill=\"#fff\" d=\"M14 13h5v-2h-5zm2 2H8v-2h2.5a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5H8V9h8v1h-2.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5H16zM5 12h5v-1H5zm7.5 7a.5.5 0 1 1 .002-1.002A.5.5 0 0 1 12.5 19m0-14a.5.5 0 1 1-.002 1.002A.5.5 0 0 1 12.5 5m7 5H17V8.5a.5.5 0 0 0-.5-.5H13V6.908c.581-.207 1-.757 1-1.408 0-.827-.673-1.5-1.5-1.5S11 4.673 11 5.5c0 .651.419 1.201 1 1.408V8H7.5a.5.5 0 0 0-.5.5V10H4.5a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 .5.5H7v2.5a.5.5 0 0 0 .5.5H12v1.092c-.581.207-1 .757-1 1.408 0 .827.673 1.5 1.5 1.5s1.5-.673 1.5-1.5c0-.651-.419-1.201-1-1.408V16h3.5a.5.5 0 0 0 .5-.5V14h2.5a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5\" /></g></svg>;\nexport default SvgSwf;","import * as React from \"react\";\nconst SvgTextract = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Textract_64\"}</title><g id=\"Icon-Architecture/64/Arch_Amazon-Textract_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Machine-Learning\" fill=\"#01a88d\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Textract_Icon_64_Squid\" fill=\"#fff\" d=\"M22.062 50c2.314 3.603 6.348 6 10.938 6 7.167 0 13-5.832 13-13s-5.833-13-13-13c-5.397 0-10.034 3.307-11.998 8h2.212c1.825-3.556 5.522-6 9.786-6 6.065 0 11 4.935 11 11s-4.935 11-11 11a10.99 10.99 0 0 1-8.479-4zM37 45v-2h5c0-4.962-4.038-9-9-9-4.963 0-9 4.038-9 9h5v2H24.23c.913 4.002 4.494 7 8.77 7a8.95 8.95 0 0 0 5.643-2H34v-2h6.478a9 9 0 0 0 1.29-3zm-15.998 3h2.212A10.9 10.9 0 0 1 22 43c0-1.041.155-2.045.426-3h-2.063A13 13 0 0 0 20 43c0 1.771.36 3.46 1.003 5m-1.259 2H17v-2h1.874c-.34-.96-.585-1.962-.725-3h-2.735l1.293 1.293-1.415 1.414-3-3a1 1 0 0 1 0-1.414l3-3 1.415 1.414L15.414 43H18c0-1.027.104-2.03.302-3H17v-2h1.874C20.94 32.184 26.484 28 33 28c4.427 0 8.4 1.939 11.148 5H59v2H45.666A14.9 14.9 0 0 1 48 43H59v2H47.85c-.982 7.327-7.259 13-14.85 13-5.744 0-10.738-3.248-13.257-8M37 39a1 1 0 0 0-1-1h-6a1 1 0 0 0-1 1v2h2v-1h1v3h-1v2h4v-2h-1v-3h1v1h2zm12 1h10v-2H49zm0 10h10v-2H49zm8-23h3.585L57 23.414zm6.707.293c.187.187.293.442.293.707v35a1 1 0 0 1-1 1H32a1 1 0 0 1-1-1v-4h2v3h29V29h-6a1 1 0 0 1-1-1v-6H33v5h-2v-6a1 1 0 0 1 1-1h24a1 1 0 0 1 .707.293zM68 24.166V61a1 1 0 0 1-1 1h-2v-2h1V24.612L58.617 18H36v1h-2v-2a1 1 0 0 1 1-1h24c.246 0 .483.091.666.255l8 7.165c.212.19.334.461.334.746\" /></g></svg>;\nexport default SvgTextract;","import * as React from \"react\";\nconst SvgTimestreamQuery = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Timestream_64\"}</title><defs><linearGradient id=\"linearGradient-tsd\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Timestream_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-tsd)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Timestream_Icon_64_Squid\" fill=\"#fff\" d=\"M60.92 52.293 62.201 51H56.25l-1.574-1.586-2.976 3-8.638-8.707 1.402-1.414 7.236 7.293 2.976-3L57.071 49h5.131l-1.283-1.293 1.403-1.414L66 50l-3.678 3.707zM51.7 36.586 53.273 35h3.138l2.972 3.332-1.477 1.336L55.527 37h-1.432L51.7 39.414 49.305 37h-5.542v-2h6.363zM62.202 36H60.63v-2h4.96v5h-1.984v-1.586L61.04 40l2.566 2.586V41h1.984v5h-4.96v-2h1.573l-2.565-2.586L57.07 44h-5.953l-1.693 1.707-1.403-1.414L50.297 42h5.953zm-19.14 13.293 1.984-2 1.403 1.414-1.985 2zM32.85 14c9.94 0 16.866 3.162 16.866 6s-6.926 6-16.866 6-16.866-3.162-16.866-6 6.926-6 16.866-6m9.92 19h-1.983v22c0 .552.443 1 .992 1h7.937v4c0 2.838-6.926 6-16.866 6-9.623 0-16.866-3.479-16.866-5.735v-7.591C19.017 55.284 25.267 57 32.85 57c2.464 0 4.858-.189 7.112-.563l-.321-1.974A42 42 0 0 1 32.85 55c-9.94 0-16.866-3.162-16.866-6V38.674C19.017 41.284 25.267 43 32.85 43c2.464 0 4.858-.189 7.112-.563l-.321-1.974A42 42 0 0 1 32.85 41c-9.94 0-16.866-3.162-16.866-6V23.674C19.017 26.284 25.267 28 32.85 28s13.833-1.716 16.866-4.326V34H51.7V20c0-4.561-8.104-8-18.85-8S14 15.439 14 20v40.265C14 64.385 22.809 68 32.85 68c10.746 0 18.85-3.439 18.85-8v-4h13.89v-2H42.77z\" /></g></svg>;\nexport default SvgTimestreamQuery;","import * as React from \"react\";\nconst SvgTimestreamWrite = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Timestream_64\"}</title><defs><linearGradient id=\"linearGradient-tsd\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_Amazon-Timestream_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Database\" fill=\"url(#linearGradient-tsd)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Amazon-Timestream_Icon_64_Squid\" fill=\"#fff\" d=\"M60.92 52.293 62.201 51H56.25l-1.574-1.586-2.976 3-8.638-8.707 1.402-1.414 7.236 7.293 2.976-3L57.071 49h5.131l-1.283-1.293 1.403-1.414L66 50l-3.678 3.707zM51.7 36.586 53.273 35h3.138l2.972 3.332-1.477 1.336L55.527 37h-1.432L51.7 39.414 49.305 37h-5.542v-2h6.363zM62.202 36H60.63v-2h4.96v5h-1.984v-1.586L61.04 40l2.566 2.586V41h1.984v5h-4.96v-2h1.573l-2.565-2.586L57.07 44h-5.953l-1.693 1.707-1.403-1.414L50.297 42h5.953zm-19.14 13.293 1.984-2 1.403 1.414-1.985 2zM32.85 14c9.94 0 16.866 3.162 16.866 6s-6.926 6-16.866 6-16.866-3.162-16.866-6 6.926-6 16.866-6m9.92 19h-1.983v22c0 .552.443 1 .992 1h7.937v4c0 2.838-6.926 6-16.866 6-9.623 0-16.866-3.479-16.866-5.735v-7.591C19.017 55.284 25.267 57 32.85 57c2.464 0 4.858-.189 7.112-.563l-.321-1.974A42 42 0 0 1 32.85 55c-9.94 0-16.866-3.162-16.866-6V38.674C19.017 41.284 25.267 43 32.85 43c2.464 0 4.858-.189 7.112-.563l-.321-1.974A42 42 0 0 1 32.85 41c-9.94 0-16.866-3.162-16.866-6V23.674C19.017 26.284 25.267 28 32.85 28s13.833-1.716 16.866-4.326V34H51.7V20c0-4.561-8.104-8-18.85-8S14 15.439 14 20v40.265C14 64.385 22.809 68 32.85 68c10.746 0 18.85-3.439 18.85-8v-4h13.89v-2H42.77z\" /></g></svg>;\nexport default SvgTimestreamWrite;","import * as React from \"react\";\nconst SvgTranscribe = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_Amazon-Transcribe_16\"}</title><defs><linearGradient id=\"linearGradient-trs\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#055f4e\" /><stop offset=\"100%\" stopColor=\"#56c0a7\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_Amazon-Transcribe_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Machine-Learning\" fill=\"url(#linearGradient-trs)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"Amazon-Transcribe_Icon_16_Squid\" fill=\"#fff\" d=\"M18.263 7.952 15.97 5.701v2.251zM20 16.512a.5.5 0 0 1-.505.5h-4.54V16.01h4.036l-.003-7.055h-3.523a.503.503 0 0 1-.504-.501V5.003h-3.1v2.978h-1.008V4.502c0-.276.226-.501.504-.501L15.465 4c.13 0 .257.05.354.144l4.028 3.953c.098.096.15.225.15.357zM6.93 15h1.008v-2.006H6.93zm1.988 1.003h1.01v-4.012h-1.01zM10.912 15h1.01v-2.006h-1.01zm2.266 1.457.841.554c-.992 1.49-2.504 2.346-4.15 2.346a5.7 5.7 0 0 1-2.56-.633l-2.46 1.227a.5.5 0 0 1-.233.048c-.168 0-.35-.06-.454-.166a.58.58 0 0 1-.092-.675l1.266-2.38c-.347-.589-.788-1.537-.788-2.574 0-2.814 2.292-4.936 5.332-4.936 1.124 0 1.93.397 2.632.826l-.53.855c-.683-.419-1.275-.678-2.102-.678-2.096 0-4.323 1.379-4.323 3.933 0 .689.285 1.52.784 2.281.1.153.108.347.023.509l-.784 1.47 1.518-.755a.51.51 0 0 1 .49.02c.635.386 1.509.625 2.28.625 1.78 0 2.838-1.188 3.31-1.897\" /></g></svg>;\nexport default SvgTranscribe;","import * as React from \"react\";\nconst SvgTransfer = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/16/Arch_AWS-Transfer-Family_16\"}</title><defs><linearGradient id=\"linearGradient-atf\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#055f4e\" /><stop offset=\"100%\" stopColor=\"#56c0a7\" /></linearGradient></defs><g id=\"Icon-Architecture/16/Arch_AWS-Transfer-Family_16\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/16/Migration-Transfer\" fill=\"url(#linearGradient-atf)\"><path id=\"Rectangle\" d=\"M0 0h24v24H0z\" /></g><path id=\"AWS-Transfer-Family_Icon-atf6_Squid\" fill=\"#fff\" d=\"m9.186 13.857 2.036 2c.094.092.22.143.351.143.155.025.262-.054.356-.15l1.964-2-.713-.7-1.107 1.127V9.5h-1v4.808l-1.186-1.165zM14 6.723V11.5h1V6.692l1.186 1.165.701-.714-2.036-2A.5.5 0 0 0 14.5 5c-.096.021-.261.054-.356.15l-1.964 2 .713.7zM19 9v9a.5.5 0 0 1-.5.5h-13A.5.5 0 0 1 5 18V8a.5.5 0 0 1 .5-.5H7c.141 0 .276.06.371.164l.758.836h1.668v1H7.908a.5.5 0 0 1-.37-.164L6.779 8.5H6v9h12v-8h-2v-1h2.5a.5.5 0 0 1 .5.5\" /></g></svg>;\nexport default SvgTransfer;","import * as React from \"react\";\nconst SvgVerifiedpermissions = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_Amazon-Verified-Permissions_64\"}</title><g id=\"Icon-Architecture/64/Arch_Amazon-Verified-Permissions_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"#dd344c\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"Fill-1\" fill=\"#fff\" d=\"M48 48h10v2H48v4h10v2H48v3h-2V45h2zm18 5.522-1.515-.086c-.471-.034-.924.3-1.032.778a12.2 12.2 0 0 1-1.582 3.821 1 1 0 0 0 .18 1.279l1.132 1.01-2.859 2.859-1.006-1.127a.996.996 0 0 0-1.28-.18 12.2 12.2 0 0 1-3.825 1.584 1 1 0 0 0-.777 1.033L53.521 66h-4.042l.085-1.508a1 1 0 0 0-.777-1.033 12.2 12.2 0 0 1-3.822-1.586 1 1 0 0 0-1.28.18l-1.008 1.13-2.86-2.859 1.129-1.007a1 1 0 0 0 .181-1.28 12.2 12.2 0 0 1-1.582-3.823 1.01 1.01 0 0 0-1.032-.778L37 53.522v-4.044l1.518.086c.479.019.922-.3 1.032-.777.306-1.353.84-2.637 1.585-3.815a1 1 0 0 0-.18-1.281l-1.138-1.014 2.86-2.86 1.014 1.137c.328.364.869.439 1.28.179a12.2 12.2 0 0 1 3.815-1.579 1 1 0 0 0 .778-1.032L49.479 37h4.042l-.085 1.523c-.029.488.3.925.777 1.032 1.354.307 2.638.839 3.813 1.581.412.26.954.184 1.281-.179l1.016-1.14 2.86 2.86-1.135 1.012a1 1 0 0 0-.18 1.28 12.1 12.1 0 0 1 1.583 3.818c.108.477.563.796 1.032.777L66 49.478zm1.687-5.83c-.2-.188-.47-.287-.744-.271l-1.754.1a14 14 0 0 0-1.196-2.887l1.312-1.17a1 1 0 0 0 .041-1.453l-4.357-4.356a.98.98 0 0 0-.735-.293 1 1 0 0 0-.718.334l-1.175 1.316a14 14 0 0 0-2.882-1.195l.099-1.76A1 1 0 0 0 54.58 35h-6.16a1 1 0 0 0-.998 1.057l.099 1.758c-1.003.291-1.968.69-2.884 1.194l-1.173-1.313a1 1 0 0 0-.718-.334.98.98 0 0 0-.735.293l-4.357 4.356a1 1 0 0 0 .041 1.453l1.315 1.173a14.2 14.2 0 0 0-1.198 2.884l-1.755-.1a1 1 0 0 0-1.057.998v6.162a1 1 0 0 0 1.057.998l1.749-.1a14 14 0 0 0 1.197 2.892l-1.307 1.165a1 1 0 0 0-.042 1.453l4.357 4.357a.97.97 0 0 0 .735.292 1 1 0 0 0 .718-.334l1.166-1.306c.919.506 1.887.907 2.891 1.199l-.099 1.746A1 1 0 0 0 48.42 68h6.16a1 1 0 0 0 .998-1.057l-.099-1.744A14 14 0 0 0 58.373 64l1.163 1.304a1 1 0 0 0 .718.334.96.96 0 0 0 .735-.292l4.357-4.357a1.002 1.002 0 0 0-.041-1.453l-1.31-1.168c.505-.918.905-1.885 1.196-2.889l1.752.1A1.002 1.002 0 0 0 68 54.581v-6.162c0-.274-.113-.538-.313-.727M31.742 36.218l-7.545 7.545a.996.996 0 0 1-1.414 0l-3.771-3.772 1.414-1.414 3.064 3.065 6.838-6.838zm0-14.392-7.545 7.544a.996.996 0 0 1-1.414 0l-3.771-3.772 1.414-1.414 3.064 3.065 6.838-6.837zm-1.886 30.529-3.537 3.537 3.537 3.537-1.414 1.414-3.537-3.537-3.537 3.537-1.414-1.414 3.537-3.537-3.537-3.537 1.414-1.414 3.537 3.537 3.537-3.537zM45 15.659 50.973 21H45zM14 14h29v8a1 1 0 0 0 1 1h8v10h2V21.471c0-.285-.121-.556-.333-.746l-9.474-8.471a1 1 0 0 0-.667-.254H13a1 1 0 0 0-1 1v54a1 1 0 0 0 1 1h25v-2H14z\" /></g></svg>;\nexport default SvgVerifiedpermissions;","import * as React from \"react\";\nconst SvgWafv2 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-WAF_64\"}</title><g id=\"Icon-Architecture/64/Arch_AWS-WAF_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Security-Identity-Compliance\" fill=\"#dd344c\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><g id=\"Icon-Service/64/AWS-WAF_64\" fill=\"#fff\" transform=\"translate(12 12)\"><path id=\"AWS-WAF_Icon_64_Squid\" d=\"M2.396 29H0v-2h2.399c.2-5.059 1.84-9.872 4.809-13.975l1.621 1.173C6.108 17.957 4.598 22.366 4.399 27H7v2H4.396c.186 4.662 1.697 9.097 4.433 12.876l-1.621 1.173C4.224 38.926 2.583 34.085 2.396 29M43.01 48.828c-4.112 2.977-8.938 4.617-14.01 4.811V56h-2v-2.361c-5.072-.194-9.9-1.834-14.012-4.811l1.172-1.62c3.77 2.729 8.192 4.239 12.84 4.431V49h2v2.639c4.648-.193 9.069-1.703 12.838-4.431zM12.988 7.246C17.1 4.269 21.928 2.629 27 2.436V0h2v2.436c5.072.193 9.898 1.834 14.01 4.81l-1.172 1.62C38.069 6.138 33.648 4.628 29 4.436V7h-2V4.436c-4.648.191-9.07 1.702-12.84 4.43zM56 27v2h-2.398c-.186 5.085-1.828 9.926-4.811 14.049l-1.622-1.173c2.736-3.779 4.248-8.214 4.433-12.876H49v-2h2.599c-.199-4.634-1.709-9.043-4.43-12.802l1.622-1.173c2.968 4.103 4.608 8.916 4.808 13.975zM42.972 11.65l7.84-7.84 1.414 1.414-7.84 7.84zM13.026 44.424l-7.84 7.84-1.414-1.414 7.84-7.84zm2.226-27.757L.412 1.827 1.826.413l14.841 14.84zm25.455 22.626 14.879 14.88-1.414 1.414-14.88-14.879zM19.664 28.735q.113-.2.241-.401c1.681-2.641 1.199-6.245.665-8.422 1.441.947 2.74 2.904 3.183 3.726a.99.99 0 0 0 .959.523c.395-.031.734-.291.866-.664 1.489-4.23.732-7.41-.318-9.471a7.2 7.2 0 0 1 2.912 3.166c1.416 2.942 1.101 6.969-.824 10.508-2.629 4.836-2.102 9.906-1.504 12.634-1.501-.647-2.837-1.378-3.99-2.182-3.027-2.11-3.99-6.245-2.19-9.417m13.43-.337a1.002 1.002 0 0 0 1.615.938c.081-.065 1.721-1.419 2.515-4.694.957 1.392 1.958 4.201.626 9.361-1.318 5.105-7.57 6.541-9.801 6.894-.539-1.933-1.632-7.298 1.057-12.242 1.908-3.51 2.414-7.479 1.458-10.754 1.81 2.126 3.337 5.472 2.53 10.497m-15.172-.648c-2.302 4.06-1.078 9.349 2.788 12.043 1.75 1.22 3.87 2.279 6.3 3.148q.167.06.337.059c.021 0 .039-.011.059-.012l.001.009c.425-.033 10.419-.901 12.379-8.494 2.522-9.766-2.529-12.663-2.745-12.782a1 1 0 0 0-1.475.774 13 13 0 0 1-.316 1.807c-.692-7.668-6.771-10.788-8-11.343-1.26-.965-2.792-1.628-4.568-1.943a1.002 1.002 0 0 0-.815 1.752c.15.127 3.266 2.829 2.377 7.971-1.161-1.523-3.009-3.359-5.183-3.359a1.001 1.001 0 0 0-.933 1.361c.022.054 2.06 5.425.089 8.52a13 13 0 0 0-.295.489\" /></g></g></svg>;\nexport default SvgWafv2;","import * as React from \"react\";\nconst SvgXray = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 80 80\" fill=\"currentColor\" {...props}><title>{\"Icon-Architecture/64/Arch_AWS-X-Ray_64\"}</title><defs><linearGradient id=\"linearGradient-xry\" x1=\"0%\" x2=\"100%\" y1=\"100%\" y2=\"0%\"><stop offset=\"0%\" stopColor=\"#2e27ad\" /><stop offset=\"100%\" stopColor=\"#527fff\" /></linearGradient></defs><g id=\"Icon-Architecture/64/Arch_AWS-X-Ray_64\" fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth={1}><g id=\"Icon-Architecture-BG/64/Developer-Tools\" fill=\"url(#linearGradient-xry)\"><path id=\"Rectangle\" d=\"M0 0h80v80H0z\" /></g><path id=\"AWS-X-Ray_Icon_64_Squid\" fill=\"#fff\" d=\"M47.5 42.2h-2v13.883h-4v-9.916h-2v9.916h-4v-6.941h-2v6.941h-2v1.984h18v-1.984h-2zm8 7.438c0-7.929-6.505-14.38-14.5-14.38s-14.5 6.451-14.5 14.38c0 7.928 6.505 14.379 14.5 14.379s14.5-6.451 14.5-14.38m2 0C57.5 58.66 50.098 66 41 66s-16.5-7.34-16.5-16.362S31.902 33.275 41 33.275s16.5 7.34 16.5 16.363M68 38.702c0 5.657-3.132 9.336-8.591 10.092l-.277-1.965C62.266 46.396 66 44.634 66 38.702c0-5.568-4.247-7.583-7.809-8.292a.99.99 0 0 1-.801-.916c-.234-4.073-2.645-5.896-4.932-5.896-1.437 0-2.777.671-3.676 1.842-.22.288-.585.433-.943.38a1 1 0 0 1-.79-.637c-.81-2.168-2.01-4.06-3.47-5.469-3.838-3.711-9.09-4.72-14.049-2.695-4.117 1.675-7.342 6.495-7.342 10.974 0 .503.031 1.003.091 1.488a.99.99 0 0 1-.752 1.084c-2.437.6-6.527 2.443-6.527 8.06 0 .212.011.403.021.604.183 3.292 3.047 6.315 6.966 7.351l-.515 1.916c-4.744-1.254-8.218-5.02-8.448-9.16a13 13 0 0 1-.024-.71c0-6.491 4.538-8.898 7.216-9.752a14 14 0 0 1-.028-.881c0-5.312 3.69-10.817 8.582-12.808 5.718-2.337 11.778-1.175 16.205 3.11 1.338 1.29 2.481 2.924 3.351 4.778a6.56 6.56 0 0 1 4.132-1.459c3.072 0 6.295 2.177 6.862 7.013 5.606 1.35 8.68 4.904 8.68 10.075\" /></g></svg>;\nexport default SvgXray;","import type { FC, ReactNode } from 'react'\nimport { Box } from '@mui/material'\nimport { memo } from 'react'\n\ninterface PillCellProps {\n backgroundColor?: string\n children: ReactNode\n height?: number | string\n outlineColor?: string\n outlineWidth?: string\n paddingBottom?: number | string\n paddingTop?: number | string\n}\n\nexport const PillCell: FC<PillCellProps> = memo(({\n backgroundColor,\n children,\n height = '24px',\n outlineColor,\n outlineWidth = '1px',\n paddingBottom,\n paddingTop,\n}) => {\n return (\n <Box\n sx={{\n alignItems: 'center',\n backgroundColor: backgroundColor ?? (theme => theme.palette.background.paper),\n borderRadius: '16px',\n display: 'inline-flex',\n height: paddingTop || paddingBottom ? 'auto' : height,\n maxWidth: '100%',\n outlineColor: outlineColor ?? (theme => theme.palette.divider),\n outlineStyle: 'solid',\n outlineWidth,\n ...(paddingTop && { paddingTop }),\n ...(paddingBottom && { paddingBottom }),\n overflow: 'hidden',\n }}\n >\n {children}\n </Box>\n )\n})\n","import type { FC } from 'react'\nimport { ErrorOutline, InfoOutlined } from '@mui/icons-material'\nimport { Alert, AlertTitle, Box, Button, Link, Typography } from '@mui/material'\n\nimport type { StatusResponse } from '@/types/api.ts'\nimport { AppInspectorNotFoundError, ConnectionError } from '@/api/errors.ts'\nimport { APPINSPECTOR_API_PREFIX } from '@/config.ts'\n\nexport interface StatusMessageProps {\n error?: Error\n onRetry?: () => void\n status?: StatusResponse\n}\n\n/**\n * Component to display helpful messages for connection/status issues\n */\nexport const StatusMessage: FC<StatusMessageProps> = ({\n error,\n onRetry,\n status,\n}) => {\n // App Inspector extension not found (404)\n if (error instanceof AppInspectorNotFoundError) {\n return (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n justifyContent: 'center',\n p: 4,\n }}\n >\n <Alert\n icon={<ErrorOutline fontSize=\"large\" />}\n severity=\"error\"\n sx={{ maxWidth: 600, width: '100%' }}\n >\n <AlertTitle sx={{ fontWeight: 'bold' }}>App Inspector Not Available</AlertTitle>\n <Typography sx={{ mb: 2 }} variant=\"body2\">\n The App Inspector extension is not licensed or not enabled in LocalStack.\n </Typography>\n <Typography sx={{ mb: 1 }} variant=\"body2\">\n <strong>To enable App Inspector:</strong>\n </Typography>\n <Typography sx={{ mb: 1 }} variant=\"body2\">\n Set the environment variable and restart LocalStack:\n </Typography>\n <Box\n component=\"pre\"\n sx={{\n backgroundColor: 'rgba(0, 0, 0, 0.05)',\n borderRadius: 1,\n fontSize: '0.875rem',\n p: 1,\n }}\n >\n LOCALSTACK_APPINSPECTOR_ENABLE=1\n </Box>\n <Typography sx={{ fontStyle: 'italic', mb: 1, mt: 2 }} variant=\"body2\">\n Runtime changes can be made via endpoint\n {' '}\n <code>\n {APPINSPECTOR_API_PREFIX}\n /status\n </code>\n . For persistent default state across restarts, adjust the\n {' '}\n <code>LOCALSTACK_APPINSPECTOR_ENABLE</code>\n {' '}\n environment variable in your\n {' '}\n <code>~/.localstack</code>\n {' '}\n profile files.\n {' '}\n <Link\n href=\"https://docs.localstack.cloud/aws/capabilities/config/configuration/#profiles\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n Learn more about LocalStack profiles\n </Link>\n </Typography>\n\n <Typography sx={{ mb: 1, mt: 2 }} variant=\"body2\">\n <strong>For more information:</strong>\n </Typography>\n <Link\n href=\"https://docs.localstack.cloud/user-guide/tools/application-inspector/\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n App Inspector Documentation\n </Link>\n {onRetry && (\n <Box sx={{ display: 'flex', justifyContent: 'flex-start', mt: 2 }}>\n <Button\n aria-label=\"Check App Inspector status again\"\n onClick={onRetry}\n variant=\"outlined\"\n >\n Check Again\n </Button>\n </Box>\n )}\n </Alert>\n </Box>\n )\n }\n\n // Connection error\n if (error instanceof ConnectionError) {\n return (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n justifyContent: 'center',\n p: 4,\n }}\n >\n <Alert\n icon={<ErrorOutline fontSize=\"large\" />}\n severity=\"error\"\n sx={{ maxWidth: 600, width: '100%' }}\n >\n <AlertTitle sx={{ fontWeight: 'bold' }}>Connection Error</AlertTitle>\n <Typography sx={{ mb: 2 }} variant=\"body2\">\n Failed to connect to LocalStack. Please ensure LocalStack is running and accessible.\n </Typography>\n <Typography sx={{ mb: 1 }} variant=\"body2\">\n <strong>To start LocalStack:</strong>\n </Typography>\n <Box\n component=\"pre\"\n sx={{\n backgroundColor: 'rgba(0, 0, 0, 0.05)',\n borderRadius: 1,\n fontSize: '0.875rem',\n p: 1,\n }}\n >\n localstack start\n </Box>\n {onRetry && (\n <Box sx={{ display: 'flex', justifyContent: 'flex-start', mt: 2 }}>\n <Button\n aria-label=\"Retry connection to LocalStack\"\n onClick={onRetry}\n variant=\"outlined\"\n >\n Retry Connection\n </Button>\n </Box>\n )}\n </Alert>\n </Box>\n )\n }\n\n // App Inspector disabled\n if (status?.status === 'DISABLED') {\n return (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n justifyContent: 'center',\n p: 4,\n }}\n >\n <Alert\n icon={<InfoOutlined fontSize=\"large\" />}\n severity=\"warning\"\n sx={{ maxWidth: 600, width: '100%' }}\n >\n <AlertTitle sx={{ fontWeight: 'bold' }}>App Inspector is Disabled</AlertTitle>\n <Typography sx={{ mb: 2 }} variant=\"body2\">\n App Inspector is currently disabled. Please enable it to view traces and spans.\n </Typography>\n <Typography sx={{ mb: 1 }} variant=\"body2\">\n <strong>To enable App Inspector at runtime:</strong>\n </Typography>\n <Box\n component=\"pre\"\n sx={{\n backgroundColor: 'rgba(0, 0, 0, 0.05)',\n borderRadius: 1,\n fontSize: '0.875rem',\n overflowX: 'auto',\n p: 1,\n }}\n >\n {String.raw`curl -X PUT http://localhost:4566${APPINSPECTOR_API_PREFIX}/status \\\n -H \"Content-Type: application/json\" \\\n -d '{\"status\": \"ENABLED\"}'`}\n </Box>\n <Typography sx={{ mb: 1, mt: 2 }} variant=\"body2\">\n <strong>To enable App Inspector persistently across restarts:</strong>\n </Typography>\n <Typography sx={{ mb: 1 }} variant=\"body2\">\n Set the environment variable:\n </Typography>\n <Box\n component=\"pre\"\n sx={{\n backgroundColor: 'rgba(0, 0, 0, 0.05)',\n borderRadius: 1,\n fontSize: '0.875rem',\n p: 1,\n }}\n >\n APPINSPECTOR=1\n </Box>\n {Boolean(status.note) && (\n <Typography sx={{ display: 'block', fontStyle: 'italic', mt: 2 }} variant=\"caption\">\n {status.note}\n </Typography>\n )}\n {onRetry && (\n <Box sx={{ display: 'flex', justifyContent: 'flex-start', mt: 2 }}>\n <Button\n aria-label=\"Check if App Inspector is enabled\"\n onClick={onRetry}\n variant=\"outlined\"\n >\n Check Status Again\n </Button>\n </Box>\n )}\n </Alert>\n </Box>\n )\n }\n\n // Generic error\n if (error) {\n return (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n justifyContent: 'center',\n p: 4,\n }}\n >\n <Alert\n icon={<ErrorOutline fontSize=\"large\" />}\n severity=\"error\"\n sx={{ maxWidth: 600, width: '100%' }}\n >\n <AlertTitle sx={{ fontWeight: 'bold' }}>Error</AlertTitle>\n <Typography sx={{ mb: 2 }} variant=\"body2\">\n {error.message}\n </Typography>\n {onRetry && (\n <Box sx={{ display: 'flex', justifyContent: 'flex-start', mt: 2 }}>\n <Button\n aria-label=\"Retry operation\"\n onClick={onRetry}\n variant=\"outlined\"\n >\n Retry\n </Button>\n </Box>\n )}\n </Alert>\n </Box>\n )\n }\n\n return <></>\n}\n","/**\n * Custom error classes for API error handling\n */\n\n/**\n * Error thrown when App Inspector is disabled\n */\nexport class AppInspectorDisabledError extends Error {\n constructor(message: string, cause?: Error) {\n super(message)\n this.name = 'AppInspectorDisabledError'\n this.cause = cause\n }\n}\n\n/**\n * Error thrown when App Inspector extension is not found (404 from AppInspector endpoints)\n */\nexport class AppInspectorNotFoundError extends Error {\n constructor(message: string, cause?: Error) {\n super(message)\n this.name = 'AppInspectorNotFoundError'\n this.cause = cause\n }\n}\n\n/**\n * Error thrown when connection to LocalStack fails (network errors)\n */\nexport class ConnectionError extends Error {\n constructor(message: string, cause?: Error) {\n super(message)\n this.name = 'ConnectionError'\n this.cause = cause\n }\n}\n","// AppInspector configuration\n\n/**\n * API Configuration\n */\nexport const APPINSPECTOR_API_PREFIX = '/_localstack/appinspector'\n\nexport const API_VERSION = 'v1'\n\nexport const API_ENDPOINTS = {\n EVENTS: '/traces/*/spans/*/events',\n ROOT: '/',\n SPANS: '/traces/*/spans',\n STATUS: '/status',\n TRACES: '/traces',\n} as const\n\nexport const getApiV1Endpoint = (endpoint: string): string => {\n return `/${API_VERSION}${endpoint}`\n}\n\nexport const getApiEndpoint = (endpoint: string): string => {\n // Status and root endpoints don't use versioning\n if (endpoint === API_ENDPOINTS.ROOT || endpoint === API_ENDPOINTS.STATUS) {\n return endpoint\n }\n // All other endpoints use v1 prefix\n return getApiV1Endpoint(endpoint)\n}\n\nexport type EndpointKey = keyof typeof API_ENDPOINTS\n\nexport const getAppInspectorApiUrl = (localstackEndpoint: string, endpoint: string): string => {\n return `${localstackEndpoint}${APPINSPECTOR_API_PREFIX}${getApiEndpoint(endpoint)}`\n}\n","import { useCallback, useEffect, useState } from 'react'\n\n/**\n * Custom hook for managing state that persists in localStorage\n * @param key - localStorage key\n * @param initialValue - default value if key doesn't exist\n * @returns [value, setValue] tuple similar to useState\n */\nexport function useLocalStorage<T>(key: string, initialValue: T): [T, (value: T) => void] {\n // Get initial value from localStorage or use default\n const [storedValue, setStoredValue] = useState<T>(() => {\n try {\n const item = globalThis.localStorage.getItem(key)\n return item ? (JSON.parse(item) as T) : initialValue\n }\n catch (error) {\n console.error(`Error reading localStorage key \"${key}\":`, error)\n return initialValue\n }\n })\n\n // Update localStorage when state changes\n const setValue = useCallback((value: T) => {\n try {\n setStoredValue(value)\n globalThis.localStorage.setItem(key, JSON.stringify(value))\n\n // Dispatch custom event to sync across tabs/components\n globalThis.dispatchEvent(new StorageEvent('storage', {\n key,\n newValue: JSON.stringify(value),\n }))\n }\n catch (error) {\n console.error(`Error setting localStorage key \"${key}\":`, error)\n }\n }, [key])\n\n // Listen for changes from other tabs/windows\n useEffect(() => {\n const handleStorageChange = (event: StorageEvent) => {\n if (event.key === key && event.newValue !== null) {\n try {\n setStoredValue(JSON.parse(event.newValue) as T)\n }\n catch (error) {\n console.error(`Error parsing localStorage key \"${key}\":`, error)\n }\n }\n }\n\n globalThis.addEventListener('storage', handleStorageChange)\n return () => {\n globalThis.removeEventListener('storage', handleStorageChange)\n }\n }, [key])\n\n return [storedValue, setValue]\n}\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { StatusResponse } from '@/types/api.ts'\nimport { useAppInspectorApi } from '@/api/use-api.tsx'\n\nexport interface Status {\n checking: boolean\n error: Error | undefined\n status: StatusResponse | undefined\n}\n\n/**\n * Hook to check status\n * Returns status information and whether it's currently checking\n */\nexport const useStatus = (): Status & { checkStatus: () => Promise<void> } => {\n const api = useAppInspectorApi()\n const [checking, setChecking] = useState(true) // Initialize as true since check runs on mount\n const [status, setStatus] = useState<StatusResponse | undefined>()\n const [error, setError] = useState<Error | undefined>()\n const hasFetchedReference = useRef(false)\n const abortControllerReference = useRef<AbortController | null>(null)\n\n const checkStatus = useCallback(async () => {\n // Cancel any in-flight request to prevent race conditions\n if (abortControllerReference.current) {\n abortControllerReference.current.abort()\n }\n\n const abortController = new AbortController()\n abortControllerReference.current = abortController\n\n setChecking(true)\n try {\n const response = await api.getStatus()\n // Only update state if this request wasn't aborted\n if (!abortController.signal.aborted) {\n setStatus(response)\n setError(undefined)\n }\n }\n catch (error_) {\n // Only update state if this request wasn't aborted\n if (!abortController.signal.aborted) {\n setError(error_ instanceof Error ? error_ : new Error('Unknown error'))\n setStatus(undefined)\n }\n }\n finally {\n // Only update state if this request wasn't aborted\n if (!abortController.signal.aborted) {\n setChecking(false)\n }\n }\n }, [api])\n\n useEffect(() => {\n // Only fetch once on mount to prevent infinite loop\n if (!hasFetchedReference.current) {\n hasFetchedReference.current = true\n void checkStatus()\n }\n }, [checkStatus])\n\n return { checking, checkStatus, error, status }\n}\n","import type { FC } from 'react'\nimport { ArrowBack } from '@mui/icons-material'\nimport { Box, Button, Drawer, Paper } from '@mui/material'\nimport { styled } from '@mui/material/styles'\nimport { ReactFlowProvider } from '@xyflow/react'\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { StatusResponse } from '@/types/api.ts'\nimport type { Span } from '@/types/spans.ts'\nimport { useAppInspectorApi } from '@/api/use-api.tsx'\nimport { EventDetails } from '@/components/event-details/event-details.tsx'\nimport { StatusMessage } from '@/components/status-message/status-message.tsx'\nimport { TraceGraph } from '@/components/trace-graph/trace-graph.tsx'\nimport { useLocalStorage } from '@/hooks/use-local-storage.tsx'\nimport { useStatus } from '@/hooks/use-status.tsx'\n\nconst HEADER_HEIGHT = 56\nconst DRAWER_WIDTH = '35%'\n\nconst Main = styled('main', { shouldForwardProp: property => property !== 'open' })<{\n open?: boolean\n}>(({ open, theme }) => ({\n flexGrow: 1,\n marginRight: `-${DRAWER_WIDTH}`,\n transition: theme.transitions.create('margin', {\n duration: theme.transitions.duration.leavingScreen,\n easing: theme.transitions.easing.sharp,\n }),\n ...(open && {\n marginRight: 0,\n transition: theme.transitions.create('margin', {\n duration: theme.transitions.duration.enteringScreen,\n easing: theme.transitions.easing.easeOut,\n }),\n }),\n}))\n\nconst StyledDrawer = styled(Drawer)(() => ({\n '& .MuiDrawer-paper': {\n bottom: 0,\n boxSizing: 'border-box',\n height: `calc(100% - ${HEADER_HEIGHT.toString()}px)`,\n overflowY: 'auto',\n top: 'auto',\n width: DRAWER_WIDTH,\n },\n 'flexShrink': 0,\n 'position': 'relative',\n 'width': DRAWER_WIDTH,\n}))\n\nexport const TraceGraphView: FC<{\n fetchError: Error | undefined\n fetchSpans: () => void\n handleClose: () => void\n handleEventSelect: (spanId: string) => void\n handleRetry: () => void\n loading: boolean\n navigateToSpansList: () => void\n open: boolean\n selectedEvent: Span | undefined\n spanId: string | undefined\n spans: Span[] | undefined\n status: StatusResponse | undefined\n statusError: Error | undefined\n traceId: string | undefined\n}> = ({\n fetchError,\n fetchSpans,\n handleClose,\n handleEventSelect,\n handleRetry,\n loading,\n navigateToSpansList,\n open,\n selectedEvent,\n spanId,\n spans,\n status,\n statusError,\n traceId,\n}) => {\n // Show helpful message if connection failed or AppInspector is disabled\n const shouldShowStatusMessage = Boolean(statusError) || (status?.status === 'DISABLED')\n\n return (\n <Box\n data-testid=\"trace-graph-page\"\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n gap: 2,\n overflow: 'hidden',\n }}\n >\n <Box sx={{ display: 'flex', width: '100%' }}>\n <Button onClick={() => { navigateToSpansList() }} startIcon={<ArrowBack />}>\n Go back\n </Button>\n <Box sx={{ flexGrow: 1 }} />\n </Box>\n <Paper\n sx={{\n display: 'flex',\n flexGrow: 1,\n overflow: 'hidden',\n position: 'relative',\n width: '100%',\n }}\n >\n {shouldShowStatusMessage\n ? (\n <StatusMessage\n error={statusError}\n onRetry={handleRetry}\n status={status}\n />\n )\n : (\n <>\n <Main open={open}>\n <Box\n sx={{\n height: '100%',\n overflow: 'auto',\n }}\n >\n {traceId !== undefined && (\n <ReactFlowProvider>\n <TraceGraph\n initialFocusEventId={spanId}\n onEventSelect={handleEventSelect}\n onRefresh={() => { fetchSpans() }}\n spans={{\n data: spans,\n error: fetchError,\n loading,\n }}\n />\n </ReactFlowProvider>\n )}\n </Box>\n </Main>\n <StyledDrawer anchor=\"right\" open={open} variant=\"persistent\">\n <EventDetails onClose={handleClose} selectedEvent={selectedEvent} />\n </StyledDrawer>\n </>\n )}\n </Paper>\n </Box>\n )\n}\n\nexport const TraceGraphPage: FC<{\n onClose?: () => void\n spanId?: string\n traceId: string\n}> = ({ onClose, spanId, traceId }) => {\n const api = useAppInspectorApi()\n const [spans, setSpans] = useState<Span[]>()\n const [loading, setLoading] = useState(false)\n\n const [includeReadOperations] = useLocalStorage('includeReadOperations', false)\n const [fetchError, setFetchError] = useState<Error>()\n const fetchSpans = useCallback(async () => {\n setLoading(true)\n try {\n const response = await api.getSpans({\n is_write_operation: includeReadOperations ? undefined : true,\n trace_id: traceId,\n })\n setSpans(response.spans)\n setFetchError(undefined)\n }\n catch (error) {\n console.error(error)\n setFetchError(error instanceof Error ? error : new Error('Unknown error', { cause: error }))\n }\n finally {\n setLoading(false)\n }\n }, [api, includeReadOperations, traceId])\n\n useEffect(() => {\n void fetchSpans()\n }, [fetchSpans])\n\n const [open, setOpen] = useState(true)\n const [selectedEvent, setSelectedEvent] = useState<Span | undefined>(() => spans?.find(span => span.span_id === spanId))\n\n const spansReference = useRef<Span[] | undefined>()\n useEffect(() => {\n if (!spansReference.current && spans) {\n setSelectedEvent(spans.find(span => span.span_id === spanId))\n spansReference.current = spans\n }\n }, [spans, setSelectedEvent, spanId])\n\n const { checkStatus, error: statusError, status } = useStatus()\n\n const handleEventSelect = useCallback((spanId: string) => {\n const span = spans?.find(s => s.span_id === spanId)\n setSelectedEvent(span)\n setOpen(true)\n }, [spans])\n\n const handleRetry = useCallback(() => {\n void checkStatus()\n }, [checkStatus])\n\n const navigateToSpansList = useCallback(() => {\n onClose?.()\n }, [onClose])\n\n return (\n <TraceGraphView\n fetchError={fetchError}\n fetchSpans={() => void fetchSpans()}\n handleClose={() => { setOpen(false) }}\n handleEventSelect={handleEventSelect}\n handleRetry={handleRetry}\n loading={loading}\n navigateToSpansList={navigateToSpansList}\n open={open}\n selectedEvent={selectedEvent}\n spanId={spanId ?? undefined}\n spans={spans}\n status={status}\n statusError={statusError}\n traceId={traceId}\n />\n )\n}\n","import type { FC, JSX } from 'react'\nimport { Box, Chip, Divider, Stack, Typography } from '@mui/material'\nimport { useMemo } from 'react'\n\nimport type { Span } from '@/types/spans.ts'\nimport { getEventGroupsByType } from '@/utils/event-utils.ts'\nimport { unixNanoToDate } from '@/utils/time.ts'\n\nimport { EventDetailsHeader } from './event-details-header.tsx'\nimport { EventSection } from './event-section.tsx'\nimport { ToggleSection } from './toggle-section.tsx'\n\ninterface EventDetailsProps {\n onClose?: () => void\n selectedEvent: Span | undefined\n}\n\nexport const EventDetails: FC<EventDetailsProps> = ({ onClose, selectedEvent }) => {\n const attributes = useMemo(() => {\n const attributes = Object.entries(selectedEvent?.attributes ?? {})\n return attributes.filter(([key]) => key !== 'localstack.aws.account_id' && key !== 'localstack.aws.service')\n }, [selectedEvent?.attributes])\n\n if (!selectedEvent) {\n return (\n <Box sx={{ p: 3, textAlign: 'center' }}>\n <Typography color=\"text.secondary\" variant=\"body2\">\n Select an event to view details\n </Typography>\n </Box>\n )\n }\n\n return (\n <Box data-testid=\"event-details\" sx={{ display: 'flex', flexDirection: 'column', height: '100%' }}>\n <EventDetailsHeader event={selectedEvent} onClose={onClose} />\n\n <Box sx={{ flexGrow: 1, overflow: 'auto', p: 2 }}>\n <Stack spacing={2}>\n {/* Basic Information */}\n <ToggleSection headline=\"Basic Information\">\n <Stack spacing={1}>\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Span ID\n </Typography>\n <Typography variant=\"body2\">{selectedEvent.span_id}</Typography>\n </Box>\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Trace ID\n </Typography>\n <Typography variant=\"body2\">\n {selectedEvent.trace_id}\n </Typography>\n </Box>\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Operation\n </Typography>\n <Typography variant=\"body2\">{selectedEvent.operation_name}</Typography>\n </Box>\n </Stack>\n </ToggleSection>\n\n <Divider />\n\n {/* Service Information */}\n <ToggleSection headline=\"Service Information\">\n <Stack spacing={1}>\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Service\n </Typography>\n <Typography variant=\"body2\">{selectedEvent.service_name}</Typography>\n </Box>\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Resource\n </Typography>\n <Typography variant=\"body2\">{selectedEvent.resource_name}</Typography>\n </Box>\n {Boolean(selectedEvent.region) && (\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Region\n </Typography>\n <Typography variant=\"body2\">{selectedEvent.region}</Typography>\n </Box>\n )}\n </Stack>\n </ToggleSection>\n\n <Divider />\n\n {/* Timing Information */}\n <ToggleSection headline=\"Timing\">\n <Stack spacing={1}>\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Start Time\n </Typography>\n <Typography variant=\"body2\">\n {unixNanoToDate(selectedEvent.start_time_unix_nano)?.toISOString()}\n </Typography>\n </Box>\n {Boolean(selectedEvent.end_time_unix_nano) && (\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Duration\n </Typography>\n <Typography variant=\"body2\">\n {((BigInt(selectedEvent.end_time_unix_nano) - BigInt(selectedEvent.start_time_unix_nano)) / BigInt('1000000')).toString()}\n {' '}\n ms\n </Typography>\n </Box>\n )}\n </Stack>\n </ToggleSection>\n\n <Divider />\n\n {/* Status */}\n <ToggleSection headline=\"Status\">\n <Stack direction=\"row\" spacing={1}>\n <Chip\n color={selectedEvent.status_code === 2 ? 'error' : (selectedEvent.status_code === 1 ? 'success' : 'default')}\n label={selectedEvent.status_code === 2 ? 'Error' : (selectedEvent.status_code === 1 ? 'OK' : 'Unset')}\n size=\"small\"\n />\n {Boolean(selectedEvent.status_message) && <Typography variant=\"body2\">{selectedEvent.status_message}</Typography>}\n </Stack>\n </ToggleSection>\n\n {/* Events */}\n {selectedEvent.events.length > 0 && (\n <>\n <Divider />\n <EventSection\n eventGroups={getEventGroupsByType(selectedEvent.events)}\n headline=\"Events\"\n />\n </>\n )}\n\n {/* Attributes */}\n {attributes.length > 0 && (\n <>\n <Divider />\n <ToggleSection headline=\"Attributes\">\n <Stack spacing={1}>\n {attributes.map(([key, value]) => (\n <Box key={key}>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n {key}\n </Typography>\n {renderKeyValue(key, value)}\n </Box>\n ))}\n </Stack>\n </ToggleSection>\n </>\n )}\n </Stack>\n </Box>\n </Box>\n )\n}\n\nfunction renderKeyValue(key: string, value: unknown): JSX.Element {\n if (typeof value === 'string' && (key === 'localstack.aws.service.request' || key === 'localstack.aws.service.response' || key === 'localstack.aws.service.exception')) {\n return (\n <Box sx={{ backgroundColor: theme => theme.palette.background.default, borderRadius: 1, p: 1 }}>\n <pre style={{ margin: 0, overflow: 'auto' }}>\n <Typography variant=\"body2\">\n {JSON.stringify(JSON.parse(value), undefined, 2)}\n </Typography>\n </pre>\n </Box>\n )\n }\n\n if (typeof value === 'boolean') {\n return <Typography variant=\"body2\">{value ? 'yes' : 'no'}</Typography>\n }\n\n return <Typography variant=\"body2\">{value}</Typography>\n}\n","export type IAMPermissionStatus\n = | 'explicitly_allowed'\n | 'explicitly_denied'\n | 'implicitly_allowed'\n | 'implicitly_denied'\n\nexport interface IAMPolicyEvaluationPayload {\n explicit_allow_count?: number\n explicit_allows?: {\n account: string\n action: string\n resource: string\n }[]\n explicit_denies?: {\n account: string\n action: string\n resource: string\n }[]\n explicit_deny_count?: number\n implicit_denies?: {\n action: string\n resource: string\n }[]\n implicit_deny_count?: number\n is_allowed: boolean\n operation: string\n principal_account: string\n principal_arn: string\n service: string\n}\n\nexport interface ParsedIAMEvent {\n details: {\n actions?: string[]\n explicitAllows?: number\n explicitDenies?: number\n implicitDenies?: number\n resources?: string[]\n }\n operation: string\n permission: IAMPermissionStatus\n principal: string\n service: string\n}\n\n/**\n * Determines the permission status based on IAM policy evaluation\n */\nexport function determinePermissionStatus(payload: IAMPolicyEvaluationPayload): IAMPermissionStatus {\n // If explicitly denied, that takes precedence\n if (payload.explicit_deny_count && payload.explicit_deny_count > 0) {\n return 'explicitly_denied'\n }\n\n // If allowed and has explicit allows\n if (payload.is_allowed && payload.explicit_allow_count && payload.explicit_allow_count > 0) {\n return 'explicitly_allowed'\n }\n\n // If allowed but no explicit allows (implicitly allowed)\n if (payload.is_allowed) {\n return 'implicitly_allowed'\n }\n\n // If not allowed and no explicit denies, it's implicitly denied\n return 'implicitly_denied'\n}\n\n/**\n * Format permission status for display\n */\nexport function formatPermissionStatus(status: IAMPermissionStatus): string {\n switch (status) {\n case 'explicitly_allowed': {\n return 'Explicitly Allowed'\n }\n case 'explicitly_denied': {\n return 'Explicitly Denied'\n }\n case 'implicitly_allowed': {\n return 'Implicitly Allowed'\n }\n case 'implicitly_denied': {\n return 'Implicitly Denied'\n }\n }\n}\n\n/**\n * Get MUI theme color for permission status.\n *\n * Returns MUI theme color paths that resolve to specific colors in the theme:\n * - 'success.main': Green color for allowed permissions\n * - 'error.main': Red color for denied permissions\n * - 'warning.main': Orange/yellow color for implicitly denied permissions\n *\n * These values are used with MUI's sx prop and resolve to actual colors from the theme.\n */\nexport function getPermissionStatusColor(status: IAMPermissionStatus): string {\n switch (status) {\n case 'explicitly_allowed':\n case 'implicitly_allowed': {\n return 'success.main'\n }\n case 'explicitly_denied': {\n return 'error.main'\n }\n case 'implicitly_denied': {\n return 'warning.main'\n }\n }\n}\n\n/**\n * Parse IAM policy evaluation event payload\n */\nexport function parseIAMEvent(payloadString: string): ParsedIAMEvent | undefined {\n try {\n const payload = JSON.parse(payloadString) as IAMPolicyEvaluationPayload\n\n const permission = determinePermissionStatus(payload)\n\n // Extract actions and resources\n const actions: string[] = []\n const resources: string[] = []\n\n if (payload.explicit_allows) {\n for (const allow of payload.explicit_allows) {\n if (!actions.includes(allow.action)) actions.push(allow.action)\n if (!resources.includes(allow.resource)) resources.push(allow.resource)\n }\n }\n\n if (payload.explicit_denies) {\n for (const deny of payload.explicit_denies) {\n if (!actions.includes(deny.action)) actions.push(deny.action)\n if (!resources.includes(deny.resource)) resources.push(deny.resource)\n }\n }\n\n if (payload.implicit_denies) {\n for (const deny of payload.implicit_denies) {\n if (!actions.includes(deny.action)) actions.push(deny.action)\n if (!resources.includes(deny.resource)) resources.push(deny.resource)\n }\n }\n\n return {\n details: {\n actions,\n explicitAllows: payload.explicit_allow_count,\n explicitDenies: payload.explicit_deny_count,\n implicitDenies: payload.implicit_deny_count,\n resources,\n },\n operation: payload.operation,\n permission,\n principal: payload.principal_arn,\n service: payload.service,\n }\n }\n catch (error) {\n console.error('Error parsing IAM event payload:', error)\n return undefined\n }\n}\n","import type { Event } from '@/types/events'\n\nimport { formatPermissionStatus, parseIAMEvent } from './iam-utils.ts'\n\nexport interface ParsedEventMessage {\n details: string\n headline: string\n message: string\n}\n\n// Event parser for IAM-related events\nconst iamEventParser = (eventName: string, attributes: null | Record<string, unknown>): ParsedEventMessage => {\n // Try to parse IAM policy evaluation payload\n if (attributes?.payload && typeof attributes.payload === 'string') {\n const parsedIAM = parseIAMEvent(attributes.payload)\n\n if (parsedIAM) {\n const headline = `${parsedIAM.service}:${parsedIAM.operation} - ${formatPermissionStatus(parsedIAM.permission)}`\n\n const messageParts = [`Principal: ${parsedIAM.principal}`]\n\n if (parsedIAM.details.actions && parsedIAM.details.actions.length > 0) {\n messageParts.push(`Actions: ${parsedIAM.details.actions.join(', ')}`)\n }\n\n if (parsedIAM.details.resources && parsedIAM.details.resources.length > 0) {\n messageParts.push(`Resources: ${parsedIAM.details.resources.join(', ')}`)\n }\n\n const detailsParts = []\n if (parsedIAM.details.explicitAllows !== undefined) {\n detailsParts.push(`Explicit Allows: ${String(parsedIAM.details.explicitAllows)}`)\n }\n if (parsedIAM.details.explicitDenies !== undefined) {\n detailsParts.push(`Explicit Denies: ${String(parsedIAM.details.explicitDenies)}`)\n }\n if (parsedIAM.details.implicitDenies !== undefined) {\n detailsParts.push(`Implicit Denies: ${String(parsedIAM.details.implicitDenies)}`)\n }\n\n return {\n details: detailsParts.join('\\n'),\n headline,\n message: messageParts.join('\\n'),\n }\n }\n }\n\n // Fallback to simple parsing\n const headline = eventName || 'IAM Event'\n const message = typeof attributes?.message === 'string' ? attributes.message : ''\n const details = typeof attributes?.details === 'string' ? attributes.details : ''\n\n return { details, headline, message }\n}\n\n// Default event parser for generic events\nconst defaultEventParser = (eventName: string, attributes: null | Record<string, unknown>): ParsedEventMessage => {\n const headline = eventName || 'Event'\n const message = typeof attributes?.message === 'string' ? attributes.message : ''\n const details = JSON.stringify(attributes ?? {}, undefined, 2)\n\n return { details, headline, message }\n}\n\n// Map event types to their specific parsers\nconst eventParsers: Record<string, (name: string, attributes: null | Record<string, unknown>) => ParsedEventMessage> = {\n 'iam.error': iamEventParser,\n 'iam.event': iamEventParser,\n 'iam.warning': iamEventParser,\n}\n\nexport const parseEventMessage = (event: Event): ParsedEventMessage => {\n if (event.event_type && event.name) {\n try {\n const parser = eventParsers[event.event_type] ?? defaultEventParser\n return parser(event.name, event.attributes)\n }\n catch (error) {\n console.error(`Error parsing event for type ${event.event_type}:`, error)\n return {\n details: '',\n headline: event.name || 'Unknown Event',\n message: JSON.stringify(event.attributes),\n }\n }\n }\n\n return {\n details: JSON.stringify(event.attributes ?? {}),\n headline: event.name || 'Event',\n message: typeof event.attributes?.message === 'string' ? event.attributes.message : '',\n }\n}\n\n// TODO: Consider aligning EventLevel numeric values with status system\n// or migrating to string literals ('error' | 'info' | 'warning' | 'permission')\n// for easier maintenance\nexport const EventLevel = {\n LevelError: 4,\n LevelInfo: 1,\n LevelNone: 0,\n LevelPermission: 2,\n LevelWarning: 3,\n} as const\n\nexport type EventGroup = 'error' | 'info' | 'permission' | 'warning'\n\nexport type EventLevel = typeof EventLevel[keyof typeof EventLevel]\n\nexport const getEventLevel = (eventType: null | string | undefined): EventLevel => {\n if (!eventType) return EventLevel.LevelInfo\n\n if (eventType.includes('error')) return EventLevel.LevelError\n if (eventType.includes('warning')) return EventLevel.LevelWarning\n if (eventType.includes('iam')) return EventLevel.LevelPermission\n\n return EventLevel.LevelInfo\n}\n\nexport const getEventGroup = (eventType: null | string | undefined): EventGroup => {\n if (!eventType) return 'info'\n\n if (eventType.includes('error')) return 'error'\n if (eventType.includes('warning')) return 'warning'\n if (eventType.includes('iam')) return 'permission'\n\n return 'info'\n}\n\nexport interface GroupedEvents {\n errors?: Event[]\n info?: Event[]\n permissions?: Event[]\n warnings?: Event[]\n}\n\nexport const getEventGroupsByType = (events: Event[]): GroupedEvents => {\n if (events.length === 0) {\n return {}\n }\n\n const groups: GroupedEvents = {}\n\n for (const event of events) {\n const group = getEventGroup(event.event_type)\n\n switch (group) {\n case 'error': {\n groups.errors = [...(groups.errors ?? []), event]\n break\n }\n case 'permission': {\n groups.permissions = [...(groups.permissions ?? []), event]\n break\n }\n case 'warning': {\n groups.warnings = [...(groups.warnings ?? []), event]\n break\n }\n default: {\n groups.info = [...(groups.info ?? []), event]\n }\n }\n }\n\n return groups\n}\n\nexport const calculateHighestEventLevel = (events: Event[]): EventLevel => {\n if (events.length === 0) return EventLevel.LevelNone\n\n const eventLevels = events.map(event => getEventLevel(event.event_type))\n return Math.max(...eventLevels) as EventLevel\n}\n","/**\n * Converts a Unix nanosecond timestamp string to a JavaScript Date object\n * @param unixNanoString Unix timestamp in nanoseconds as a string\n * @returns Date object or undefined if input is null/empty\n */\nexport function unixNanoToDate(unixNanoString: null | string): Date | undefined {\n const milliseconds = unixNanoToMilliseconds(unixNanoString)\n if (!milliseconds) return undefined\n return new Date(milliseconds)\n}\n\nexport function unixNanoToMilliseconds(unixNanoString: null | string): number | undefined {\n if (!unixNanoString) return undefined\n // Use BigInt to safely handle large nanosecond values, then convert to milliseconds\n return Number(BigInt(unixNanoString) / BigInt('1000000'))\n}\n","import type { FC } from 'react'\nimport { Close } from '@mui/icons-material'\nimport { Box, IconButton, Typography } from '@mui/material'\n\nimport type { Span } from '@/types/spans.ts'\n\ninterface EventDetailsHeaderProps {\n event: Span\n onClose?: () => void\n}\n\nexport const EventDetailsHeader: FC<EventDetailsHeaderProps> = ({ event, onClose }) => {\n return (\n <Box\n sx={{\n alignItems: 'center',\n borderBottom: '1px solid',\n borderColor: 'divider',\n display: 'flex',\n justifyContent: 'space-between',\n p: 2,\n }}\n >\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"h6\">\n Event Details\n </Typography>\n <Typography color=\"text.secondary\" variant=\"body2\">\n {event.service_name}\n {' '}\n -\n {event.operation_name}\n </Typography>\n </Box>\n {onClose && (\n <IconButton onClick={onClose} size=\"small\">\n <Close />\n </IconButton>\n )}\n </Box>\n )\n}\n","import type { FC } from 'react'\nimport { Box } from '@mui/material'\n\nimport type { GroupedEvents } from '@/utils/event-utils.ts'\n\nimport { EventDetail } from './event-detail.tsx'\nimport { ToggleSection } from './toggle-section.tsx'\n\ninterface EventSectionProps {\n eventGroups: GroupedEvents\n headline: string\n}\n\nexport const EventSection: FC<EventSectionProps> = ({\n eventGroups,\n headline,\n}) => (\n <ToggleSection headline={headline}>\n <Box>\n {eventGroups.errors && (\n <EventDetail\n displayText=\"Error\"\n events={eventGroups.errors}\n type=\"error\"\n />\n )}\n {eventGroups.warnings && (\n <EventDetail\n displayText=\"Warning\"\n events={eventGroups.warnings}\n type=\"warning\"\n />\n )}\n {eventGroups.permissions && (\n <EventDetail\n displayText=\"IAM Permission\"\n events={eventGroups.permissions}\n type=\"permission\"\n />\n )}\n {eventGroups.info && (\n <EventDetail\n displayText=\"Info\"\n events={eventGroups.info}\n type=\"info\"\n />\n )}\n </Box>\n </ToggleSection>\n)\n","import type { FC } from 'react'\nimport { KeyboardArrowDown, KeyboardArrowRight } from '@mui/icons-material'\nimport { Box, Grid, IconButton, Typography } from '@mui/material'\nimport { useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { Event } from '@/types/events'\nimport type { EventGroup } from '@/utils/event-utils.ts'\nimport { EventLevel, parseEventMessage } from '@/utils/event-utils.ts'\n\nimport { StatusIcon } from '../status-icon.tsx'\nimport { IAMEventDetail } from './iam-event-detail.tsx'\nimport { IAMPermissionDetail } from './iam-permission-detail.tsx'\n\ninterface DetailRowProps {\n content: React.ReactNode | string\n label: string\n}\n\nconst DetailRow: FC<DetailRowProps> = ({ content, label }) => (\n <Grid container spacing={0} sx={{ mb: 1 }}>\n <Grid item sx={{ pr: 1 }} xs={3}>\n <Typography\n sx={{\n color: 'text.primary',\n fontWeight: 600,\n }}\n variant=\"body1\"\n >\n {label}\n </Typography>\n </Grid>\n <Grid item xs={9}>\n {typeof content === 'string'\n ? (\n <Typography\n sx={{\n color: 'text.primary',\n whiteSpace: 'pre-wrap',\n }}\n variant=\"body1\"\n >\n {content}\n </Typography>\n )\n : (\n content\n )}\n </Grid>\n </Grid>\n)\n\ninterface EventMessageProps {\n event: Event\n}\n\nconst EventMessage: FC<EventMessageProps> = ({ event }) => {\n const [isOpen, setIsOpen] = useState(false)\n const [isOverflowing, setIsOverflowing] = useState(false)\n const textReference = useRef<HTMLDivElement>(null)\n\n const parsedMessage = useMemo(() => parseEventMessage(event), [event])\n\n // Check if this is an IAM policy evaluation event\n const isIAMPolicyEvent = useMemo(\n () => event.event_type === 'iam.policy_evaluation'\n && event.attributes?.payload\n && typeof event.attributes.payload === 'string',\n [event],\n )\n\n useEffect(() => {\n const checkOverflow = () => {\n const element = textReference.current\n if (element) {\n setIsOverflowing(element.scrollWidth > element.clientWidth)\n }\n }\n\n checkOverflow()\n window.addEventListener('resize', checkOverflow)\n return () => {\n window.removeEventListener('resize', checkOverflow)\n }\n }, [parsedMessage.headline])\n\n // Show toggle if headline overflows OR if additional content exists\n const hasAdditionalContent = useMemo(\n () => parsedMessage.message || parsedMessage.details || isIAMPolicyEvent,\n [parsedMessage.message, parsedMessage.details, isIAMPolicyEvent],\n )\n const shouldShowToggle = useMemo(\n () => isOverflowing || hasAdditionalContent,\n [isOverflowing, hasAdditionalContent],\n )\n\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column' }}>\n <Box sx={{ alignItems: 'flex-start', display: 'flex' }}>\n {Boolean(shouldShowToggle) && (\n <IconButton\n onClick={() => { setIsOpen(!isOpen) }}\n size=\"small\"\n sx={{ mr: 1, mt: -0.5, p: 0 }}\n >\n {isOpen ? <KeyboardArrowDown /> : <KeyboardArrowRight />}\n </IconButton>\n )}\n <Typography\n ref={textReference}\n sx={{\n color: 'text.primary',\n fontWeight: 600,\n maxWidth: '100%',\n ml: shouldShowToggle ? 0 : 4,\n overflow: 'hidden',\n textOverflow: isOpen ? 'clip' : 'ellipsis',\n whiteSpace: isOpen ? 'pre-wrap' : 'nowrap',\n }}\n variant=\"body1\"\n >\n {parsedMessage.headline}\n </Typography>\n </Box>\n\n {isOpen && (\n <Box sx={{ ml: 4, mt: 1 }}>\n {/* Show IAM-specific detailed view if available */}\n {isIAMPolicyEvent\n ? (\n <IAMEventDetail event={event} />\n )\n : (\n <>\n {/* Only show message and details if they exist */}\n {Boolean(parsedMessage.message) && (\n <DetailRow content={parsedMessage.message} label=\"Message:\" />\n )}\n {Boolean(parsedMessage.details) && (\n <DetailRow content={parsedMessage.details} label=\"Details:\" />\n )}\n </>\n )}\n </Box>\n )}\n </Box>\n )\n}\n\n// Map EventGroup to EventLevel\nconst getEventLevelFromGroup = (group: EventGroup): EventLevel => {\n switch (group) {\n case 'error': {\n return EventLevel.LevelError\n }\n case 'info': {\n return EventLevel.LevelInfo\n }\n case 'permission': {\n return EventLevel.LevelPermission\n }\n case 'warning': {\n return EventLevel.LevelWarning\n }\n default: {\n return EventLevel.LevelNone\n }\n }\n}\n\ninterface EventDetailProps {\n displayText: string\n events: Event[]\n type: EventGroup\n}\n\nexport const EventDetail: FC<EventDetailProps> = ({\n displayText,\n events,\n type,\n}) => {\n // Special handling for IAM permission events\n if (type === 'permission') {\n return (\n <Box>\n <Box\n sx={{\n alignItems: 'left',\n display: 'flex',\n mb: 1,\n }}\n >\n <Typography\n sx={{\n alignItems: 'left',\n display: 'flex',\n flexGrow: 1,\n fontWeight: 600,\n }}\n variant=\"subtitle1\"\n >\n {displayText}\n </Typography>\n </Box>\n\n <IAMPermissionDetail events={events} />\n </Box>\n )\n }\n\n const eventLevel = getEventLevelFromGroup(type)\n\n return (\n <Box>\n <Box\n sx={{\n alignItems: 'left',\n cursor: 'pointer',\n display: 'flex',\n mb: 1,\n }}\n >\n <StatusIcon errorLevel={eventLevel} />\n <Typography\n sx={{\n alignItems: 'left',\n color: 'text.secondary',\n display: 'flex',\n flexGrow: 1,\n fontWeight: 600,\n ml: 1,\n mr: 2,\n }}\n variant=\"subtitle1\"\n >\n {displayText}\n </Typography>\n </Box>\n\n <Box sx={{ mt: 2 }}>\n {events.map(event => (\n <Box\n key={`${event.span_id}-${event.event_id}`}\n sx={{\n maxWidth: '100%',\n mb: 1,\n }}\n >\n <EventMessage event={event} />\n </Box>\n ))}\n </Box>\n </Box>\n )\n}\n","import type { FC } from 'react'\nimport { Cancel, CheckCircle, Error, Info, RemoveCircle } from '@mui/icons-material'\nimport { Box } from '@mui/material'\n\nimport type { Event } from '@/types/events'\nimport type { EventLevel } from '@/utils/event-utils.ts'\nimport { calculateHighestEventLevel, EventLevel as EL } from '@/utils/event-utils.ts'\n\ninterface StatusIconProps {\n errorLevel: EventLevel\n}\n\nexport const StatusIcon: FC<StatusIconProps> = ({ errorLevel }) => {\n switch (errorLevel) {\n case EL.LevelError: {\n return <Cancel sx={{ color: 'red' }} />\n }\n case EL.LevelInfo: {\n return <Info sx={{ color: 'gray' }} />\n }\n case EL.LevelPermission: {\n return <RemoveCircle sx={{ color: 'blue' }} />\n }\n case EL.LevelWarning: {\n return <Error sx={{ color: 'orange' }} />\n }\n default: {\n return <CheckCircle sx={{ color: 'lightgray' }} />\n }\n }\n}\n\ninterface StatusCellProps {\n events: Event[]\n}\n\nexport const StatusCell: FC<StatusCellProps> = ({ events }) => (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n }}\n >\n <StatusIcon errorLevel={calculateHighestEventLevel(events)} />\n </Box>\n)\n","import type { FC } from 'react'\nimport { CheckCircle, Error as ErrorIcon, Warning } from '@mui/icons-material'\nimport { Box, Chip, Grid, Typography } from '@mui/material'\n\nimport type { Event } from '@/types/events'\nimport type { IAMPermissionStatus } from '@/utils/iam-utils.ts'\nimport { formatPermissionStatus, getPermissionStatusColor, parseIAMEvent } from '@/utils/iam-utils.ts'\n\ninterface IAMEventDetailProps {\n event: Event\n}\n\nconst DetailRow: FC<{ content: React.ReactNode | string, label: string }> = ({ content, label }) => (\n <Grid container spacing={0} sx={{ mb: 1 }}>\n <Grid item sx={{ pr: 1 }} xs={3}>\n <Typography\n sx={{\n color: 'text.secondary',\n fontWeight: 600,\n }}\n variant=\"body2\"\n >\n {label}\n </Typography>\n </Grid>\n <Grid item xs={9}>\n {typeof content === 'string'\n ? (\n <Typography\n sx={{\n color: 'text.primary',\n wordBreak: 'break-word',\n }}\n variant=\"body2\"\n >\n {content}\n </Typography>\n )\n : (\n content\n )}\n </Grid>\n </Grid>\n)\n\nconst PermissionIcon: FC<{ status: IAMPermissionStatus }> = ({ status }) => {\n switch (status) {\n case 'explicitly_allowed':\n case 'implicitly_allowed': {\n return <CheckCircle sx={{ color: 'success.main', fontSize: '1rem' }} />\n }\n case 'explicitly_denied': {\n return <ErrorIcon sx={{ color: 'error.main', fontSize: '1rem' }} />\n }\n case 'implicitly_denied': {\n return <Warning sx={{ color: 'warning.main', fontSize: '1rem' }} />\n }\n }\n}\n\nexport const IAMEventDetail: FC<IAMEventDetailProps> = ({ event }) => {\n // Parse IAM event payload\n const payloadString = event.attributes?.payload as string | undefined\n if (!payloadString) {\n return (\n <Box sx={{ p: 2 }}>\n <Typography sx={{ fontWeight: 600 }} variant=\"body2\">\n No IAM policy evaluation data available\n </Typography>\n </Box>\n )\n }\n\n const parsedIAM = parseIAMEvent(payloadString)\n\n if (!parsedIAM) {\n return (\n <Box sx={{ p: 2 }}>\n <Typography sx={{ fontWeight: 600 }} variant=\"body2\">\n Failed to parse IAM event data\n </Typography>\n </Box>\n )\n }\n\n return (\n <Box sx={{ p: 2 }}>\n {/* Permission Status */}\n <Box sx={{ mb: 2 }}>\n <Chip\n icon={<PermissionIcon status={parsedIAM.permission} />}\n label={formatPermissionStatus(parsedIAM.permission)}\n size=\"small\"\n sx={{\n borderColor: getPermissionStatusColor(parsedIAM.permission),\n color: getPermissionStatusColor(parsedIAM.permission),\n }}\n variant=\"outlined\"\n />\n </Box>\n\n {/* Basic Info */}\n <DetailRow content={`${parsedIAM.service}:${parsedIAM.operation}`} label=\"Operation\" />\n <DetailRow content={parsedIAM.principal} label=\"Principal\" />\n\n {/* Actions */}\n {parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && (\n <DetailRow\n content={(\n <Box>\n {parsedIAM.details.actions.map(action => (\n <Typography\n key={action}\n sx={{\n color: 'text.primary',\n }}\n variant=\"body2\"\n >\n {action}\n </Typography>\n ))}\n </Box>\n )}\n label=\"Actions\"\n />\n )}\n\n {/* Resources */}\n {parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && (\n <DetailRow\n content={(\n <Box>\n {parsedIAM.details.resources.map(resource => (\n <Typography\n key={resource}\n sx={{\n color: 'text.primary',\n wordBreak: 'break-all',\n }}\n variant=\"body2\"\n >\n {resource}\n </Typography>\n ))}\n </Box>\n )}\n label=\"Resources\"\n />\n )}\n\n {/* Policy Counts */}\n <Box sx={{ mt: 2 }}>\n <Typography sx={{ fontWeight: 600, mb: 1 }} variant=\"caption\">\n Policy Evaluation\n </Typography>\n <Grid container spacing={2}>\n {parsedIAM.details.explicitAllows !== undefined && (\n <Grid item xs={4}>\n <Box sx={{ textAlign: 'center' }}>\n <Typography color=\"success.main\" sx={{ fontWeight: 'bold' }} variant=\"h6\">\n {parsedIAM.details.explicitAllows}\n </Typography>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Explicit Allows\n </Typography>\n </Box>\n </Grid>\n )}\n {parsedIAM.details.explicitDenies !== undefined && (\n <Grid item xs={4}>\n <Box sx={{ textAlign: 'center' }}>\n <Typography color=\"error.main\" sx={{ fontWeight: 'bold' }} variant=\"h6\">\n {parsedIAM.details.explicitDenies}\n </Typography>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Explicit Denies\n </Typography>\n </Box>\n </Grid>\n )}\n {parsedIAM.details.implicitDenies !== undefined && (\n <Grid item xs={4}>\n <Box sx={{ textAlign: 'center' }}>\n <Typography color=\"warning.main\" sx={{ fontWeight: 'bold' }} variant=\"h6\">\n {parsedIAM.details.implicitDenies}\n </Typography>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Implicit Denies\n </Typography>\n </Box>\n </Grid>\n )}\n </Grid>\n </Box>\n </Box>\n )\n}\n","import type { FC } from 'react'\nimport { KeyboardArrowDown, KeyboardArrowRight } from '@mui/icons-material'\nimport { Box, Chip, IconButton, Typography } from '@mui/material'\nimport { useMemo, useState } from 'react'\n\nimport type { Event } from '@/types/events'\nimport type { IAMPermissionStatus } from '@/utils/iam-utils.ts'\nimport { formatPermissionStatus, parseIAMEvent } from '@/utils/iam-utils.ts'\n\ninterface IAMPermissionDetailProps {\n events: Event[]\n}\n\n// Determine chip color based on permission status\nconst getChipColors = (status: IAMPermissionStatus) => {\n const isAllowed = status === 'explicitly_allowed' || status === 'implicitly_allowed'\n return {\n backgroundColor: isAllowed ? 'success.main' : 'error.main',\n color: 'white',\n }\n}\n\nconst IAMPermissionItem: FC<{ event: Event }> = ({ event }) => {\n const [isOpen, setIsOpen] = useState(false)\n\n // Parse IAM event payload\n const parsedData = useMemo(() => {\n const payloadString = event.attributes?.payload as string | undefined\n if (!payloadString) {\n return\n }\n\n const parsedIAM = parseIAMEvent(payloadString)\n if (!parsedIAM) {\n return\n }\n\n return {\n chipColors: getChipColors(parsedIAM.permission),\n parsedIAM,\n }\n }, [event.attributes?.payload])\n\n if (!parsedData) {\n // eslint-disable-next-line unicorn/no-null\n return null\n }\n\n const { chipColors, parsedIAM } = parsedData\n\n return (\n <Box sx={{ mb: 1 }}>\n <Box sx={{ alignItems: 'center', display: 'flex' }}>\n <IconButton onClick={() => { setIsOpen(!isOpen) }} size=\"small\" sx={{ mr: 1, p: 0 }}>\n {isOpen ? <KeyboardArrowDown /> : <KeyboardArrowRight />}\n </IconButton>\n\n <Chip\n label={formatPermissionStatus(parsedIAM.permission)}\n size=\"small\"\n sx={{\n ...chipColors,\n fontWeight: 500,\n }}\n />\n </Box>\n\n {isOpen && (\n <Box sx={{ ml: 4, mt: 1 }}>\n <Box>\n <Typography sx={{ fontWeight: 600 }} variant=\"caption\">\n Principal\n </Typography>\n <Typography variant=\"body2\">\n {parsedIAM.principal}\n </Typography>\n </Box>\n </Box>\n )}\n </Box>\n )\n}\n\nexport const IAMPermissionDetail: FC<IAMPermissionDetailProps> = ({ events }) => (\n <Box sx={{ mt: 2 }}>\n {events.map(event => (\n <IAMPermissionItem event={event} key={`${event.span_id}-${event.event_id}`} />\n ))}\n </Box>\n)\n","import type { FC, ReactNode } from 'react'\nimport { KeyboardArrowDown, KeyboardArrowRight } from '@mui/icons-material'\nimport { Box, Typography } from '@mui/material'\nimport { useState } from 'react'\n\nexport interface ToggleSectionProps {\n children: ReactNode\n headline: string\n initialOpen?: boolean\n}\n\nexport const ToggleSection: FC<ToggleSectionProps> = ({ children, headline, initialOpen = true }) => {\n const [isOpen, setIsOpen] = useState(initialOpen)\n\n return (\n <Box sx={{ mt: 4 }}>\n {/* <Divider sx={{ mb: 2, mx: -2 }} /> */}\n <Box\n onClick={() => { setIsOpen(!isOpen) }}\n sx={{\n cursor: 'pointer',\n mb: 1,\n }}\n >\n <Box\n role=\"button\"\n sx={{\n alignItems: 'center',\n display: 'flex',\n gap: 1,\n }}\n >\n <Typography sx={{ fontWeight: 600 }} variant=\"subtitle2\">\n {headline}\n </Typography>\n {isOpen\n ? (\n <KeyboardArrowDown sx={{ color: 'text.secondary', height: 20, width: 20 }} />\n )\n : (\n <KeyboardArrowRight sx={{ color: 'text.secondary', height: 20, width: 20 }} />\n )}\n </Box>\n </Box>\n {isOpen && <Box>{children}</Box>}\n </Box>\n )\n}\n","import '@xyflow/react/dist/base.css'\n\nimport './xyflow/style.css'\n\nimport type { Edge, NodeTypes } from '@xyflow/react'\nimport type { FC, ReactElement } from 'react'\nimport { Alert, Button, useTheme } from '@mui/material'\nimport { Background, ReactFlow, useNodesState } from '@xyflow/react'\nimport { useEffect, useState } from 'react'\n\nimport type { Span } from '@/types/spans.ts'\nimport type { ServiceNodeData } from './service-node.tsx'\n\nimport { ServiceNode } from './service-node.tsx'\nimport { generateNodesAndEdges, getLayoutedNodesAndEdges } from './utils.ts'\nimport { Controls } from './xyflow/controls.tsx'\n\nconst nodeTypes = {\n service: ServiceNode,\n} satisfies NodeTypes\n\ntype SpanWithChildren = Span & {\n children?: SpanWithChildren[]\n}\n\ninterface TraceGraphProps {\n initialFocusEventId?: string\n onEventSelect: (spanId: string) => void\n onRefresh: () => void\n spans: {\n data: Span[] | undefined\n error: Error | undefined\n loading: boolean\n }\n}\n\nexport const TraceGraph: FC<TraceGraphProps> = ({\n initialFocusEventId,\n onEventSelect,\n onRefresh,\n spans,\n}): ReactElement => {\n const [nodes, setNodes, onNodesChange] = useNodesState<ServiceNodeData>([])\n const [edges, setEdges] = useState<Edge[]>([])\n\n useEffect(() => {\n const spansMap = new Map<string, SpanWithChildren>()\n const rootSpans: SpanWithChildren[] = []\n\n // First pass: create map of all spans\n for (const span of spans.data ?? []) {\n spansMap.set(span.span_id, { ...span, children: [] })\n }\n\n // Second pass: build hierarchy\n for (const span of spans.data ?? []) {\n const currentSpan = spansMap.get(span.span_id)\n if (!currentSpan) continue\n\n if (span.parent_span_id && spansMap.has(span.parent_span_id)) {\n const parentSpan = spansMap.get(span.parent_span_id)\n if (parentSpan) {\n parentSpan.children ??= []\n parentSpan.children.push(currentSpan)\n }\n }\n else {\n // This is a root span (no parent or parent not in trace)\n rootSpans.push(currentSpan)\n }\n }\n\n // Generate nodes and edges from the hierarchical structure\n let allNodes: ServiceNodeData[] = []\n let allEdges: Edge[] = []\n\n for (const rootSpan of rootSpans) {\n const { edges: newEdges, nodes: newNodes } = generateNodesAndEdges(rootSpan)\n allNodes = [...allNodes, ...newNodes]\n allEdges = [...allEdges, ...newEdges]\n }\n\n const { edges: layoutedEdges, nodes: layoutedNodes } = getLayoutedNodesAndEdges(allNodes, allEdges)\n\n for (const node of layoutedNodes) {\n if (node.id === initialFocusEventId) {\n node.selected = true\n }\n }\n\n setNodes(layoutedNodes)\n setEdges(layoutedEdges)\n }, [spans.data, initialFocusEventId, setNodes])\n\n const theme = useTheme()\n\n return (\n <>\n {spans.error && (\n <Alert\n action={\n <Button onClick={() => { onRefresh() }}>Retry</Button>\n }\n severity=\"error\"\n >\n Unexpected error:\n {' '}\n {spans.error.message}\n </Alert>\n )}\n\n <ReactFlow\n data-testid=\"trace-graph\"\n edges={edges}\n fitView\n fitViewOptions={initialFocusEventId ? { maxZoom: 1, nodes: [{ id: initialFocusEventId }], padding: 0.2 } : undefined}\n maxZoom={1.5}\n minZoom={0.1}\n nodes={nodes}\n nodesDraggable={false}\n nodeTypes={nodeTypes}\n onNodeClick={(_event, node) => { onEventSelect(node.data.event.span_id) }}\n onNodesChange={onNodesChange}\n selectNodesOnDrag={false}\n\n >\n <Controls />\n <Background\n bgColor={theme.palette.background.paper}\n color={theme.palette.text.disabled}\n />\n </ReactFlow>\n </>\n )\n}\n","import type { Node, NodeProps } from '@xyflow/react'\nimport type { CSSProperties, FC } from 'react'\nimport { Box, Stack, Typography } from '@mui/material'\nimport '@xyflow/react/dist/style.css'\nimport { Handle, Position } from '@xyflow/react'\nimport { memo } from 'react'\n\nimport type { Span } from '@/types/spans.ts'\n\nimport { ServiceCell } from '../cells/service-cell.tsx'\nimport { ProblemIndicator } from './problem-indicator.tsx'\n\nconst handleStyle: CSSProperties = {\n backgroundColor: 'white',\n borderColor: 'lightgray',\n opacity: 0,\n}\n\nexport type ServiceNodeData = Node<{\n data: Record<string, Span>\n event: Span\n height: number\n id: string\n position: {\n x: number\n y: number\n }\n width: number\n}>\n\nexport const ServiceNode: FC<NodeProps<ServiceNodeData>> = memo(({ data, selected }) => {\n const hasErrors = (data.event.errors && data.event.errors.length > 0) ?? false\n\n return (\n <Box sx={{ maxWidth: 200 }}>\n <Box\n role=\"button\"\n sx={{\n '&:hover': {\n opacity: 1,\n },\n 'alignItems': 'flex-start',\n 'borderRadius': 1,\n 'cursor': 'pointer',\n 'display': 'flex',\n 'flexDirection': 'column',\n 'maxWidth': '100%',\n 'opacity': selected ? 1 : 0.7,\n 'position': 'relative',\n 'transition': 'all 0.3s ease',\n 'width': 'min-content',\n }}\n tabIndex={0}\n >\n <Handle position={Position.Left} style={handleStyle} type=\"target\" />\n <Handle position={Position.Right} style={handleStyle} type=\"source\" />\n\n <ServiceCell\n height=\"32px\"\n resource={data.event.resource_name}\n selected={selected}\n service={data.event.service_name}\n width=\"32px\"\n />\n </Box>\n\n <Stack\n alignItems=\"center\"\n direction=\"row\"\n spacing={0.5}\n sx={{\n ml: 1,\n mt: 0.5,\n }}\n >\n {hasErrors && (\n <Stack\n direction=\"row\"\n spacing={0.5}\n sx={{\n flexWrap: 'wrap',\n gap: '2px',\n }}\n >\n {data.event.errors?.map(error => (\n <ProblemIndicator error={error} key={error.span_id} />\n ))}\n </Stack>\n )}\n <Typography\n sx={{\n fontSize: '0.9rem',\n maxWidth: '100%',\n ml: hasErrors ? 2 : 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n variant=\"caption\"\n >\n {data.event.operation_name}\n </Typography>\n </Stack>\n </Box>\n )\n})\n","import type { FC } from 'react'\nimport { Error as ErrorIcon, Info, Warning } from '@mui/icons-material'\nimport { Box, Tooltip } from '@mui/material'\nimport { useMemo } from 'react'\n\ninterface ProblemIndicatorProps {\n error: {\n level?: 'error' | 'info' | 'warning'\n message?: string\n span_id: string\n }\n}\n\nexport const ProblemIndicator: FC<ProblemIndicatorProps> = ({ error }) => {\n const icon = useMemo(() => {\n switch (error.level) {\n case 'error': {\n return <ErrorIcon sx={{ color: '#d32f2f', fontSize: '14px' }} />\n }\n case 'warning': {\n return <Warning sx={{ color: '#ff9800', fontSize: '14px' }} />\n }\n default: {\n return <Info sx={{ color: '#2196f3', fontSize: '14px' }} />\n }\n }\n }, [error.level])\n\n const color = useMemo(() => {\n switch (error.level) {\n case 'error': {\n return '#d32f2f'\n }\n case 'warning': {\n return '#ff9800'\n }\n default: {\n return '#2196f3'\n }\n }\n }, [error.level])\n\n return (\n <Tooltip arrow title={error.message ?? 'Issue detected'}>\n <Box\n sx={{\n alignItems: 'center',\n backgroundColor: `${color}15`,\n border: `1px solid ${color}`,\n borderRadius: '50%',\n cursor: 'pointer',\n display: 'inline-flex',\n height: '18px',\n justifyContent: 'center',\n width: '18px',\n }}\n >\n {icon}\n </Box>\n </Tooltip>\n )\n}\n","import type { Edge } from '@xyflow/react'\nimport dagre from '@dagrejs/dagre'\nimport { MarkerType, Position } from '@xyflow/react'\n\nimport type { Span } from '@/types/spans.ts'\nimport type { ServiceNodeData } from './service-node.tsx'\n\ninterface NodesAndEdges {\n edges: Edge[]\n nodes: ServiceNodeData[]\n}\n\nexport const generateNodesAndEdges = (\n event: Span,\n parentId?: string,\n): NodesAndEdges => {\n const nodes: ServiceNodeData[] = []\n const edges: Edge[] = []\n\n nodes.push({\n data: {\n data: { [event.span_id]: event },\n event,\n height: 28,\n id: event.span_id,\n position: { x: 0, y: 0 },\n width: 28,\n },\n id: event.span_id,\n position: { x: 0, y: 0 }, // Will be set by layout\n sourcePosition: Position.Right,\n targetPosition: Position.Left,\n type: 'service',\n })\n\n if (parentId) {\n edges.push({\n animated: false,\n id: `e-${parentId}-${event.span_id}`,\n markerEnd: {\n color: 'lightgray',\n height: 16,\n type: MarkerType.Arrow,\n width: 16,\n },\n source: parentId,\n style: {\n stroke: 'lightgray',\n strokeWidth: 1,\n },\n target: event.span_id,\n })\n }\n\n // Process children if they exist\n if (event.children && event.children.length > 0) {\n for (const child of event.children) {\n const { edges: childEdges, nodes: childNodes } = generateNodesAndEdges(child,\n event.span_id)\n nodes.push(...childNodes)\n edges.push(...childEdges)\n }\n }\n\n return { edges, nodes }\n}\n\nexport const getLayoutedNodesAndEdges = (inputNodes: ServiceNodeData[], inputEdges: Edge[]): NodesAndEdges => {\n const dagreGraph = new dagre.graphlib.Graph().setDefaultEdgeLabel(() => ({}))\n\n const direction = 'LR' // Left to Right layout\n const nodeWidth = 200\n const nodeHeight = 70\n\n dagreGraph.setGraph({ rankdir: direction })\n\n for (const node of inputNodes) {\n dagreGraph.setNode(node.id, { height: nodeHeight, width: nodeWidth })\n }\n\n for (const edge of inputEdges) {\n dagreGraph.setEdge(edge.source, edge.target)\n }\n\n dagre.layout(dagreGraph)\n\n const layoutedNodes = inputNodes.map((node) => {\n const nodeWithPosition = dagreGraph.node(node.id)\n return {\n ...node,\n position: {\n x: nodeWithPosition.x - nodeWidth / 2,\n y: nodeWithPosition.y - nodeHeight / 2,\n },\n selectable: true,\n }\n })\n\n return { edges: inputEdges, nodes: layoutedNodes }\n}\n","import type { ReactFlowState } from '@xyflow/react'\nimport type { FC } from 'react'\nimport { Add, FitScreen, Remove } from '@mui/icons-material'\nimport { Box, IconButton } from '@mui/material'\nimport { useReactFlow, useStore } from '@xyflow/react'\nimport { memo } from 'react'\nimport { shallow } from 'zustand/shallow'\n\nconst selector = (s: ReactFlowState) => ({\n isInteractive: s.nodesDraggable || s.nodesConnectable || s.elementsSelectable,\n maxZoomReached: s.transform[2] >= s.maxZoom,\n minZoomReached: s.transform[2] <= s.minZoom,\n})\n\nexport const Controls: FC = memo(() => {\n const { maxZoomReached, minZoomReached } = useStore(selector, shallow)\n const { fitView, zoomIn, zoomOut } = useReactFlow()\n\n const onZoomInHandler = () => {\n void zoomIn()\n }\n\n const onZoomOutHandler = () => {\n void zoomOut()\n }\n\n const onFitViewHandler = () => {\n void fitView()\n }\n\n return (\n <Box\n sx={{\n bottom: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n left: 0,\n m: 2,\n position: 'absolute',\n zIndex: 5,\n }}\n >\n <IconButton\n className=\"react-flow__controls-zoomin\"\n disabled={maxZoomReached}\n onClick={onZoomInHandler}\n size=\"small\"\n >\n <Add />\n </IconButton>\n <IconButton\n className=\"react-flow__controls-zoomout\"\n disabled={minZoomReached}\n onClick={onZoomOutHandler}\n size=\"small\"\n >\n <Remove />\n </IconButton>\n\n <IconButton\n className=\"react-flow__controls-fitview\"\n onClick={onFitViewHandler}\n size=\"small\"\n >\n <FitScreen />\n </IconButton>\n </Box>\n )\n})\n","function shallow$1(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size) return false;\n for (const [key, value] of objA) {\n if (!Object.is(value, objB.get(key))) {\n return false;\n }\n }\n return true;\n }\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size) return false;\n for (const value of objA) {\n if (!objB.has(value)) {\n return false;\n }\n }\n return true;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (const keyA of keysA) {\n if (!Object.prototype.hasOwnProperty.call(objB, keyA) || !Object.is(objA[keyA], objB[keyA])) {\n return false;\n }\n }\n return true;\n}\n\nvar shallow = (objA, objB) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { shallow } from 'zustand/shallow'`.\"\n );\n }\n return shallow$1(objA, objB);\n};\n\nexport { shallow as default, shallow$1 as shallow };\n","type RoutesMap = Record<string, string>\n\nexport const routes = {\n APP_INSPECTOR_SPANS_LIST: 'spans',\n} as const satisfies RoutesMap\n","import type { FC, PropsWithChildren, ReactNode } from 'react'\nimport { createContext, useContext } from 'react'\nimport { useCallback, useMemo } from 'react'\n\nimport { createApiClientMock } from './api/client-mock.ts'\nimport { createApiClient } from './api/client.ts'\nimport { ApiProvider } from './api/use-api.tsx'\n\ninterface AppInspectorContextValue {\n /**\n * A component that renders a link.\n */\n linkComponent: FC<{ children: ReactNode, to: string }>\n\n /**\n * The endpoint to LocalStack.\n */\n localstackEndpoint: string\n\n /**\n * A function that resolves a link URL.\n */\n resolveLink: (options: ResolveLinkOptions) => string\n}\n\ntype ResolveLinkOptions\n = | {\n to: 'settings'\n }\n | {\n to: 'spans-list'\n }\n | {\n to: 'trace-graph'\n traceId: string\n }\n\nconst AppInspectorContext = createContext<AppInspectorContextValue | undefined>(undefined)\n\nexport const useAppInspector = () => {\n const context = useContext(AppInspectorContext)\n if (!context) {\n throw new Error('@localstack-studio/ui: components must be used within a <AppInspectorContextProvider>')\n }\n return context\n}\n\ninterface AppInspectorContextProviderProps {\n /**\n * A component that renders a link.\n */\n linkComponent: FC<{ children: ReactNode, to: string }>\n\n /**\n * The endpoint to LocalStack.\n */\n localstackEndpoint: string\n\n /**\n * The prefix for the event studio routes.\n */\n routePrefix: string\n}\n\nexport const AppInspectorContextProvider = (props: PropsWithChildren<AppInspectorContextProviderProps>) => {\n const api = useMemo(() => {\n return import.meta.env.VITE_LOCALSTACK_API_MOCK === 'true'\n ? createApiClientMock()\n : createApiClient({ localstackEndpoint: props.localstackEndpoint })\n }, [props.localstackEndpoint])\n\n const resolveLink = useCallback(\n (options: ResolveLinkOptions) => {\n if (options.to === 'settings') {\n return `${props.routePrefix}/settings`\n }\n if (options.to === 'trace-graph') {\n return `${props.routePrefix}/traces/${options.traceId}`\n }\n return `${props.routePrefix}/spans`\n },\n [props.routePrefix],\n )\n\n const contextValue = useMemo(\n () => ({\n linkComponent: props.linkComponent,\n localstackEndpoint: props.localstackEndpoint,\n resolveLink,\n }),\n [props.linkComponent, props.localstackEndpoint, resolveLink],\n )\n\n return (\n <ApiProvider api={api}>\n <AppInspectorContext.Provider value={contextValue}>\n {props.children}\n </AppInspectorContext.Provider>\n </ApiProvider>\n )\n}\n","/**\n * Error message constants for consistent error handling\n */\n\nexport const ERROR_MESSAGES = {\n APP_INSPECTOR_DISABLED: 'App Inspector is currently disabled.',\n APP_INSPECTOR_NOT_FOUND: 'App Inspector extension not found. Please ensure App Inspector is licensed and enabled.',\n CONNECTION_FAILED: 'Failed to connect to LocalStack. Please ensure LocalStack is running and accessible.',\n} as const\n","export interface Logger {\n debug: LoggerFunction\n error: LoggerFunction\n info: LoggerFunction\n warn: LoggerFunction\n}\n\ntype LoggerFunction = (message: string, data?: unknown) => void\n\nconst getIsDevelopment = (): boolean => {\n try {\n return import.meta.env.DEV || false\n }\n catch {\n return false\n }\n}\n\nconst isDevelopment = getIsDevelopment()\n\nexport const logger: Logger = {\n debug: (message: string, data?: unknown): void => {\n if (isDevelopment) {\n console.debug(`[DEBUG] ${message}`, data === undefined ? '' : data)\n }\n },\n\n error: (message: string, data?: unknown): void => {\n if (isDevelopment) {\n console.error(`[ERROR] ${message}`, data === undefined ? '' : data)\n }\n // In production, you might want to send errors to a monitoring service\n },\n\n info: (message: string, data?: unknown): void => {\n if (isDevelopment) {\n console.info(`[INFO] ${message}`, data === undefined ? '' : data)\n }\n },\n\n warn: (message: string, data?: unknown): void => {\n if (isDevelopment) {\n console.warn(`[WARN] ${message}`, data === undefined ? '' : data)\n }\n },\n}\n\nexport const isLoggerEnabled = (): boolean => isDevelopment\n\nexport const createScopedLogger = (scope: string): Logger => ({\n debug: (message: string, data?: unknown) => { logger.debug(`[${scope}] ${message}`, data) },\n error: (message: string, data?: unknown) => { logger.error(`[${scope}] ${message}`, data) },\n info: (message: string, data?: unknown) => { logger.info(`[${scope}] ${message}`, data) },\n warn: (message: string, data?: unknown) => { logger.warn(`[${scope}] ${message}`, data) },\n})\n","import { unixNanoToDate } from '@/utils/time.ts'\nimport type { DeleteSpansResponse, EventsRequest, EventsResponse, ExtendedSpansResponse, SpansRequest, SpansResponse, StatusResponse } from '../types/api'\nimport type { Api } from './api.ts'\n\nimport { API_ENDPOINTS, getAppInspectorApiUrl } from '../config.ts'\nimport { ERROR_MESSAGES } from '../constants/error-messages.ts'\nimport { createScopedLogger } from '../utils/logger.ts'\nimport { AppInspectorNotFoundError, ConnectionError } from './errors.ts'\n\nconst apiLogger = createScopedLogger('API')\n\nconst makeRequest = async <T>(options: {\n endpoint: string\n localstackEndpoint: string\n request?: RequestInit\n}): Promise<T> => {\n const url = getAppInspectorApiUrl(options.localstackEndpoint, options.endpoint)\n\n try {\n apiLogger.info('Making request to:', { options, url })\n\n const headers = new Headers(options.request?.headers)\n headers.set('Content-Type', 'application/json')\n\n const response = await fetch(url, {\n ...options.request,\n headers,\n })\n\n if (!response.ok) {\n if (response.status === 404) {\n // All endpoints in this app are AppInspector endpoints\n // 404 means extension is not licensed or not enabled\n throw new AppInspectorNotFoundError(\n ERROR_MESSAGES.APP_INSPECTOR_NOT_FOUND,\n new Error(`404 from ${url}: ${response.statusText}`),\n )\n }\n throw new Error(`API request failed: ${response.status.toString()} ${response.statusText}`)\n }\n\n return (await response.json()) as T\n }\n catch (error: unknown) {\n // Global error handling for all endpoints\n if (error instanceof TypeError) {\n // Network/connection errors - TypeErrors from fetch indicate network failures\n const message = error.message.toLowerCase()\n const isNetworkError = message.includes('fetch')\n || message.includes('network')\n || message.includes('failed to fetch')\n\n if (isNetworkError) {\n throw new ConnectionError(ERROR_MESSAGES.CONNECTION_FAILED, error)\n }\n }\n if (error instanceof Error) {\n throw error\n }\n throw new Error('Unknown error occurred')\n }\n}\n\nconst buildSpansEndpoint = (request?: SpansRequest): string => {\n if (!request) {\n return API_ENDPOINTS.SPANS\n }\n\n const queryParameters = new URLSearchParams()\n\n // Add pagination parameters\n if (request.limit !== undefined) {\n queryParameters.set('limit', request.limit.toString())\n }\n if (request.pagination_token) {\n queryParameters.set('pagination_token', request.pagination_token)\n }\n\n // Add filter parameters (only if they have values)\n for (const [key, value] of Object.entries(request)) {\n if (value !== undefined && key !== 'limit' && key !== 'pagination_token' && value !== null) {\n queryParameters.set(key, String(value))\n }\n }\n\n const queryString = queryParameters.toString()\n return queryString ? `${API_ENDPOINTS.SPANS}?${queryString}` : API_ENDPOINTS.SPANS\n}\n\nconst buildEventsEndpoint = (request?: EventsRequest): string => {\n if (!request) {\n return API_ENDPOINTS.EVENTS\n }\n\n // Always use wildcard path for events endpoints\n const basePath = API_ENDPOINTS.EVENTS\n\n const queryParameters = new URLSearchParams()\n\n // Add pagination parameters\n if (request.limit !== undefined) {\n queryParameters.set('limit', request.limit.toString())\n }\n if (request.pagination_token) {\n queryParameters.set('pagination_token', request.pagination_token)\n }\n\n // Add filter parameters (all filters go in query string)\n for (const [key, value] of Object.entries(request)) {\n if (\n value !== undefined\n && key !== 'limit'\n && key !== 'pagination_token'\n && value !== null\n ) {\n queryParameters.set(key, String(value))\n }\n }\n\n const queryString = queryParameters.toString()\n return queryString ? `${basePath}?${queryString}` : basePath\n}\n\nexport interface ApiClientOptions {\n localstackEndpoint: string\n}\n\nexport const createApiClient = ({ localstackEndpoint }: ApiClientOptions): Api => {\n return {\n deleteSpans: async (_request): Promise<DeleteSpansResponse> => {\n return makeRequest<DeleteSpansResponse>({\n endpoint: API_ENDPOINTS.SPANS,\n localstackEndpoint,\n request: {\n method: 'DELETE',\n },\n })\n },\n getEvents: async (request): Promise<EventsResponse> => {\n const endpoint = buildEventsEndpoint(request)\n return makeRequest<EventsResponse>({ endpoint, localstackEndpoint })\n },\n getIamEvents: async (request): Promise<EventsResponse> => {\n const iamEventsRequest: EventsRequest = {\n ...request,\n event_type: 'iam.policy_evaluation',\n }\n const endpoint = buildEventsEndpoint(iamEventsRequest)\n return makeRequest<EventsResponse>({ endpoint, localstackEndpoint })\n },\n getSpans: async (request): Promise<ExtendedSpansResponse> => {\n const endpoint = buildSpansEndpoint(request)\n const response = await makeRequest<SpansResponse>({ endpoint, localstackEndpoint })\n return {\n ...response,\n spans: response.spans.map(span => ({\n ...span,\n endTime: unixNanoToDate(span.end_time_unix_nano),\n startTime: unixNanoToDate(span.start_time_unix_nano),\n })),\n }\n },\n getStatus: async () => {\n return makeRequest<StatusResponse>({\n endpoint: API_ENDPOINTS.STATUS,\n localstackEndpoint,\n })\n },\n }\n}\n"],"mappings":"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","names":["import_material","import_react","import_material","import_material","createColumnHelper","accessor","column","accessorFn","accessorKey","display","group","functionalUpdate","updater","input","makeStateUpdater","key","instance","updater","setState","old","functionalUpdate","isFunction","d","Function","isNumberArray","Array","isArray","every","val","flattenBy","arr","getChildren","flat","recurse","subArr","forEach","item","push","children","length","memo","getDeps","fn","opts","deps","result","depArgs","depTime","debug","Date","now","newDeps","depsChanged","some","dep","index","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min","getMemoOptions","tableOptions","debugLevel","_tableOptions$debugAl","debugAll","process","env","NODE_ENV","createCell","table","row","column","columnId","getRenderValue","_cell$getValue","cell","getValue","options","renderFallbackValue","id","renderValue","getContext","_features","feature","createColumn","columnDef","depth","parent","_ref","_resolvedColumnDef$id","defaultColumn","_getDefaultColumnDef","resolvedColumnDef","accessorKey","prototype","replaceAll","replace","undefined","header","accessorFn","includes","originalRow","split","_result","warn","Error","columns","getFlatColumns","_column$columns","flatMap","getLeafColumns","_getOrderColumnsFn","orderColumns","_column$columns2","leafColumns","createHeader","_options$id","isPlaceholder","placeholderId","subHeaders","colSpan","rowSpan","headerGroup","getLeafHeaders","leafHeaders","recurseHeader","h","map","Headers","createTable","getHeaderGroups","getAllColumns","getVisibleLeafColumns","getState","columnPinning","left","right","allColumns","_left$map$filter","_right$map$filter","leftColumns","find","filter","Boolean","rightColumns","centerColumns","headerGroups","buildHeaderGroups","getCenterHeaderGroups","getLeftHeaderGroups","_left$map$filter2","orderedLeafColumns","getRightHeaderGroups","_right$map$filter2","getFooterGroups","reverse","getLeftFooterGroups","getCenterFooterGroups","getRightFooterGroups","getFlatHeaders","headers","getLeftFlatHeaders","getCenterFlatHeaders","getRightFlatHeaders","getCenterLeafHeaders","flatHeaders","_header$subHeaders","getLeftLeafHeaders","_header$subHeaders2","getRightLeafHeaders","_header$subHeaders3","center","_left$0$headers","_left$","_center$0$headers","_center$","_right$0$headers","_right$","columnsToGroup","headerFamily","_headerGroups$0$heade","_headerGroups$","maxDepth","findMaxDepth","getIsVisible","createHeaderGroup","headersToGroup","join","pendingParentHeaders","headerToGroup","latestPendingParentHeader","isLeafHeader","bottomHeaders","recurseHeadersForSpans","filteredHeaders","childRowSpans","childColSpan","childRowSpan","minChildRowSpan","createRow","original","rowIndex","subRows","parentId","_valuesCache","_uniqueValuesCache","hasOwnProperty","getColumn","getUniqueValues","_row$getValue","getLeafRows","getParentRow","getRow","getParentRows","parentRows","currentRow","parentRow","getAllCells","getAllLeafColumns","_getAllCellsByColumnId","allCells","reduce","acc","i","ColumnFaceting","_getFacetedRowModel","getFacetedRowModel","getPreFilteredRowModel","_getFacetedUniqueValues","getFacetedUniqueValues","Map","_getFacetedMinMaxValues","getFacetedMinMaxValues","includesString","filterValue","_filterValue$toString","search","toString","toLowerCase","autoRemove","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","rowValue","resolveFilterValue","unsafeMin","unsafeMax","parsedMin","parseFloat","parsedMax","Number","isNaN","Infinity","temp","filterFns","ColumnFiltering","getDefaultColumnDef","filterFn","getInitialState","state","columnFilters","getDefaultOptions","onColumnFiltersChange","filterFromLeafRows","maxLeafRowFilterDepth","getAutoFilterFn","firstRow","getCoreRowModel","flatRows","value","getFilterFn","_table$options$filter","_table$options$filter2","getCanFilter","_column$columnDef$ena","_table$options$enable","_table$options$enable2","enableColumnFilter","enableColumnFilters","enableFilters","getIsFiltered","getFilterIndex","getFilterValue","_table$getState$colum","_table$getState$colum2","_table$getState$colum3","findIndex","setFilterValue","setColumnFilters","previousFilter","newFilter","shouldAutoRemoveFilter","_old$filter","newFilterObj","_old$map","_table","columnFiltersMeta","updateFn","_functionalUpdate","resetColumnFilters","defaultState","_table$initialState$c","_table$initialState","initialState","getFilteredRowModel","_getFilteredRowModel","manualFiltering","sum","_leafRows","childRows","next","nextValue","extent","mean","leafRows","count","median","values","mid","floor","nums","sort","a","b","unique","from","Set","uniqueCount","size","_columnId","aggregationFns","ColumnGrouping","aggregatedCell","props","_toString","_props$getValue","aggregationFn","grouping","onGroupingChange","groupedColumnMode","toggleGrouping","setGrouping","getCanGroup","enableGrouping","getGroupingValue","getIsGrouped","_table$getState$group","getGroupedIndex","_table$getState$group2","indexOf","getToggleGroupingHandler","canGroup","getAutoAggregationFn","Object","call","getAggregationFn","_table$options$aggreg","_table$options$aggreg2","resetGrouping","_table$initialState$g","getPreGroupedRowModel","getGroupedRowModel","_getGroupedRowModel","manualGrouping","groupingColumnId","_groupingValuesCache","getIsPlaceholder","getIsAggregated","_row$subRows","nonGroupingColumns","col","groupingColumns","g","ColumnOrdering","columnOrder","onColumnOrderChange","getIndex","position","_getVisibleLeafColumns","getIsFirstColumn","_columns$","getIsLastColumn","_columns","setColumnOrder","resetColumnOrder","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","shift","foundIndex","splice","getDefaultColumnPinningState","ColumnPinning","onColumnPinningChange","pin","columnIds","setColumnPinning","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","getCanPin","_d$columnDef$enablePi","enablePinning","enableColumnPinning","getIsPinned","leafColumnIds","isLeft","isRight","getPinnedIndex","getCenterVisibleCells","_getAllVisibleCells","leftAndRight","getLeftVisibleCells","cells","getRightVisibleCells","resetColumnPinning","getIsSomeColumnsPinned","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","getLeftLeafColumns","getRightLeafColumns","getCenterLeafColumns","safelyAccessDocument","_document","document","defaultColumnSizing","minSize","maxSize","MAX_SAFE_INTEGER","getDefaultColumnSizingInfoState","startOffset","startSize","deltaOffset","deltaPercentage","isResizingColumn","columnSizingStart","ColumnSizing","columnSizing","columnSizingInfo","columnResizeMode","columnResizeDirection","onColumnSizingChange","onColumnSizingInfoChange","getSize","_column$columnDef$min","_column$columnDef$max","columnSize","getStart","slice","getAfter","resetSize","setColumnSizing","_ref2","_","rest","getCanResize","enableResizing","enableColumnResizing","getIsResizing","_header$column$getSiz","prevSiblingHeader","getResizeHandler","_contextDocument","canResize","e","persist","isTouchStartEvent","touches","clientX","newColumnSizing","updateOffset","eventType","clientXPos","setColumnSizingInfo","_old$startOffset","_old$startSize","deltaDirection","_ref3","headerSize","onMove","onEnd","contextDocument","mouseEvents","moveHandler","upHandler","removeEventListener","touchEvents","cancelable","preventDefault","stopPropagation","_e$touches$","passiveIfSupported","passiveEventSupported","passive","addEventListener","resetColumnSizing","resetHeaderSizeInfo","_table$initialState$c2","getTotalSize","_table$getHeaderGroup","_table$getHeaderGroup2","getLeftTotalSize","_table$getLeftHeaderG","_table$getLeftHeaderG2","getCenterTotalSize","_table$getCenterHeade","_table$getCenterHeade2","getRightTotalSize","_table$getRightHeader","_table$getRightHeader2","passiveSupported","supported","noop","window","err","type","ColumnVisibility","columnVisibility","onColumnVisibilityChange","toggleVisibility","getCanHide","setColumnVisibility","childColumns","c","enableHiding","getToggleVisibilityHandler","target","checked","getVisibleCells","makeVisibleColumnsMethod","getColumns","getVisibleFlatColumns","getAllFlatColumns","getLeftVisibleLeafColumns","getRightVisibleLeafColumns","getCenterVisibleLeafColumns","resetColumnVisibility","toggleAllColumnsVisible","_value","getIsAllColumnsVisible","obj","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityHandler","_target","GlobalFaceting","_getGlobalFacetedRowModel","getGlobalFacetedRowModel","_getGlobalFacetedUniqueValues","getGlobalFacetedUniqueValues","_getGlobalFacetedMinMaxValues","getGlobalFacetedMinMaxValues","GlobalFiltering","globalFilter","onGlobalFilterChange","globalFilterFn","getColumnCanGlobalFilter","_table$getCoreRowMode","getCanGlobalFilter","_table$options$getCol","enableGlobalFilter","getGlobalAutoFilterFn","getGlobalFilterFn","setGlobalFilter","resetGlobalFilter","RowExpanding","expanded","onExpandedChange","paginateExpandedRows","registered","queued","_autoResetExpanded","_table$options$autoRe","_queue","autoResetAll","autoResetExpanded","manualExpanding","resetExpanded","setExpanded","toggleAllRowsExpanded","getIsAllRowsExpanded","_table$initialState$e","getCanSomeRowsExpand","getPrePaginationRowModel","getCanExpand","getToggleAllRowsExpandedHandler","getIsSomeRowsExpanded","keys","getRowModel","getIsExpanded","getExpandedDepth","rowIds","rowsById","splitId","getPreExpandedRowModel","getSortedRowModel","getExpandedRowModel","_getExpandedRowModel","toggleExpanded","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","getIsRowExpanded","_table$options$getRow","getRowCanExpand","enableExpanding","getIsAllParentsExpanded","isFullyExpanded","getToggleExpandedHandler","canExpand","defaultPageIndex","defaultPageSize","getDefaultPaginationState","pageIndex","pageSize","RowPagination","pagination","onPaginationChange","_autoResetPageIndex","autoResetPageIndex","manualPagination","resetPageIndex","setPagination","safeUpdater","newState","resetPagination","_table$initialState$p","setPageIndex","maxPageIndex","pageCount","_table$initialState$p2","resetPageSize","_table$initialState$p3","_table$initialState2","setPageSize","topRowIndex","setPageCount","_table$options$pageCo","newPageCount","getPageOptions","getPageCount","pageOptions","fill","getCanPreviousPage","getCanNextPage","previousPage","nextPage","firstPage","lastPage","getPaginationRowModel","_getPaginationRowModel","_table$options$pageCo2","ceil","getRowCount","_table$options$rowCou","rowCount","rows","getDefaultRowPinningState","top","bottom","RowPinning","rowPinning","onRowPinningChange","includeLeafRows","includeParentRows","leafRowIds","parentRowIds","setRowPinning","_old$top3","_old$bottom3","_old$top","_old$bottom","has","_old$top2","_old$bottom2","enableRowPinning","isTop","isBottom","_ref4","_visiblePinnedRowIds$","visiblePinnedRowIds","getTopRows","getBottomRows","_ref5","resetRowPinning","_table$initialState$r","getIsSomeRowsPinned","_pinningState$top","_pinningState$bottom","_getPinnedRows","visibleRows","pinnedRowIds","_table$options$keepPi","keepPinnedRows","allRows","topPinnedRowIds","bottomPinnedRowIds","getCenterRows","topAndBottom","RowSelection","rowSelection","onRowSelectionChange","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","setRowSelection","resetRowSelection","toggleAllRowsSelected","getIsAllRowsSelected","preGroupedFlatRows","getCanSelect","toggleAllPageRowsSelected","resolvedValue","getIsAllPageRowsSelected","mutateRowIsSelected","getPreSelectedRowModel","getSelectedRowModel","rowModel","selectRowsFn","getFilteredSelectedRowModel","getGroupedSelectedRowModel","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","getIsSomeRowsSelected","_table$getState$rowSe","totalSelected","getIsSomePageRowsSelected","getIsSelected","getIsSomeSelected","getToggleAllRowsSelectedHandler","getToggleAllPageRowsSelectedHandler","toggleSelected","isSelected","_opts$selectChildren","selectedRowIds","selectChildren","isRowSelected","isSubRowSelected","getIsAllSubRowsSelected","getCanSelectSubRows","getCanMultiSelect","_table$options$enable3","getToggleSelectedHandler","canSelect","includeChildren","newSelectedFlatRows","newSelectedRowsById","recurseRows","_row$subRows2","selection","_selection$row$id","_row$subRows3","allChildrenSelected","someSelected","subRow","subRowChildrenSelected","reSplitAlphaNumeric","alphanumeric","rowA","rowB","compareAlphanumeric","alphanumericCaseSensitive","text","compareBasic","textCaseSensitive","datetime","basic","aStr","bStr","aa","bb","an","parseInt","bn","combo","sortingFns","RowSorting","sorting","sortingFn","sortUndefined","onSortingChange","isMultiSortEvent","shiftKey","getAutoSortingFn","firstRows","isString","getAutoSortDir","getSortingFn","_table$options$sortin","_table$options$sortin2","toggleSorting","desc","multi","nextSortingOrder","getNextSortingOrder","hasManualValue","setSorting","existingSorting","existingIndex","newSorting","sortAction","nextDesc","getCanMultiSort","_table$options$maxMul","maxMultiSortColCount","getFirstSortDir","_column$columnDef$sor","sortDescFirst","firstSortDirection","isSorted","getIsSorted","enableSortingRemoval","enableMultiRemove","getCanSort","enableSorting","_column$columnDef$ena2","enableMultiSort","_table$getState$sorti","columnSort","getSortIndex","_table$getState$sorti2","_table$getState$sorti3","clearSorting","getToggleSortingHandler","canSort","resetSorting","_table$initialState$s","getPreSortedRowModel","_getSortedRowModel","manualSorting","builtInFeatures","_options$_features","_options$initialState","debugTable","defaultOptions","assign","mergeOptions","coreInitialState","_feature$getInitialSt","queuedTimeout","coreInstance","cb","Promise","resolve","then","catch","error","setTimeout","reset","setOptions","newOptions","onStateChange","_getRowId","getRowId","_getCoreRowModel","searchAll","_defaultColumn","_props$renderValue$to","_props$renderValue","_getColumnDefs","columnDefs","recurseColumns","groupingColumnDef","_getAllFlatColumnsById","flatColumns","data","accessRows","originalRows","getSubRows","_row$originalSubRows","originalSubRows","flexRender","Comp","props","isReactComponent","React","createElement","component","isClassComponent","isExoticComponent","proto","Object","getPrototypeOf","prototype","$$typeof","includes","description","useReactTable","options","resolvedOptions","state","onStateChange","renderFallbackValue","tableRef","useState","current","createTable","setState","initialState","setOptions","prev","updater","import_react","import_jsx_runtime","import_material","import_react","import_react","import_react","import_react","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_material","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_icons_material","import_material","import_jsx_runtime","import_react","import_react","import_icons_material","import_material","import_react","import_material","import_react","headline","import_icons_material","import_material","import_jsx_runtime","import_material","import_icons_material","import_material","import_react","import_icons_material","import_material","import_jsx_runtime","import_icons_material","import_material","import_jsx_runtime","ErrorIcon","import_icons_material","import_material","import_react","import_jsx_runtime","parsedIAM","import_jsx_runtime","DetailRow","import_icons_material","import_material","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","attributes","import_material","import_react","import_material","import_react","import_icons_material","import_material","import_react","import_jsx_runtime","ErrorIcon","import_jsx_runtime","import_react","dagre","import_icons_material","import_material","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","spanId","import_jsx_runtime","import_react","import_jsx_runtime"]}
|