bfg-common 1.5.771 → 1.5.773
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/assets/localization/local_be.json +3 -0
- package/assets/localization/local_en.json +3 -0
- package/assets/localization/local_hy.json +3 -0
- package/assets/localization/local_kk.json +3 -0
- package/assets/localization/local_ru.json +3 -0
- package/assets/localization/local_zh.json +3 -0
- package/components/atoms/table/dataGrid/DataGrid.vue +4 -19
- package/components/common/pages/backups/modals/createBackup/configuration/backupWindow/BackupWindow.vue +29 -29
- package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/MaxBandwidth.vue +69 -69
- package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
- package/components/common/pages/backups/modals/createBackup/configuration/strategy/Strategy.vue +38 -38
- package/components/common/pages/backups/modals/createBackup/lib/models/interfaces.ts +8 -8
- package/components/common/pages/scheduledTasks/table/Table.vue +11 -3
- package/components/common/pages/scheduledTasks/table/{expandDetails/Old.vue → detailsList/DetailsList.vue} +4 -7
- package/components/common/pages/scheduledTasks/table/{expandDetails/historyRun/HistoryRun.vue → detailsList/Table.vue} +5 -9
- package/components/common/pages/scheduledTasks/table/{expandDetails/historyRun → detailsList}/lib/config/historyRunsTable.ts +2 -4
- package/components/common/pages/scheduledTasks/table/{expandDetails/historyRun → detailsList}/lib/config/tableKeys.ts +1 -1
- package/components/common/pages/scheduledTasks/table/{expandDetails/lib/config/expandDetails.ts → detailsList/lib/config/tasksRowDetails.ts} +1 -3
- package/components/common/pages/scheduledTasks/table/lib/config/scheduledTasksTable.ts +0 -3
- package/package.json +1 -1
- package/components/common/configure/securityProfile/SecurityProfile.vue +0 -28
- package/components/common/configure/securityProfile/lockdownMode/LockdownMode.vue +0 -112
- package/components/common/configure/securityProfile/lockdownMode/lib/utils/constructData.ts +0 -27
- package/components/common/configure/securityProfile/lockdownMode/modals/lockdownModeEdit/LockdownModeEdit.vue +0 -61
- package/components/common/configure/securityProfile/lockdownMode/modals/lockdownModeEdit/New.vue +0 -5
- package/components/common/configure/securityProfile/lockdownMode/modals/lockdownModeEdit/Old.vue +0 -109
- package/components/common/configure/securityProfile/lockdownMode/modals/lockdownModeEdit/exceptionUsers/ExceptionUsers.vue +0 -28
- package/components/common/configure/securityProfile/lockdownMode/modals/lockdownModeEdit/exceptionUsers/New.vue +0 -5
- package/components/common/configure/securityProfile/lockdownMode/modals/lockdownModeEdit/exceptionUsers/old/Old.vue +0 -180
- package/components/common/configure/securityProfile/lockdownMode/modals/lockdownModeEdit/exceptionUsers/old/lib/config/table.ts +0 -64
- package/components/common/configure/securityProfile/lockdownMode/modals/lockdownModeEdit/exceptionUsers/old/lib/config/tableKeys.ts +0 -6
- package/components/common/configure/securityProfile/lockdownMode/modals/lockdownModeEdit/exceptionUsers/old/lib/models/types.ts +0 -1
- package/components/common/configure/securityProfile/lockdownMode/modals/lockdownModeEdit/lib/config/tabs.ts +0 -19
- package/components/common/configure/securityProfile/lockdownMode/modals/lockdownModeEdit/lockdownMode/LockdownMode.vue +0 -22
- package/components/common/configure/securityProfile/lockdownMode/modals/lockdownModeEdit/lockdownMode/New.vue +0 -5
- package/components/common/configure/securityProfile/lockdownMode/modals/lockdownModeEdit/lockdownMode/Old.vue +0 -76
- package/components/common/configure/securityProfile/lockdownMode/tools/New.vue +0 -5
- package/components/common/configure/securityProfile/lockdownMode/tools/Old.vue +0 -30
- package/components/common/configure/securityProfile/lockdownMode/tools/Tools.vue +0 -29
- package/components/common/pages/scheduledTasks/table/expandDetails/ExpandDetails.vue +0 -30
- package/components/common/pages/scheduledTasks/table/expandDetails/New.vue +0 -61
- package/store/inventory/modules/configure/securityProfile/actions.ts +0 -58
- package/store/inventory/modules/configure/securityProfile/getters.ts +0 -10
- package/store/inventory/modules/configure/securityProfile/lib/models/interfaces.ts +0 -16
- package/store/inventory/modules/configure/securityProfile/mutations.ts +0 -13
- package/store/inventory/modules/configure/securityProfile/state.ts +0 -7
- package/store/inventory/modules/configure/securityProfile/store.ts +0 -12
- /package/components/common/pages/scheduledTasks/table/{expandDetails/historyRun → detailsList}/lib/models/types.ts +0 -0
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { UI_T_ExceptionUsersTableKeys } from '~/components/common/configure/securityProfile/lockdownMode/modals/lockdownModeEdit/exceptionUsers/old/lib/models/types'
|
|
2
|
-
|
|
3
|
-
export const exceptionUsersTableKeys: UI_T_ExceptionUsersTableKeys[] = [
|
|
4
|
-
'action',
|
|
5
|
-
'user',
|
|
6
|
-
]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type UI_T_ExceptionUsersTableKeys = 'action' | 'user'
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
2
|
-
import type { UI_I_VerticalTabs } from '~/components/atoms/tabs/lib/models/interfaces'
|
|
3
|
-
|
|
4
|
-
export const navigateTabsFunc = (
|
|
5
|
-
localization: UI_I_Localization
|
|
6
|
-
): UI_I_VerticalTabs[] => {
|
|
7
|
-
return [
|
|
8
|
-
{
|
|
9
|
-
value: 1,
|
|
10
|
-
text: localization.common.lockdownMode,
|
|
11
|
-
testId: 'lockdown-mode-tab',
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
value: 2,
|
|
15
|
-
text: localization.configureSecurityProfile.exceptionUsers,
|
|
16
|
-
testId: 'exception-users-tab',
|
|
17
|
-
},
|
|
18
|
-
]
|
|
19
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<component :is="currentComponent" v-model:form="form" />
|
|
3
|
-
</template>
|
|
4
|
-
|
|
5
|
-
<script setup lang="ts">
|
|
6
|
-
import type { UI_I_LockdownModeData } from '~/store/inventory/modules/configure/securityProfile/lib/models/interfaces'
|
|
7
|
-
|
|
8
|
-
const form = defineModel<UI_I_LockdownModeData>('form', {
|
|
9
|
-
required: true,
|
|
10
|
-
})
|
|
11
|
-
|
|
12
|
-
const { $store }: any = useNuxtApp()
|
|
13
|
-
|
|
14
|
-
const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
|
|
15
|
-
const currentComponent = computed(() =>
|
|
16
|
-
isNewView.value
|
|
17
|
-
? defineAsyncComponent(() => import('./New.vue'))
|
|
18
|
-
: defineAsyncComponent(() => import('./Old.vue'))
|
|
19
|
-
)
|
|
20
|
-
</script>
|
|
21
|
-
|
|
22
|
-
<style scoped lang="scss"></style>
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="lockdown-mode">
|
|
3
|
-
<h5 class="font-bold">{{ localization.common.lockdownMode }}</h5>
|
|
4
|
-
<p>{{ localization.configureSecurityProfile.lockdownModeDesc }}</p>
|
|
5
|
-
|
|
6
|
-
<div class="clr-form-control">
|
|
7
|
-
<label class="clr-col-12 clr-col-md-12 clr-control-label">
|
|
8
|
-
{{ localization.configureSecurityProfile.specifyHostLockdownMode }}
|
|
9
|
-
</label>
|
|
10
|
-
<div class="radio-content">
|
|
11
|
-
<div class="label-content">
|
|
12
|
-
<div class="flex-align-center">
|
|
13
|
-
<input
|
|
14
|
-
id="disabledValue"
|
|
15
|
-
v-model="form.lockdownMode"
|
|
16
|
-
type="radio"
|
|
17
|
-
class="custom-radio-button absolute"
|
|
18
|
-
value="disabled"
|
|
19
|
-
name="lockdownMode"
|
|
20
|
-
/>
|
|
21
|
-
<label for="disabledValue" class="custom-radio-label">
|
|
22
|
-
{{ localization.common.disabled }}
|
|
23
|
-
</label>
|
|
24
|
-
</div>
|
|
25
|
-
</div>
|
|
26
|
-
</div>
|
|
27
|
-
<div class="radio-content">
|
|
28
|
-
<div class="label-content">
|
|
29
|
-
<div class="flex-align-center">
|
|
30
|
-
<input
|
|
31
|
-
id="normalValue"
|
|
32
|
-
v-model="form.lockdownMode"
|
|
33
|
-
type="radio"
|
|
34
|
-
class="custom-radio-button absolute"
|
|
35
|
-
value="normal"
|
|
36
|
-
name="lockdownMode"
|
|
37
|
-
/>
|
|
38
|
-
<label for="normalValue" class="custom-radio-label">
|
|
39
|
-
{{ localization.common.normal }}
|
|
40
|
-
</label>
|
|
41
|
-
</div>
|
|
42
|
-
</div>
|
|
43
|
-
</div>
|
|
44
|
-
<div class="radio-content">
|
|
45
|
-
<div class="label-content">
|
|
46
|
-
<div class="flex-align-center">
|
|
47
|
-
<input
|
|
48
|
-
id="strictValue"
|
|
49
|
-
v-model="form.lockdownMode"
|
|
50
|
-
type="radio"
|
|
51
|
-
class="custom-radio-button absolute"
|
|
52
|
-
value="strict"
|
|
53
|
-
name="lockdownMode"
|
|
54
|
-
/>
|
|
55
|
-
<label for="strictValue" class="custom-radio-label">
|
|
56
|
-
{{ localization.common.strict }}
|
|
57
|
-
</label>
|
|
58
|
-
</div>
|
|
59
|
-
</div>
|
|
60
|
-
</div>
|
|
61
|
-
</div>
|
|
62
|
-
</div>
|
|
63
|
-
</template>
|
|
64
|
-
|
|
65
|
-
<script setup lang="ts">
|
|
66
|
-
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
67
|
-
import type { UI_I_LockdownModeData } from '~/store/inventory/modules/configure/securityProfile/lib/models/interfaces'
|
|
68
|
-
|
|
69
|
-
const form = defineModel<UI_I_LockdownModeData>('form', {
|
|
70
|
-
required: true,
|
|
71
|
-
})
|
|
72
|
-
|
|
73
|
-
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
74
|
-
</script>
|
|
75
|
-
|
|
76
|
-
<style scoped lang="scss"></style>
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<common-headline :headline="props.title" class="items-center">
|
|
3
|
-
<template #action>
|
|
4
|
-
<button
|
|
5
|
-
class="btn btn-sm btn-secondary ng-star-inserted"
|
|
6
|
-
@click="emits('show-edit')"
|
|
7
|
-
>
|
|
8
|
-
{{ localization.common.edit }}...
|
|
9
|
-
</button>
|
|
10
|
-
</template>
|
|
11
|
-
</common-headline>
|
|
12
|
-
<p>{{ props.description }}</p>
|
|
13
|
-
</template>
|
|
14
|
-
|
|
15
|
-
<script setup lang="ts">
|
|
16
|
-
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
17
|
-
|
|
18
|
-
const props = defineProps<{
|
|
19
|
-
title: string
|
|
20
|
-
description: string
|
|
21
|
-
}>()
|
|
22
|
-
|
|
23
|
-
const emits = defineEmits<{
|
|
24
|
-
(event: 'show-edit'): void
|
|
25
|
-
}>()
|
|
26
|
-
|
|
27
|
-
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
28
|
-
</script>
|
|
29
|
-
|
|
30
|
-
<style scoped lang="scss"></style>
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<component
|
|
3
|
-
:is="currentComponent"
|
|
4
|
-
:title="localization.common.lockdownMode"
|
|
5
|
-
:description="localization.configureSecurityProfile.lockdownModeDesc"
|
|
6
|
-
@show-edit="emits('show-edit')"
|
|
7
|
-
/>
|
|
8
|
-
</template>
|
|
9
|
-
|
|
10
|
-
<script setup lang="ts">
|
|
11
|
-
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
12
|
-
|
|
13
|
-
const emits = defineEmits<{
|
|
14
|
-
(event: 'show-edit'): void
|
|
15
|
-
}>()
|
|
16
|
-
|
|
17
|
-
const { $store }: any = useNuxtApp()
|
|
18
|
-
|
|
19
|
-
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
20
|
-
|
|
21
|
-
const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
|
|
22
|
-
const currentComponent = computed(() =>
|
|
23
|
-
isNewView.value
|
|
24
|
-
? defineAsyncComponent(() => import('./New.vue'))
|
|
25
|
-
: defineAsyncComponent(() => import('./Old.vue'))
|
|
26
|
-
)
|
|
27
|
-
</script>
|
|
28
|
-
|
|
29
|
-
<style scoped lang="scss"></style>
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<component :is="currentComponent" :expand-data="normalizedSchedulerDetails" />
|
|
3
|
-
</template>
|
|
4
|
-
|
|
5
|
-
<script lang="ts" setup>
|
|
6
|
-
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
7
|
-
import type { UI_I_ScheduledTasksTableItem } from '~/components/common/pages/scheduledTasks/lib/models/interfaces'
|
|
8
|
-
import type { UI_I_ScheduleTableRowDetails } from '~/components/common/pages/scheduledTasks/table/lib/models/interfaces'
|
|
9
|
-
import { detailsListFunc } from '~/components/common/pages/scheduledTasks/table/expandDetails/lib/config/expandDetails'
|
|
10
|
-
|
|
11
|
-
const props = defineProps<{
|
|
12
|
-
data: UI_I_ScheduledTasksTableItem
|
|
13
|
-
}>()
|
|
14
|
-
|
|
15
|
-
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
16
|
-
const { $store }: any = useNuxtApp()
|
|
17
|
-
|
|
18
|
-
const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
|
|
19
|
-
const currentComponent = computed(() =>
|
|
20
|
-
isNewView.value
|
|
21
|
-
? defineAsyncComponent(() => import('./New.vue'))
|
|
22
|
-
: defineAsyncComponent(() => import('./Old.vue'))
|
|
23
|
-
)
|
|
24
|
-
|
|
25
|
-
const normalizedSchedulerDetails = computed<UI_I_ScheduleTableRowDetails[]>(
|
|
26
|
-
() => {
|
|
27
|
-
return detailsListFunc(props.data, localization.value)
|
|
28
|
-
}
|
|
29
|
-
)
|
|
30
|
-
</script>
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="expand-details" />
|
|
3
|
-
</template>
|
|
4
|
-
|
|
5
|
-
<script lang="ts" setup>
|
|
6
|
-
// import type { UI_I_DataTableBodyData } from '~/node_modules/bfg-uikit/components/ui/dataTable/models/interfaces'
|
|
7
|
-
|
|
8
|
-
// const props = defineProps<{
|
|
9
|
-
// expandData: UI_I_DataTableBodyData[]
|
|
10
|
-
// }>()
|
|
11
|
-
|
|
12
|
-
</script>
|
|
13
|
-
|
|
14
|
-
<style lang="scss" scoped>
|
|
15
|
-
@import 'assets/scss/common/mixins.scss';
|
|
16
|
-
%properties {
|
|
17
|
-
@include flex($align: center);
|
|
18
|
-
font-family: 'Inter', sans-serif;
|
|
19
|
-
font-weight: 400;
|
|
20
|
-
font-size: 12px;
|
|
21
|
-
line-height: 14.52px;
|
|
22
|
-
}
|
|
23
|
-
.expand-details {
|
|
24
|
-
display: grid;
|
|
25
|
-
grid-template-columns: auto 1fr;
|
|
26
|
-
column-gap: 24px;
|
|
27
|
-
row-gap: 12px;
|
|
28
|
-
&__row {
|
|
29
|
-
display: contents;
|
|
30
|
-
height: 18px;
|
|
31
|
-
}
|
|
32
|
-
&__label {
|
|
33
|
-
@extend %properties;
|
|
34
|
-
color: #9da6ad;
|
|
35
|
-
text-transform: capitalize;
|
|
36
|
-
|
|
37
|
-
&.events {
|
|
38
|
-
height: 18px;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
&__value {
|
|
42
|
-
@extend %properties;
|
|
43
|
-
color: var(--title-form-first-color);
|
|
44
|
-
&.disabled {
|
|
45
|
-
color: var(--table-disabled-btn);
|
|
46
|
-
}
|
|
47
|
-
.icon {
|
|
48
|
-
margin-right: 4px;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
&__status {
|
|
52
|
-
@include flex($align: center);
|
|
53
|
-
.ui-chip {
|
|
54
|
-
width: max-content;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
&__tooltip {
|
|
58
|
-
margin-left: 6px;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
</style>
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import type { UI_I_RefreshStack } from '~/store/main/lib/interfaces'
|
|
2
|
-
import type { UI_I_Options } from '~/lib/models/composables/useMyFetch/interfaces'
|
|
3
|
-
import type {
|
|
4
|
-
API_UI_I_Error,
|
|
5
|
-
API_UI_I_Response,
|
|
6
|
-
UI_I_CommitOptions,
|
|
7
|
-
} from '~/lib/models/store/interfaces'
|
|
8
|
-
import type {
|
|
9
|
-
UI_I_SecurityProfileData,
|
|
10
|
-
UI_API_I_SecurityProfileData,
|
|
11
|
-
} from '~/store/inventory/modules/configure/securityProfile/lib/models/interfaces'
|
|
12
|
-
|
|
13
|
-
export default {
|
|
14
|
-
async A_GET_SECURITY_PROFILE(
|
|
15
|
-
context: {
|
|
16
|
-
commit: <T>(arg0: string, arg1: T) => void
|
|
17
|
-
dispatch: (
|
|
18
|
-
arg0: string,
|
|
19
|
-
arg1: UI_I_RefreshStack,
|
|
20
|
-
arg2: UI_I_CommitOptions
|
|
21
|
-
) => void
|
|
22
|
-
},
|
|
23
|
-
payload: string
|
|
24
|
-
): Promise<API_UI_I_Error | void> {
|
|
25
|
-
const url = `ui/hosts/${payload}/securityProfile`
|
|
26
|
-
const options: UI_I_Options = {
|
|
27
|
-
method: 'GET',
|
|
28
|
-
key: Date.now().toString(),
|
|
29
|
-
onResponse({
|
|
30
|
-
response,
|
|
31
|
-
}: API_UI_I_Response<UI_API_I_SecurityProfileData>) {
|
|
32
|
-
const data = response._data
|
|
33
|
-
context.commit<UI_I_SecurityProfileData>('M_SET_SECURITY_PROFILE', data)
|
|
34
|
-
},
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// TODO удалить после апи
|
|
38
|
-
const data: UI_API_I_SecurityProfileData = {
|
|
39
|
-
lockdownMode: {
|
|
40
|
-
lockdownMode: 'disabled',
|
|
41
|
-
exceptionUsers: ['user 1', 'user 2'],
|
|
42
|
-
},
|
|
43
|
-
}
|
|
44
|
-
context.commit<UI_I_SecurityProfileData>('M_SET_SECURITY_PROFILE', data)
|
|
45
|
-
|
|
46
|
-
const { error } = await useMyFetch<never, API_UI_I_Error>(url, options)
|
|
47
|
-
|
|
48
|
-
if (error.value?.data?.error_code) {
|
|
49
|
-
Promise.reject(error.value.data.error_message)
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
context.dispatch(
|
|
53
|
-
'main/A_ADD_IN_GLOBAL_REFRESH',
|
|
54
|
-
{ key: 'hostSystemSecurityProfile', url, options },
|
|
55
|
-
{ root: true }
|
|
56
|
-
)
|
|
57
|
-
},
|
|
58
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
UI_I_SecurityProfileData,
|
|
3
|
-
UI_I_SecurityProfileState,
|
|
4
|
-
} from '~/store/inventory/modules/configure/securityProfile/lib/models/interfaces'
|
|
5
|
-
|
|
6
|
-
export default {
|
|
7
|
-
getSystemSecurityProfile: (
|
|
8
|
-
state: UI_I_SecurityProfileState
|
|
9
|
-
): UI_I_SecurityProfileData | null => state.securityProfileData,
|
|
10
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export interface UI_API_I_LockdownModeData {
|
|
2
|
-
lockdownMode: string
|
|
3
|
-
exceptionUsers: string[]
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
export interface UI_API_I_SecurityProfileData {
|
|
7
|
-
lockdownMode: UI_API_I_LockdownModeData
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export interface UI_I_LockdownModeData extends UI_API_I_LockdownModeData {}
|
|
11
|
-
|
|
12
|
-
export interface UI_I_SecurityProfileData extends UI_API_I_SecurityProfileData {}
|
|
13
|
-
|
|
14
|
-
export interface UI_I_SecurityProfileState {
|
|
15
|
-
securityProfileData: UI_I_SecurityProfileData | null
|
|
16
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
UI_I_SecurityProfileData,
|
|
3
|
-
UI_I_SecurityProfileState,
|
|
4
|
-
} from '~/store/inventory/modules/configure/securityProfile/lib/models/interfaces'
|
|
5
|
-
|
|
6
|
-
export default {
|
|
7
|
-
M_SET_SECURITY_PROFILE(
|
|
8
|
-
state: UI_I_SecurityProfileState,
|
|
9
|
-
payload: UI_I_SecurityProfileData
|
|
10
|
-
): void {
|
|
11
|
-
state.securityProfileData = payload
|
|
12
|
-
},
|
|
13
|
-
}
|
|
File without changes
|