Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
1cb260d
Remove preview badge from bundles card (#3169)
ammont82 Sep 17, 2025
94cc72b
Migration to PF6 (#3168)
ammont82 Sep 19, 2025
22c1056
Use masthead (#3173)
jgyselov Sep 22, 2025
282a4e5
Button text (#3174)
jgyselov Sep 22, 2025
eadfe17
OCPBUGS-61953: Update dependency sourcing to remote (#3155)
pawanpinjarkar Sep 24, 2025
a73059c
Bump axios from 1.6.8 to 1.12.2 (#3180)
dependabot[bot] Sep 30, 2025
b123e68
Updating assisted-installer-ui-container image to be consistent with …
openshift-bot Sep 30, 2025
e0b2b35
OCPBUGS-61787: Change NMstate operator docs link (#3182)
ammont82 Oct 2, 2025
b559b08
MGMT-21862: Add message about vSphere limitations (#3181)
ammont82 Oct 2, 2025
16c19f2
OCPBUGS-62680: Include assisted disconnected UI image in release payl…
pawanpinjarkar Oct 3, 2025
86e7ff8
Fixing errors when creating cluster from Assisted Migration (#3191)
ammont82 Oct 7, 2025
799180a
MGMT-21025: installing Two Node OpenShift with Arbiter (TNA) (#3170)
jgyselov Oct 8, 2025
930f49a
Remove unused component (#3193)
jgyselov Oct 9, 2025
e307de3
Add unique data-testid to dualstack subnet dropdowns (#3199)
jgyselov Oct 9, 2025
bb273fa
Tweak spacing between advanced network fields (#3198)
jgyselov Oct 9, 2025
76f668f
Tweak host status spacing (#3200)
jgyselov Oct 9, 2025
037c175
Improve alert spacing (#3201)
jgyselov Oct 9, 2025
85bdf8e
MGMT-21825: Textarea field should show both error and helper text (#3…
jgyselov Oct 9, 2025
1f5afac
Add border to table headers (#3197)
jgyselov Oct 9, 2025
8740ccf
Remove border from rich input field (#3208)
jgyselov Oct 10, 2025
31fa874
Bump happy-dom from 15.10.2 to 20.0.0 (#3211)
dependabot[bot] Oct 13, 2025
8a9cd1f
Remove nested 'Content' components (#3196)
jgyselov Oct 13, 2025
cf3e4ce
Upgrade the PF modal component in /common and /ocm (#3213)
jgyselov Oct 13, 2025
1a169b3
Bump happy-dom from 20.0.0 to 20.0.2 (#3218)
dependabot[bot] Oct 16, 2025
d242822
Consistent ISO Download behavior (#3221)
jgyselov Oct 21, 2025
f1c3684
Add 'noopener noreferrer' to ISO download button (#3222)
jgyselov Oct 21, 2025
9a0d36c
Fix preflight check collapsed styling (#3215)
jgyselov Oct 21, 2025
9ad1438
Remove unnecessary custom manifest field (#3217)
jgyselov Oct 21, 2025
7417980
Bump vite from 5.4.20 to 5.4.21 (#3223)
dependabot[bot] Oct 21, 2025
895b5c8
MGMT-21625: Add Dual-Stack with Primary IPv6 Support (#3190)
linoyaslan Oct 21, 2025
eded5cc
sort OCP versions in create infra (#3171)
LiorSoffer Oct 30, 2025
663e314
Update types/parsing for latest lightspeed API (#3226)
rawagner Oct 30, 2025
4c95b55
Update release job to use trusted-publishers flow (#3228)
rawagner Oct 31, 2025
a29b6ab
Update setup-node config (#3232)
rawagner Oct 31, 2025
13d146c
- MGMT-22057:Primary IPv6 should be Tech Preview (#3231)
ammont82 Oct 31, 2025
009aa5e
MGMT-22080: Allow users to install Openshift AI as standalone operato…
ammont82 Oct 31, 2025
e052db2
Release job: Configure Yarn for npm registry (#3235)
rawagner Oct 31, 2025
9ceb6fe
configure yarn before publish (#3239)
rawagner Nov 3, 2025
a4d9ef9
Pass OIDC token to yarn config (#3241)
rawagner Nov 3, 2025
1d61916
MGMT-22047: Add apiVIP and ingressVIP for dual-stack ipv4 and ipv6 (#…
ammont82 Nov 4, 2025
118a92b
Prevent InfraEnv creation on ABI to support OVE Late-Binding workflow…
ElayAharoni Nov 4, 2025
3c6cb2f
MGMT-22116: Add info about apiVIPs and ingressVIPs for dual-stack in …
ammont82 Nov 7, 2025
427c28e
MGMT-22119: Solving errors with SNO dual-stack (#3249)
ammont82 Nov 11, 2025
a478afd
MGMT-22165: Remove what's new link until the info appear in the chatb…
ammont82 Nov 11, 2025
87ac101
Update logic to extract the tool response (#3255)
rawagner Nov 11, 2025
8297d25
MGMT-17220: dual-stack with second machine network not populates (#3256)
ammont82 Nov 11, 2025
4d59273
Make the parsing compatible with new & old API (#3260)
rawagner Nov 12, 2025
a58b5be
MGMT-22047: solving errors with dual-stack (#3263)
ammont82 Nov 17, 2025
489c374
MGMT-21837: in YAML view in Static Network Configuration we add the r…
ammont82 Nov 18, 2025
4b6c3bf
late binding hosts to cluster in ABI (#3259)
ElayAharoni Nov 18, 2025
ef1b8d2
AGENT-1373: Rename feature gate to NoRegistryClusterInstall (#3267)
rwsu Nov 19, 2025
92cacad
AGENT-1352: Handle cluster reset with late binding (#3270)
ElayAharoni Nov 19, 2025
7535130
MGMT-22281: Dual stack seconday vips fields not mandatory (#3275)
ammont82 Nov 24, 2025
713ce38
Show TechPreview badge only in Primary Machine network when user choo…
ammont82 Nov 24, 2025
41a3210
add new fields to above sea level ABI (#3274)
ElayAharoni Nov 26, 2025
84b8ef8
Revert "Handle cluster reset on ABI" (#3281)
ElayAharoni Nov 27, 2025
8ace707
add loki and logging operators (#3285)
ElayAharoni Dec 1, 2025
fd30178
OCPBUGS-65657: Display OpenShift AI GPU validation message from API (…
yoavsc0302 Dec 1, 2025
10193ff
Bug fix: OVE Agent Installer UI: Red Hat OCP logo not displaying corr…
ElayAharoni Dec 4, 2025
4ab28e3
Adding TechPreview Budge for Assisted installer and agent (#3293)
ElayAharoni Dec 8, 2025
8522323
MGMT-20138 : Show 'Add hosts' tab for all cases (#3297)
ammont82 Dec 10, 2025
17bcb59
Edit OWNERS file (#3172)
jgyselov Dec 11, 2025
a64f219
Bump js-yaml from 4.1.0 to 4.1.1 (#3264)
dependabot[bot] Dec 12, 2025
1eeafe8
Bump zx from 7.2.3 to 8.8.5 (#3273)
dependabot[bot] Dec 12, 2025
226ce58
Bump mdast-util-to-hast from 13.2.0 to 13.2.1 (#3287)
dependabot[bot] Dec 12, 2025
3271af9
provides parameters for the GET /v2/operators/bundles route (#3306)
ElayAharoni Dec 12, 2025
d9296ba
Bump js-yaml from 4.1.0 to 4.1.1 (#3310)
dependabot[bot] Dec 12, 2025
3ea8ab9
Fix Cluster summary styling (#3216)
jgyselov Dec 12, 2025
3f725d4
remove external platforms field from below sea level UI (#3316)
ElayAharoni Dec 15, 2025
75beee2
Merge branch 'releases/v2.17-cim' into sync_master
jgyselov Dec 15, 2025
0de25fb
Merge branch 'sync_master' into sync_2.17
jgyselov Dec 15, 2025
1390f5f
Openshift AI Bundle on SNO enables ODF and LVM which are uncompatible…
ElayAharoni Dec 16, 2025
4010657
change ABI above sea level iso size (#3322)
ElayAharoni Dec 17, 2025
f5603e6
MGMT-22465: Merge the contents of releases/v2.17-cim into master (#3319)
jgyselov Dec 17, 2025
c92fa23
Merge branch 'master' into sync_2.17
jgyselov Dec 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .ci-operator.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
build_root_image:
name: release
namespace: openshift
tag: rhel-9-release-golang-1.24-openshift-4.21
26 changes: 15 additions & 11 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ on:
env:
NODE_OPTIONS: '--max-old-space-size=8192'

permissions:
id-token: write # Required for OIDC
contents: read

jobs:
publish-to-npm:
runs-on: ubuntu-latest
Expand All @@ -21,7 +25,7 @@ jobs:
exit 1
fi

- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
ref: ${{ github.event.release.target_commitish }}
fetch-depth: 0
Expand All @@ -42,15 +46,12 @@ jobs:
echo "LIBS=${LIBS[@]}" >> $GITHUB_ENV
(IFS=,; printf 'The following workspaces will be published: [%s]\n' "${LIBS[*]}")

- name: Configuring git
run: |
git config user.name '${{ github.actor }}'
git config user.email '${{ github.actor }}@users.noreply.github.com'

- uses: actions/setup-node@v3
- uses: actions/setup-node@v4
with:
cache: yarn
node-version: ${{ vars.NODEJS_VERSION }}
registry-url: 'https://registry.npmjs.org'
always-auth: true

- name: Install dependencies
run: yarn install --immutable
Expand All @@ -69,14 +70,17 @@ jobs:
- name: Build
run: yarn build:all

- name: Configure Yarn for npm registry
run: |
yarn config set npmRegistryServer https://registry.npmjs.org
yarn config set npmAlwaysAuth true
yarn config set npmAuthToken "${NODE_AUTH_TOKEN}"

- name: Publish workspaces to NPM
env:
NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
run: |
yarn config set npmScopes.openshift-assisted.npmAuthToken $NPM_AUTH_TOKEN
for LIB in $(echo ${LIBS}); do
printf 'Publishing @openshift-assisted/%s\n' "${LIB}"
yarn workspace @openshift-assisted/${LIB} npm publish
yarn workspace @openshift-assisted/${LIB} npm publish --access public
# Verify the package has been published before publishing another one.
until [[ "$(yarn npm info @openshift-assisted/${LIB} --fields version --json | jq -r '.version')" = "${GITHUB_REF_NAME:1}" ]]; do
printf '@openshift-assisted/%s has not ben published yet\n' "${LIB}"
Expand Down
42 changes: 32 additions & 10 deletions apps/assisted-disconnected-ui/Containerfile.ocp
Original file line number Diff line number Diff line change
@@ -1,23 +1,45 @@
FROM registry.ci.openshift.org/ocp/builder:rhel-9-base-nodejs-openshift-4.19 AS ui-build
USER root
FROM registry.ci.openshift.org/ocp/builder:rhel-9-base-nodejs-openshift-4.21 AS ui-build
USER 0

WORKDIR /app
COPY --chown=1001:0 / /app
RUN ls /app
COPY --chown=1001:0 . /app
ENV NODE_OPTIONS='--max-old-space-size=8192'
RUN git config --global --add safe.directory /app
RUN npm install -g corepack@0.24.1
RUN yarn install --immutable && yarn build:all

FROM registry.ci.openshift.org/ocp/builder:rhel-9-golang-1.23-openshift-4.19 as proxy-build
# The REMOTE_SOURCES value is set by the build system to indicate the location of the cachito-backed artifacts cache.
ARG REMOTE_SOURCES
ARG REMOTE_SOURCES_DIR=/remote-sources
COPY ${REMOTE_SOURCES} ${REMOTE_SOURCES_DIR}

ARG YARN_VERSION=3.4.1

# bootstrap yarn so we can install and run the other tools.
RUN CACHED_YARN=./artifacts/${YARN_VERSION}.tar.gz; \
if [ -f ${CACHED_YARN} ]; then \
# use dependencies provided by Cachito
npm install -g ${CACHED_YARN}; \
yarn install --immutable && yarn build:all; \
else \
# For local builds
npm install -g corepack@0.24.1; \
corepack enable; \
corepack prepare yarn@${YARN_VERSION} --activate; \
yarn install --immutable && yarn build:all; \
fi

FROM registry.ci.openshift.org/ocp/builder:rhel-9-golang-1.24-openshift-4.21 AS proxy-build
WORKDIR /app
COPY apps/assisted-disconnected-ui/proxy /app
USER 0
RUN go build
# Build using vendored deps as build system does not have internet access
RUN export GOFLAGS="-mod=vendor"; go build

FROM registry.ci.openshift.org/ocp/4.21:base-rhel9

LABEL io.openshift.release.operator=true

FROM registry.ci.openshift.org/ocp/ubi-micro:9
COPY --from=ui-build /app/apps/assisted-disconnected-ui/build /app/proxy/dist
COPY --from=proxy-build /app/assisted-disconnected-ui /app/proxy
WORKDIR /app/proxy
EXPOSE 8080
CMD ./assisted-disconnected-ui
CMD ./assisted-disconnected-ui
16 changes: 8 additions & 8 deletions apps/assisted-disconnected-ui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
"dependencies": {
"@openshift-assisted/ui-lib": "workspace:*",
"@openshift-console/dynamic-plugin-sdk": "0.0.3",
"@patternfly/patternfly": "5.2.0",
"@patternfly/react-code-editor": "5.2.0",
"@patternfly/react-core": "5.2.0",
"@patternfly/react-icons": "5.2.0",
"@patternfly/react-styles": "5.2.0",
"@patternfly/react-table": "5.2.0",
"@patternfly/react-tokens": "5.2.0",
"@patternfly/patternfly": "6.2.3",
"@patternfly/react-code-editor": "6.2.2",
"@patternfly/react-core": "6.2.2",
"@patternfly/react-icons": "6.2.2",
"@patternfly/react-styles": "6.2.2",
"@patternfly/react-table": "6.2.2",
"@patternfly/react-tokens": "6.2.2",
"@reduxjs/toolkit": "^1.9.1",
"@sentry/browser": "^7.119",
"axios": ">=0.22.0 <2.0.0",
Expand All @@ -35,7 +35,7 @@
"@vitejs/plugin-react-swc": "^3.0.1",
"concurrently": "^8.2.2",
"nodemon": "^3.0.3",
"vite": "^5.4.20",
"vite": "^5.4.21",
"vite-plugin-environment": "^1.1.3"
},
"overrides": {
Expand Down
2 changes: 1 addition & 1 deletion apps/assisted-disconnected-ui/public/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
27 changes: 18 additions & 9 deletions apps/assisted-disconnected-ui/src/components/App.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
import * as React from 'react';
import { BrowserRouter, Routes, Route } from 'react-router-dom-v5-compat';
import { Brand, Masthead, MastheadBrand, MastheadMain, Page } from '@patternfly/react-core';
import {
Brand,
Masthead,
MastheadLogo,
MastheadMain,
MastheadBrand,
Page,
} from '@patternfly/react-core';
import { Provider } from 'react-redux';
import { Store, useFeatureDetection } from '@openshift-assisted/ui-lib/ocm';
import { FeatureListType } from '@openshift-assisted/ui-lib/lib/common';
Expand Down Expand Up @@ -28,13 +35,15 @@ export const App: React.FC = () => {
<Masthead id="masthead">
<MastheadMain>
<MastheadBrand>
<Brand
src="/logo.svg"
alt="OpenShift Container Platform Assisted Installer"
style={{ width: '188px' }}
>
<source src="/logo.svg" />
</Brand>
<MastheadLogo>
<Brand
src="/logo.svg"
alt="OpenShift Container Platform Assisted Installer"
style={{ width: '188px' }}
>
<source src="/logo.svg" />
</Brand>
</MastheadLogo>
</MastheadBrand>
</MastheadMain>
</Masthead>
Expand All @@ -43,7 +52,7 @@ export const App: React.FC = () => {
return (
<BrowserRouter>
<Provider store={Store.storeDay1}>
<Page header={header} isManagedSidebar defaultManagedSidebarIsOpen={false}>
<Page masthead={header} isManagedSidebar defaultManagedSidebarIsOpen={false}>
<AppRouter />
</Page>
</Provider>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
NewClusterWizard,
ModalDialogsContextProvider,
} from '@openshift-assisted/ui-lib/ocm';
import { Alert, PageSection, PageSectionVariants } from '@patternfly/react-core';
import { Alert, PageSection } from '@patternfly/react-core';
import { useNavigate } from 'react-router-dom-v5-compat';
import ResetSingleClusterModal from './ResetSingleClusterModal';

Expand All @@ -21,7 +21,7 @@ const CreateClusterWizard = () => {

if (error) {
return (
<PageSection variant={PageSectionVariants.light} isFilled>
<PageSection hasBodyWrapper={false} isFilled>
<Alert isInline variant="danger" title="Failed to fetch clusters" />
</PageSection>
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,6 @@
import React from 'react';
import {
Button,
Modal,
ModalVariant,
ButtonVariant,
Text,
TextContent,
Stack,
StackItem,
Alert,
} from '@patternfly/react-core';
import { Button, ButtonVariant, Content, Stack, StackItem, Alert } from '@patternfly/react-core';
import { Modal, ModalVariant } from '@patternfly/react-core/deprecated';
import { useModalDialogsContext, ClustersService } from '@openshift-assisted/ui-lib/ocm';
import {
getApiErrorMessage,
Expand Down Expand Up @@ -80,13 +71,13 @@ const ResetSingleClusterModal: React.FC = () => {
>
<Stack hasGutter>
<StackItem>
<TextContent>
<Text component="p">
<Content>
<Content component="p">
{t('ai:This will remove all current configurations and will revert to the defaults.')}
</Text>
</Content>

<Text component="p">{t('ai:Are you sure you want to reset the cluster?')}</Text>
</TextContent>
<Content component="p">{t('ai:Are you sure you want to reset the cluster?')}</Content>
</Content>
</StackItem>
{error && (
<StackItem>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ import {
EmptyState,
EmptyStateBody,
EmptyStateFooter,
EmptyStateHeader,
EmptyStateVariant,
Spinner,
} from '@patternfly/react-core';
import { Cluster } from '@openshift-assisted/types/assisted-installer-service';
import {
Expand All @@ -24,12 +22,7 @@ const SingleClusterFinalizerPage = ({
const { t } = useTranslation();
return (
<Bullseye>
<EmptyState variant={EmptyStateVariant.xl}>
<EmptyStateHeader
titleText={t('ai:Finalizing')}
headingLevel="h4"
icon={<Spinner size="xl" />}
/>
<EmptyState headingLevel="h4" titleText={t('ai:Finalizing')} variant={EmptyStateVariant.xl}>
<EmptyStateBody>
{t('ai:Cluster installation is still in-progress.')}
<br />
Expand Down
16 changes: 8 additions & 8 deletions apps/assisted-ui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
"@patternfly-6/patternfly": "npm:@patternfly/patternfly@6.3.1",
"@patternfly-6/react-core": "npm:@patternfly/react-core@6.3.1",
"@patternfly/chatbot": "6.4.0-prerelease.4",
"@patternfly/patternfly": "5.2.0",
"@patternfly/react-code-editor": "5.2.0",
"@patternfly/react-core": "5.2.0",
"@patternfly/react-icons": "5.2.0",
"@patternfly/react-styles": "5.2.0",
"@patternfly/react-table": "5.2.0",
"@patternfly/react-tokens": "5.2.0",
"@patternfly/patternfly": "6.2.3",
"@patternfly/react-code-editor": "6.2.2",
"@patternfly/react-core": "6.2.2",
"@patternfly/react-icons": "6.2.2",
"@patternfly/react-styles": "6.2.2",
"@patternfly/react-table": "6.2.2",
"@patternfly/react-tokens": "6.2.2",
"@reduxjs/toolkit": "^1.9.1",
"@sentry/browser": "^7.119",
"axios": ">=0.22.0 <2.0.0",
Expand All @@ -37,7 +37,7 @@
"@tsconfig/vite-react": "^1.0.1",
"@types/react": "17.0.x",
"@vitejs/plugin-react-swc": "^3.0.1",
"vite": "^5.4.20",
"vite": "^5.4.21",
"vite-plugin-environment": "^1.1.3"
},
"overrides": {
Expand Down
2 changes: 1 addition & 1 deletion apps/assisted-ui/public/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
60 changes: 29 additions & 31 deletions apps/assisted-ui/src/components/AboutModal.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type React from 'react';
import { useCallback, useEffect, useState } from 'react';
import { AboutModal as PFAboutModal, TextContent } from '@patternfly/react-core';
import { AboutModal as PFAboutModal } from '@patternfly/react-core';
import { GIT_SHA, VERSION, SERVICE_LABELS, IMAGE_REPO } from '../config';
import redHatLogo from '/logo.svg';
import { Services, Api, Constants, DetailList, DetailItem } from '@openshift-assisted/ui-lib/ocm';
Expand Down Expand Up @@ -64,36 +64,34 @@ export const AboutModal: React.FC<AboutModalProps> = ({ isOpen, onClose }) => {
brandImageSrc={redHatLogo}
brandImageAlt="Assisted Installer Logo"
>
<TextContent>
<DetailList>
<>
{releaseTag && <DetailItem title="Release tag" value={releaseTag} />}
<DetailItem
title="Assisted Installer UI version"
value={getUIVersion()}
idPrefix="ui-lib-version"
/>
<DetailItem
title="Assisted Installer UI library version"
value={Constants.getAssistedUiLibVersion()}
/>
{Object.keys(versions || {}).map((key) => {
const version = versions ? versions[key] : '';
return (
<DetailItem
key={key}
title={SERVICE_LABELS[key] || key}
value={
<a target="_blank" rel="noopener noreferrer" href={`https://${version}`}>
{version}
</a>
}
/>
);
})}
</>
</DetailList>
</TextContent>
<DetailList>
<>
{releaseTag && <DetailItem title="Release tag" value={releaseTag} />}
<DetailItem
title="Assisted Installer UI version"
value={getUIVersion()}
idPrefix="ui-lib-version"
/>
<DetailItem
title="Assisted Installer UI library version"
value={Constants.getAssistedUiLibVersion()}
/>
{Object.keys(versions || {}).map((key) => {
const version = versions ? versions[key] : '';
return (
<DetailItem
key={key}
title={SERVICE_LABELS[key] || key}
value={
<a target="_blank" rel="noopener noreferrer" href={`https://${version}`}>
{version}
</a>
}
/>
);
})}
</>
</DetailList>
</PFAboutModal>
);
};
2 changes: 1 addition & 1 deletion apps/assisted-ui/src/components/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ window.__app__ = { OCM };
export const App: React.FC = () => (
<BrowserRouter basename={Config.routeBasePath}>
<CompatRouter>
<Page header={<Header />} isManagedSidebar defaultManagedSidebarIsOpen={false}>
<Page masthead={<Header />} isManagedSidebar defaultManagedSidebarIsOpen={false}>
<UILibRoutes
allEnabledFeatures={Features.STANDALONE_DEPLOYMENT_ENABLED_FEATURES}
additionalComponents={refreshToken ? <ChatBot /> : undefined}
Expand Down
Loading
Loading