package Ġcom . b sel zer . k tx . library Ċ Ċ import Ġandroidx . compose . foundation . Border Stroke Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . foundation . lazy . Lazy Column Ċ import Ġandroidx . compose . foundation . lazy . items Indexed Ċ import Ġandroidx . compose . foundation . remember Scroll State Ċ import Ġandroidx . compose . foundation . vertical Scroll Ċ import Ġandroidx . compose . material .* Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . Shape Ċ import Ġandroidx . compose . ui . text . TextStyle Ċ import Ġandroidx . compose . ui . text . style . Text Overflow Ċ import Ġandroidx . compose . ui . unit . Dp Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . window . Dialog Properties Ċ import Ġcom . b sel zer . k tx . compose . ui . app bar . Material AppBar Title Ċ import Ġcom . b sel zer . k tx . compose . ui . dialog . Confirmation Button Ċ import Ġcom . b sel zer . k tx . compose . ui . dialog . Material AlertDialog Ċ import Ġcom . mike pen z . about libraries . entity . Library Ċ Ċ /** Ċ Ġ* ĠL ays Ġout Ġcards Ġfor Ġeach Ġof Ġthe Ġ[ libraries ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġmodifier Ġthe Ġcolumn Ġmodifier Ċ Ġ* Ġ@ param Ġcontent Padding Ġthe Ġcolumn Ġpadding Ċ Ġ* Ġ@ param Ġtitle Style Ġthe Ġstyle Ġof Ġthe Ġtext Ġfor Ġthe Ġname Ġof Ġthe Ġlibrary , Ġand Ġthe Ġname Ġof Ġthe Ġlicense Ġon Ġthe Ġdialog Ċ Ġ* Ġ@ param Ġsubtitle Style Ġthe Ġstyle Ġof Ġthe Ġtext Ġfor Ġthe Ġname Ġof Ġthe Ġauthor Ġand Ġartifact Ġversion Ġof Ġthe Ġlibrary Ċ Ġ* Ġ@ param Ġdialog Style Ġthe Ġstyle Ġof Ġthe Ġtext Ġfor Ġthe Ġlicense Ġin Ġthe Ġdialog Ċ Ġ* Ġ@ param Ġbutton Style Ġthe Ġstyle Ġof Ġthe Ġtext Ġfor Ġthe Ġdialog Ġbuttons Ċ Ġ* Ġ@ param Ġbutton Colors Ġthe Ġcolors Ġof Ġthe Ġdialog Ġbuttons Ċ Ġ* Ġ@ param Ġshape Ġthe Ġdialog Ġshape Ċ Ġ* Ġ@ param ĠbackgroundColor Ġthe Ġcolor Ġof Ġthe Ġdialog Ġbackground Ċ Ġ* Ġ@ param Ġcontent Color Ġthe Ġcolor Ġof Ġthe Ġdialog Ġcontent Ċ Ġ* Ġ@ param Ġitem Border Ġthe Ġborder Ġof Ġeach Ġindividual Ġcard Ċ Ġ* Ġ@ param Ġitem Elevation Ġthe Ġelevation Ġof Ġeach Ġindividual Ġcard Ċ Ġ* Ġ@ param Ġdivider Ġthe Ġdivider Ġbetween Ġeach Ġindividual Ġcard Ċ Ġ* Ġ@ param Ġlicense BackgroundColor Ġthe Ġcolor Ġof Ġthe Ġbackground Ġbehind Ġthe Ġname Ġof Ġthe Ġlicense Ċ Ġ* Ġ@ param Ġlicense Content Color Ġthe Ġcolor Ġof Ġthe Ġtext Ġfor Ġthe Ġname Ġof Ġthe Ġlicense Ċ Ġ* Ġ@ param Ġlicense Style Ġthe Ġstyle Ġof Ġthe Ġtext Ġfor Ġthe Ġname Ġof Ġthe Ġlicense Ċ Ġ* Ġ@ param Ġdialog Shape Ġthe Ġshape Ġof Ġthe Ġdialog Ċ Ġ* Ġ@ param Ġdialog BackgroundColor Ġthe Ġcolor Ġof Ġthe Ġbackground Ġof Ġthe Ġdialog Ċ Ġ* Ġ@ param Ġdialog Content Color Ġthe Ġcolor Ġof Ġthe Ġtext Ġfor Ġthe Ġdialog Ċ Ġ* Ġ@ param Ġdialog Properties Ġthe Ġdialog Ġproperties Ċ Ġ* Ġ@ param Ġlibraries Ġthe Ġlibraries Ġto Ġcreate Ġcards Ġfor Ċ Ġ*/ Ċ @ Composable Ċ fun ĠLibrary Column ( ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġcontent Padding : ĠPadding Values Ġ= ĠPadding Values ( all Ġ= Ġ 0 . dp ), ĊĠĠĠ Ġtitle Style : ĠTextStyle Ġ= ĠMaterial Theme . typography . h 6 , ĊĠĠĠ Ġsubtitle Style : ĠTextStyle Ġ= ĠMaterial Theme . typography . subtitle 1 , ĊĠĠĠ Ġdialog Style : ĠTextStyle Ġ= ĠMaterial Theme . typography . body 1 , ĊĠĠĠ Ġbutton Style : ĠTextStyle Ġ= ĠMaterial Theme . typography . button , ĊĠĠĠ Ġbutton Colors : ĠButton Colors Ġ= ĠButton Defaults . button Colors (), ĊĠĠĠ Ġshape : ĠShape Ġ= ĠMaterial Theme . shapes . medium , ĊĠĠĠ ĠbackgroundColor : ĠColor Ġ= ĠMaterial Theme . colors . surface , ĊĠĠĠ Ġcontent Color : ĠColor Ġ= Ġcontent Color For ( backgroundColor ), ĊĠĠĠ Ġitem Border : ĠBorder Stroke ? Ġ= Ġnull , ĊĠĠĠ Ġitem Elevation : ĠD p Ġ= Ġ 1 . dp , ĊĠĠĠ Ġdivider : Ġ@ Composable Ġ() Ġ-> ĠUnit Ġ= Ġ{ ĠSp acer ( modifier Ġ= ĠModifier . height ( 1 6 . dp )) Ġ}, ĊĠĠĠ Ġlicense BackgroundColor : ĠColor Ġ= ĠMaterial Theme . colors . primary , ĊĠĠĠ Ġlicense Content Color : ĠColor Ġ= Ġcontent Color For ( license BackgroundColor ), ĊĠĠĠ Ġlicense Style : ĠTextStyle Ġ= ĠMaterial Theme . typography . subtitle 2 , ĊĠĠĠ Ġdialog Shape : ĠShape Ġ= ĠMaterial Theme . shapes . medium , ĊĠĠĠ Ġdialog BackgroundColor : ĠColor Ġ= ĠMaterial Theme . colors . surface , ĊĠĠĠ Ġdialog Content Color : ĠColor Ġ= Ġcontent Color For ( dialog BackgroundColor ), ĊĠĠĠ Ġdialog Properties : ĠDialog Properties Ġ= ĠDialog Properties (), ĊĠĠĠ Ġlibraries : ĠList < Library > Ċ ) Ġ{ ĊĠĠĠ Ġvar Ġselected Ġby Ġremember Ġ{ Ġmutable State Of < Library ? >( null ) Ġ} ĊĠĠĠ Ġselected ?. let Ġ{ Ġvalue Ġ-> ĊĠĠĠĠĠĠĠ ĠLicense Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Dialog Ġ= Ġ{ Ġif Ġ(! it ) Ġselected Ġ= Ġnull Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshape Ġ= Ġdialog Shape , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= Ġdialog BackgroundColor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Color Ġ= Ġdialog Content Color , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties Ġ= Ġdialog Properties , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Style Ġ= Ġbutton Style , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Colors Ġ= Ġbutton Colors , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Style Ġ= Ġtitle Style , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Style Ġ= Ġdialog Style , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlibrary Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠLazy Column ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠ Ġcontent Padding Ġ= Ġcontent Padding ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitems Indexed ( libraries ) Ġ{ Ġindex , Ġlibrary Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLicense Card ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape Ġ= Ġshape , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠbackgroundColor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Color Ġ= Ġcontent Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Ġ= Ġitem Border , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelevation Ġ= Ġitem Elevation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Style Ġ= Ġtitle Style , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle Style Ġ= Ġsubtitle Style , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlicense BackgroundColor Ġ= Ġlicense BackgroundColor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Content Color Ġ= Ġlicense Content Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Style Ġ= Ġlicense Style , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġselected Ġ= Ġlibrary Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlibrary Ġ= Ġlibrary , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġlibraries . count () Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdivider () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠL ays Ġout Ġthe Ġdialog Ġfor Ġthe Ġfirst Ġlicense Ġof Ġthe Ġselected Ġ[ library ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġshow Dialog Ġthe Ġblock Ġfor Ġsetting Ġwhether Ġthe Ġdialog Ġshould Ġbe Ġshown Ċ Ġ* Ġ@ param Ġshape Ġthe Ġdialog Ġshape Ċ Ġ* Ġ@ param ĠbackgroundColor Ġthe Ġcolor Ġof Ġthe Ġdialog Ġbackground Ċ Ġ* Ġ@ param Ġcontent Color Ġthe Ġcolor Ġof Ġthe Ġdialog Ġcontent Ċ Ġ* Ġ@ param Ġproperties Ġthe Ġproperties Ċ Ġ* Ġ@ param Ġtitle Style Ġthe Ġstyle Ġof Ġthe Ġtext Ġfor Ġthe Ġname Ġof Ġthe Ġlicense Ċ Ġ* Ġ@ param Ġcontent Style Ġthe Ġstyle Ġof Ġthe Ġtext Ġfor Ġthe Ġlicense Ġcontent Ċ Ġ* Ġ@ param Ġbutton Style Ġthe Ġstyle Ġof Ġthe Ġtext Ġfor Ġthe Ġdialog Ġbuttons Ċ Ġ* Ġ@ param Ġbutton Colors Ġthe Ġcolors Ġof Ġthe Ġdialog Ġbuttons Ċ Ġ* Ġ@ param Ġlibrary Ġthe Ġlibrary Ġto Ġdisplay Ġthe Ġfirst Ġlicense Ġfor Ċ Ġ*/ Ċ @ Composable Ċ fun ĠLicense Dialog ( ĊĠĠĠ Ġshow Dialog : Ġ( Boolean ) Ġ-> ĠUnit , ĊĠĠĠ Ġshape : ĠShape Ġ= ĠMaterial Theme . shapes . medium , ĊĠĠĠ ĠbackgroundColor : ĠColor Ġ= ĠMaterial Theme . colors . surface , ĊĠĠĠ Ġcontent Color : ĠColor Ġ= Ġcontent Color For ( backgroundColor ), ĊĠĠĠ Ġproperties : ĠDialog Properties Ġ= ĠDialog Properties (), ĊĠĠĠ Ġtitle Style : ĠTextStyle Ġ= ĠMaterial Theme . typography . h 6 , ĊĠĠĠ Ġcontent Style : ĠTextStyle Ġ= ĠMaterial Theme . typography . body 1 , ĊĠĠĠ Ġbutton Style : ĠTextStyle Ġ= ĠMaterial Theme . typography . button , ĊĠĠĠ Ġbutton Colors : ĠButton Colors Ġ= ĠButton Defaults . button Colors (), ĊĠĠĠ Ġlibrary : ĠLibrary , Ċ ) Ġ{ ĊĠĠĠ Ġval Ġlicense Ġ= Ġlibrary . licenses . first OrNull () ĊĠĠĠ ĠMaterial AlertDialog ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill MaxSize (), ĊĠĠĠĠĠĠĠ Ġshow Dialog Ġ= Ġshow Dialog , ĊĠĠĠĠĠĠĠ Ġshape Ġ= Ġshape , ĊĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠbackgroundColor , ĊĠĠĠĠĠĠĠ Ġcontent Color Ġ= Ġcontent Color , ĊĠĠĠĠĠĠĠ Ġproperties Ġ= Ġproperties , ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ{ ĠMaterial AppBar Title ( title Ġ= Ġlicense ?. name Ġ?: Ġ" No ĠLicense ", Ġstyle Ġ= Ġtitle Style ) Ġ}, ĊĠĠĠĠĠĠĠ Ġpositive Button Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfirm ation Button ( colors Ġ= Ġbutton Colors , Ġtext Style Ġ= Ġbutton Style ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Dialog ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġif Ġ( license Ġ== Ġnull ) Ġ" No Ġlicense Ġfound ." Ġelse Ġlicense . license Content Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ ĠText ( modifier Ġ= ĠModifier . vertical Scroll ( remember Scroll State ()), Ġtext Ġ= Ġtext , Ġstyle Ġ= Ġcontent Style ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠL ays Ġout Ġa Ġcard Ġfor Ġdisplaying Ġthe Ġname , Ġauthor , Ġar ifact Ġversion , Ġand Ġname Ġof Ġthe Ġlicenses Ġfor Ġthe Ġ[ library ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġshape Ġthe Ġdialog Ġshape Ċ Ġ* Ġ@ param ĠbackgroundColor Ġthe Ġcolor Ġof Ġthe Ġdialog Ġbackground Ċ Ġ* Ġ@ param Ġcontent Color Ġthe Ġcolor Ġof Ġthe Ġdialog Ġcontent Ċ Ġ* Ġ@ param Ġborder Ġthe Ġborder Ċ Ġ* Ġ@ param Ġelevation Ġthe Ġelevation Ċ Ġ* Ġ@ param Ġtitle Style Ġthe Ġstyle Ġof Ġthe Ġtext Ġfor Ġthe Ġname Ġof Ġthe Ġlibrary Ċ Ġ* Ġ@ param Ġsubtitle Style Ġthe Ġstyle Ġof Ġthe Ġtext Ġfor Ġthe Ġname Ġof Ġthe Ġauthor Ġand Ġartifact Ġversion Ġof Ġthe Ġlibrary Ċ Ġ* Ġ@ param Ġlicense BackgroundColor Ġthe Ġcolor Ġof Ġthe Ġbackground Ġbehind Ġthe Ġname Ġof Ġthe Ġlicense Ċ Ġ* Ġ@ param Ġlicense Content Color Ġthe Ġcolor Ġof Ġthe Ġtext Ġfor Ġthe Ġname Ġof Ġthe Ġlicense Ċ Ġ* Ġ@ param Ġlicense Style Ġthe Ġstyle Ġof Ġthe Ġtext Ġfor Ġthe Ġname Ġof Ġthe Ġlicense Ċ Ġ* Ġ@ param ĠonClick Ġthe Ġon - click Ġhandler Ċ Ġ* Ġ@ param Ġlibrary Ġthe Ġlibrary Ġto Ġdisplay Ġinformation Ġfor Ċ Ġ*/ Ċ @ Opt In ( Experimental Material Api :: class ) Ċ @ Composable Ċ fun ĠLicense Card ( ĊĠĠĠ Ġshape : ĠShape Ġ= ĠMaterial Theme . shapes . medium , ĊĠĠĠ ĠbackgroundColor : ĠColor Ġ= ĠMaterial Theme . colors . surface , ĊĠĠĠ Ġcontent Color : ĠColor Ġ= Ġcontent Color For ( backgroundColor ), ĊĠĠĠ Ġborder : ĠBorder Stroke ? Ġ= Ġnull , ĊĠĠĠ Ġelevation : ĠD p Ġ= Ġ 1 . dp , ĊĠĠĠ Ġtitle Style : ĠTextStyle Ġ= ĠMaterial Theme . typography . h 6 , ĊĠĠĠ Ġsubtitle Style : ĠTextStyle Ġ= ĠMaterial Theme . typography . subtitle 1 , ĊĠĠĠ Ġlicense BackgroundColor : ĠColor Ġ= ĠMaterial Theme . colors . primary , ĊĠĠĠ Ġlicense Content Color : ĠColor Ġ= Ġcontent Color For ( license BackgroundColor ), ĊĠĠĠ Ġlicense Style : ĠTextStyle Ġ= ĠMaterial Theme . typography . subtitle 2 , ĊĠĠĠ ĠonClick : Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġlibrary : ĠLibrary Ċ ) Ġ= ĠCard ( ĊĠĠĠ Ġmodifier Ġ= ĠModifier . fill Max Width (), ĊĠĠĠ Ġshape Ġ= Ġshape , ĊĠĠĠ ĠbackgroundColor Ġ= ĠbackgroundColor , ĊĠĠĠ Ġcontent Color Ġ= Ġcontent Color , ĊĠĠĠ Ġborder Ġ= Ġborder , ĊĠĠĠ Ġelevation Ġ= Ġelevation , ĊĠĠĠ ĠonClick Ġ= ĠonClick , Ċ ) Ġ{ ĊĠĠĠ ĠColumn ( modifier Ġ= ĠModifier . fill Max Width ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġlibrary . name , Ġstyle Ġ= Ġtitle Style , Ġmax Lines Ġ= Ġ 1 , Ġoverflow Ġ= ĠText Overflow . El lipsis ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( library . author . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġlibrary . author , Ġstyle Ġ= Ġsubtitle Style , Ġmax Lines Ġ= Ġ 1 , Ġoverflow Ġ= ĠText Overflow . El lipsis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlibrary . artifact Version ?. let Ġ{ Ġversion Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġversion , Ġstyle Ġ= Ġsubtitle Style , Ġmax Lines Ġ= Ġ 1 , Ġoverflow Ġ= ĠText Overflow . Clip ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( library . licenses . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( top Ġ= Ġ 8 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlibrary . licenses . forEach Ġ{ Ġlicense Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBadge ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( end Ġ= Ġ 4 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Color Ġ= Ġlicense Content Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= Ġlicense BackgroundColor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġlicense . name , Ġstyle Ġ= Ġlicense Style ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }