|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LVM2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* |
|
LinWin |
|
|
|
|
4/20/20 |
|
LVM2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Home |
|
|
|
|
|
|
|
|
|
|
|
|
https://serverfault.com/questions/461385/how-to-find-the-physical-volumes-that-hold-a-logical-volume-in-lvm |
|
|
|
|
Install / Fedora |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cronjobs |
|
lsblk |
[root@T30-67 log]# lsblk |
|
|
|
|
|
|
|
$ lsblk |
|
|
|
|
|
|
|
|
|
|
|
|
|
Info (inxi) |
|
|
NAME
MAJ:MIN RM SIZE RO
TYPE MOUNTPOINT |
|
NAME
MAJ:MIN RM SIZE RO
TYPE MOUNTPOINT |
|
|
|
|
|
|
|
Desktops |
|
|
sda
8:0 0
931.5G 0 disk |
|
|
|
|
sda
8:0 0 223,6G 0 disk |
|
|
|
|
|
|
|
|
dnf |
|
|
├─sda1
8:1 0 1G 0 part /boot |
|
|
|
├─sda1
8:1 0 350M 0 part |
|
|
|
|
|
|
|
|
DNS |
|
|
└─sda2
8:2 0
930.5G 0 part |
|
|
|
|
├─sda2
8:2 0 29G 0 part |
|
|
|
|
|
|
|
|
firewalld |
|
|
├─fedora-root 253:0 0 15G 0 lvm / |
|
|
|
|
├─sda3
8:3 0 488M 0 part /boot |
|
|
|
|
|
|
|
LVM |
|
|
└─fedora-swap 253:1 0 7.8G 0 lvm [SWAP] |
|
|
├─sda4
8:4 0 1K 0 part |
|
|
|
|
|
|
|
|
LVM2 |
|
|
sr0
11:0 1 1024M 0 rom |
|
|
|
|
└─sda5
8:5 0 193,8G 0 part |
|
|
|
|
|
|
|
|
N.Neighbor'd |
|
|
|
|
|
|
|
|
|
|
|
|
├─vg_ssd-lv_root_solid 254:0 0 13,3G 0 lvm / |
|
|
|
|
|
|
|
|
NM |
|
|
|
|
|
|
|
|
|
|
|
|
├─vg_ssd-lv_srv_solid
254:2 0 46,6G 0 lvm /srv |
|
|
|
|
|
|
|
Wireless |
|
|
|
|
|
|
|
|
|
|
|
|
└─vg_ssd-lv_home_solid 254:3 0 107G 0 lvm /home |
|
|
|
|
|
|
|
Services |
|
|
|
|
|
|
|
|
|
|
|
|
sdb
8:16 0 74,5G 0 disk |
|
|
|
|
|
|
|
|
Sys Jour |
|
|
|
|
|
|
|
|
|
|
|
|
└─sdb1
8:17 0 74,5G 0 part |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
├─vg_ssd-lv_swap_solid 254:1 0 3,7G 0 lvm [SWAP] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
└─vg_ssd-lv_videos 254:4 0 28G 0 lvm /mnt/videos |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pvs, vgs, lvs |
|
Summary |
|
|
|
LVM tools exmples |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pvs |
[root@T30-67 log]# pvs |
|
|
|
|
|
|
|
List the physical segments used by a logical
volume : |
|
|
|
|
|
|
|
|
|
|
|
PV
VG
Fmt Attr PSize PFree |
|
|
|
$ lvs --segments /dev/vg_ssd/lv_videos |
|
|
|
|
|
|
|
|
|
|
|
|
/dev/sda2 fedora lvm2
a-- <930.51g 907.72g |
|
|
|
LV
VG
Attr #Str
Type SSize |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lv_videos vg_ssd -wi-ao---- 1 linear 20,95g |
|
|
|
|
|
|
|
|
|
|
vgs |
[root@T30-67 log]# vgs |
|
|
|
|
|
|
|
lv_videos vg_ssd -wi-ao---- 1 linear 7,05g |
|
|
|
|
|
|
|
|
|
|
|
VG #PV
#LV #SN Attr VSize VFree |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fedora 1 2 0 wz--n- <930.51g 907.72g |
|
|
|
same with more details: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ lvs --segments /dev/vg_ssd/lv_videos -o
+lv_size,devices |
|
|
|
|
|
|
|
|
|
lvs |
[root@T30-67 log]# lvs |
|
|
|
|
|
|
|
LV
VG
Attr
#Str Type SSize LSize Devices |
|
|
|
|
|
|
|
|
|
LV VG Attr LSize Pool Origin Data% |
|
|
lv_videos vg_ssd -wi-ao---- 1 linear 20,95g 28,00g
/dev/sdb1(12729) |
|
|
|
|
|
|
|
|
|
root fedora -wi-ao---- 15.00g |
|
|
|
|
|
|
lv_videos vg_ssd -wi-ao---- 1 linear 7,05g 28,00g /dev/sdb1(3534) |
|
|
|
|
|
|
|
|
|
swap fedora -wi-ao---- <7.79g |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List the physical extents of a given LV.
Useful to move those segments (using pvmove): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ lvs
/dev/vg_ssd/lv_videos -o seg_pe_ranges |
|
|
|
|
|
|
|
|
|
|
|
pvdisplay, vgdisplay, lvdisplay |
Details |
|
|
PE
Ranges |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/dev/sdb1:12729-18090 |
|
|
|
|
|
|
|
|
|
|
|
|
|
pvdisplay |
[root@T30-67 /]# pvdisplay |
|
|
|
|
|
|
|
/dev/sdb1:3534-5339 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--- Physical volume --- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PV
Name
/dev/sda2 |
|
|
|
|
|
|
The opposite way, list the logical volume
(segments) inside a given Physical Volume: |
|
|
|
|
|
|
|
VG
Name
fedora |
|
|
|
|
|
|
$ pvs
/dev/sdb1 --segments -o +lv_name,lv_size |
|
|
|
|
|
|
|
|
|
|
|
PV Size
930.51 GiB / not usable 4.00 MiB |
PV
VG
Fmt Attr PSize PFree Start SSize LV
LSize |
|
|
|
|
|
|
|
|
Allocatable
yes |
|
|
|
|
|
|
/dev/sdb1 vg_ssd lvm2
a-- 74,53g 22,80g 0 3534
0 |
|
|
|
|
|
|
|
|
PE
Size
4.00 MiB |
|
|
|
|
|
|
/dev/sdb1 vg_ssd lvm2
a-- 74,53g 22,80g 3534 1806 lv_videos 28,00g |
|
|
|
|
|
|
|
|
Total PE
238210 |
|
|
|
|
|
|
/dev/sdb1 vg_ssd lvm2
a-- 74,53g 22,80g 5340 1316
0 |
|
|
|
|
|
|
|
|
Free PE
232377 |
|
|
|
|
|
|
/dev/sdb1 vg_ssd lvm2
a-- 74,53g 22,80g 11776 953 lv_swap_solid 3,72g |
|
|
|
|
|
|
|
|
Allocated PE
5833 |
|
|
|
|
|
|
/dev/sdb1 vg_ssd lvm2
a-- 74,53g 22,80g 12729 5362 lv_videos 28,00g |
|
|
|
|
|
|
|
|
PV
UUID
DPteBz-Qm4c-rXqW-GJoM-hNA1- |
|
|
/dev/sdb1 vg_ssd lvm2
a-- 74,53g 22,80g 18091 988
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vgdisplay |
[root@T30-67 /]# vgdisplay |
|
|
|
|
|
|
|
List the physical segments of a given logical
volume, among other information: |
|
|
|
|
|
|
|
|
--- Volume group --- |
|
|
|
|
|
|
|
$ lvdisplay -m /dev/vg_ssd/lv_videos |
|
|
|
|
|
|
|
|
|
|
|
|
VG
Name
fedora |
|
|
|
|
|
|
[..] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
System ID |
|
|
|
|
|
|
|
|
--- Segments --- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Format
lvm2 |
|
|
|
|
|
|
Logical extents 0 to 5361: |
|
|
|
|
|
|
|
|
|
|
|
|
|
Metadata Areas 1 |
|
|
|
|
|
|
|
Type
linear |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Metadata Sequence No 3 |
|
|
|
|
|
|
|
Physical volume /dev/sdb1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
VG
Access
read/write |
|
|
|
|
|
|
Physical extents 12729 to 18090 |
|
|
|
|
|
|
|
|
|
|
|
|
VG
Status
resizable |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MAX LV
0 |
|
|
|
|
|
|
|
Logical extents 5362 to 7167: |
|
|
|
|
|
|
|
|
|
|
|
|
|
Cur LV
2 |
|
|
|
|
|
|
|
Type
linear |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Open LV
2 |
|
|
|
|
|
|
|
Physical volume /dev/sdb1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Max PV
0 |
|
|
|
|
|
|
|
Physical extents 3534 to 5339 |
|
|
|
|
|
|
|
|
|
|
|
|
Cur PV
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Act PV
1 |
|
|
|
|
|
|
|
Display the Logical volume associated with a
given physical volume , among other information: |
|
|
|
|
|
|
VG
Size
<930.51 GiB |
|
|
|
|
|
|
$ pvdisplay -m /dev/sdb1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PE
Size
4.00 MiB |
|
|
|
|
|
|
[..] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Total PE
238210 |
|
|
|
|
|
|
--- Physical Segments --- |
|
|
|
|
|
|
|
|
|
|
|
|
|
Alloc PE / Size 5833 /
<22.79 GiB |
|
|
|
|
Physical extent 0 to 3533: |
|
|
|
|
|
|
|
|
|
|
|
|
|
Free PE / Size 232377 /
907.72 GiB |
|
|
|
|
FREE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VG
UUID
ZkkHVa-wPfR-vrcO-ELzH-jSKz- |
|
|
Physical extent 0 to 5339: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Logical volume /dev/vg_ssd/lv_videos |
|
|
|
|
|
|
|
|
|
|
|
lvdisplay |
[root@T30-67 /]# lvdisplay |
|
|
|
|
|
|
|
Logical extents 5362 to
7167 |
|
|
|
|
|
|
|
|
|
|
|
|
|
--- Logical volume --- |
|
|
|
|
|
|
|
Physical extent 5340 to 11775: |
|
|
|
|
|
|
|
|
|
|
|
|
|
LV
Path
/dev/fedora/swap |
|
|
|
|
FREE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LV
Name
swap |
|
|
|
|
|
|
Physical extent 11776 to 12728: |
|
|
|
|
|
|
|
|
|
|
|
|
|
VG
Name
fedora |
|
|
|
|
|
|
Logical volume /dev/vg_ssd/lv_swap_solid |
|
|
|
|
|
|
|
|
|
|
|
|
LV
UUID
Gu7Hgt-xNPs-bykh-50lq-hues- |
|
Logical extents 0 to 952 |
|
|
|
|
|
|
|
|
|
|
|
|
|
LV
Write Access
read/write |
|
|
|
|
|
|
Physical extent 12729 to 18090: |
|
|
|
|
|
|
|
|
|
|
|
|
|
LV
Creation host, time T30-67, 2019-02-12 11:39:54 |
|
Logical volume /dev/vg_ssd/lv_videos |
|
|
|
|
|
|
|
|
|
|
|
|
LV
Status
available |
|
|
|
|
|
|
Logical extents 0 to 5361 |
|
|
|
|
|
|
|
|
|
|
|
|
|
#
open
2 |
|
|
|
|
|
|
|
Physical extent 18091 to 19078: |
|
|
|
|
|
|
|
|
|
|
|
|
|
LV
Size
<7.79 GiB |
|
|
|
|
|
|
FREE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Current LE
1993 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Segments
1 |
|
|
|
|
|
|
|
Complex command, but full list : |
|
|
|
|
|
|
|
|
|
|
|
|
|
Allocation
inherit |
|
|
|
|
|
|
$ pvs --segments -o
pv_name,pv_size,seg_size,vg_name,lv_name,lv_size,seg_pe_ranges |
|
|
|
|
|
|
|
Read ahead sectors auto |
|
|
|
|
|
|
PV
PSize SSize VG LV
LSize PE Ranges |
|
|
|
|
|
|
|
|
-
currently set to
256 |
|
|
|
|
|
|
/dev/sda5 193,79g 9,31g vg_ssd lv_root_solid 13,31g /dev/sda5:0-2383 |
|
|
|
|
|
|
|
|
Block device
253:1 |
|
|
|
|
|
|
/dev/sda5 193,79g 3,72g vg_ssd lv_home_solid
107,00g /dev/sda5:2384-3336 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/dev/sda5 193,79g 46,56g vg_ssd lv_srv_solid 46,56g /dev/sda5:3337-15256 |
|
|
|
|
|
|
|
|
--- Logical volume --- |
|
|
|
|
|
|
|
/dev/sda5 193,79g 60,00g vg_ssd lv_home_solid 107,00g
/dev/sda5:15257-30616 |
|
|
|
|
|
|
|
|
LV
Path
/dev/fedora/root |
|
|
|
|
/dev/sda5 193,79g 200,00m
vg_ssd lv_home_solid 107,00g /dev/sda5:30617-30666 |
|
|
|
|
|
|
|
|
LV
Name
root |
|
|
|
|
|
|
/dev/sda5 193,79g 1,05g vg_ssd
0 |
|
|
|
|
|
|
|
|
VG
Name
fedora |
|
|
|
|
|
|
/dev/sda5 193,79g 8,00g vg_ssd lv_home_solid
107,00g /dev/sda5:30937-32984 |
|
|
|
|
|
|
|
|
LV
UUID
SqV0k1-9CuD-Tl62-rl1A-49qF- |
|
/dev/sda5 193,79g 4,00g vg_ssd lv_root_solid 13,31g /dev/sda5:32985-34008 |
|
|
|
|
|
|
|
|
LV
Write Access
read/write |
|
|
|
|
|
|
/dev/sda5 193,79g 20,00g vg_ssd lv_home_solid 107,00g
/dev/sda5:34009-39128 |
|
|
|
|
|
|
|
|
LV
Creation host, time T30-67, 2019-02-12 11:39:54 |
|
/dev/sda5 193,79g 9,80g vg_ssd lv_home_solid
107,00g /dev/sda5:41689-44198 |
|
|
|
|
|
|
|
|
LV
Status
available |
|
|
|
|
|
|
/dev/sda5 193,79g 1,28g vg_ssd lv_home_solid
107,00g /dev/sda5:44199-44525 |
|
|
|
|
|
|
|
|
#
open
1 |
|
|
|
|
|
|
|
/dev/sda5 193,79g 15,86g vg_ssd
0 |
|
|
|
|
|
|
|
|
LV
Size
15.00 GiB |
|
|
|
|
|
|
/dev/sda5 193,79g 4,00g vg_ssd lv_home_solid
107,00g /dev/sda5:48587-49610 |
|
|
|
|
|
|
|
|
Current LE
3840 |
|
|
|
|
|
|
/dev/sdb1
74,53g 13,80g vg_ssd
0 |
|
|
|
|
|
|
|
|
Segments
1 |
|
|
|
|
|
|
|
/dev/sdb1
74,53g 7,05g vg_ssd
lv_videos
28,00g /dev/sdb1:3534-5339 |
|
|
|
|
|
|
|
|
Allocation
inherit |
|
|
|
|
|
|
/dev/sdb1
74,53g 5,14g
vg_ssd
0 |
|
|
|
|
|
|
|
|
Read ahead sectors auto |
|
|
|
|
|
|
/dev/sdb1
74,53g 3,72g vg_ssd
lv_swap_solid 3,72g
/dev/sdb1:11776-12728 |
|
|
|
|
|
|
|
|
-
currently set to
256 |
|
|
|
|
|
|
/dev/sdb1
74,53g 20,95g vg_ssd
lv_videos
28,00g /dev/sdb1:12729-18090 |
|
|
|
|
|
|
|
|
Block device
253:0 |
|
|
|
|
|
|
/dev/sdb1
74,53g 3,86g
vg_ssd
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Examples |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lvresize -L 15G --resizefs MyVolGroup/mediavol |
|
|
|
|
|
|
|
|
|
Set the size of logical volume mediavol in MyVolGroup to 15 GiB
and resize its file system all at once: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lvresize -L 800G --resizefs fedora/root |
|
|
|
|
|
|
|
|
|
Set the size of logical volume root in fedora to 800 GiB
and resize its file system all at once: |
|
|
|
|
|
|
|
lvresize -L +10G --resizefs fedora/root |
|
|
|
|
|
Extend the logical volume root in fedora by 10 GiB and
resize its file system all at once: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lvresize -l +100%FREE
--resizefs emach69-vg/root |
|
|
|
|
|
|
|
|
|
If you want to fill all the free space on a
volume group, use the following command: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[root@T30-67 pictures]# df -h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Filesystem
Size Used Avail Use%
Mounted on |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
devtmpfs
3.9G
0 3.9G 0% /dev |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tmpfs
3.9G 0 3.9G 0% /dev/shm |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tmpfs
3.9G 1.2M 3.9G 1% /run |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tmpfs
3.9G 0 3.9G 0% /sys/fs/cgroup |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/dev/mapper/fedora-root 200G 98G 103G 49% / |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tmpfs
3.9G 0 3.9G 0% /tmp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/dev/sda1
976M 164M 746M 18% /boot |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tmpfs
785M 0 785M 0% /run/user/0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tmpfs
785M 0 785M 0% /run/user/1000 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|