package Ġcom . h ites hs ah u . slice demo . domain . provider Ċ Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Content Resolver Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . core . graphics . drawable . Icon Compat Ċ import Ġandroidx . slice . Slice Ċ import Ġandroidx . slice . Slice Provider Ċ import Ġandroidx . slice . builders . List Builder Ċ import Ġandroidx . slice . builders . Slice Action Ċ import Ġcom . h ites hs ah u . slice demo . R Ċ import Ġcom . h ites hs ah u . slice demo . model . Screen Name Enum Ċ import Ġcom . h ites hs ah u . slice demo . view . activity . S lices Demo Activity Ċ Ċ /** Ċ Ġ* Ċ Ġ* ĠSimple ĠExample Ġto Ġcreate ĠS lices Ġbased Ġon Ġuri Ċ Ġ*/ Ċ class ĠBasic Slice Provider Ġ: ĠSlice Provider () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject ĠFactory Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPAGE _ KEY Ġ= Ġ" SHOW _ PAGE " Ġ// Ġpassing Ġscreen Ġname ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPAGE _ ACTION Ġ= Ġ" PER FORM _ ACTION " Ġ// Ġpassing Ġaction Ġname ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Slice Provider (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts ĠURL Ġto Ġcontent ĠURI Ġ( i . e . Ġcontent :// com . h ites hs ah u . slice demo ...) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Map Intent To Uri ( intent : ĠIntent ?): ĠUri Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġuri Builder : ĠUri . Builder Ġ= ĠUri . Builder (). scheme ( Content Resolver . SCHEME _ CONTENT ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġuri Builder . build () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġget Ġdata Ġfrom Ġintent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġintent . data ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġget Ġpath Ġfrom Ġintent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Path Ġ= Ġdata ?. path ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull Ġ&& Ġdata Path Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// create Ġpath Ġfrom Ġdata Ġand Ġpath ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġdata Path . replace ("/", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcreate Ġuri Ġfrom Ġpath ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Builder Ġ= Ġuri Builder . path ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReturn ĠURI ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( context Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Builder Ġ= Ġuri Builder . authority ( context . packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġuri Builder . build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠShow Ġappropriate ĠSlice Ġwith Ġpending Ġaction Ġbased Ġon ĠURI Ġpath ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠĠ Ġcontent :// com . h ites hs ah u . slice demo / Ġ: Ġhome ĊĠĠĠĠ Ġ* ĠĠ Ġcontent :// com . h ites hs ah u . slice demo / about Ġ: Ġabout ĊĠĠĠĠ Ġ* ĠĠ Ġcontent :// com . h ites hs ah u . slice demo / contact Ġ: Ġcontact ĊĠĠĠĠ Ġ* ĠĠ Ġcontent :// com . h ites hs ah u . slice demo / etc Ġ: Ġ 4 0 4 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Bind Slice ( slice Uri : ĠUri ): ĠSlice ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsmall - builders - k tx Ġfor Ġa Ġn icer Ġinterface Ġin ĠKotlin . ĊĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġpath Ġfrom ĠUri ĊĠĠĠĠĠĠĠ Ġval Ġslice Uri Path Ġ= Ġslice Uri . path ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġcustom Ġactions Ġbased Ġon ĠURI Ġpath Ġeg . Ġshowing Ġcontact Ġor Ġhome ĊĠĠĠĠĠĠĠ Ġval Ġactivity Action For Path Ġ= Ġcrate Action For Path ( slice Uri Path ) Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġ// Ġreturn Ġa Ġsmall Ġbased Ġon Ġpath Ġand Ġaction ĊĠĠĠĠĠĠĠ Ġwhen Ġ( slice Uri Path ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"/" Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHOME ĠURI ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠList Builder ( context , Ġslice Uri , ĠList Builder . INFINITY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Row ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠList Builder . Row Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Go Ġto Ġ ĠHome Ġ\ uD 8 3 C \ u DF E 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Primary Action ( activity Action For Path )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ about " Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠA BO UT ĠURI ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠList Builder ( context , Ġslice Uri , ĠList Builder . INFINITY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Row ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠList Builder . Row Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Go Ġto ĠAbout Ġ Ġ\ uD 8 3 D \ u DE 0 0 Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Primary Action ( activity Action For Path )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ contact " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCONT ACT ĠURI ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠList Builder ( context , Ġslice Uri , ĠList Builder . INFINITY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Row ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠList Builder . Row Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Go Ġto ĠContact Ġ\ uD 8 3 D \ u DC DE ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Primary Action ( activity Action For Path )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠANY TH ING ĠELSE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠList Builder ( context , Ġslice Uri , ĠList Builder . INFINITY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Row ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠList Builder . Row Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Error Ġ 4 0 4 ĠYou Ġare Ġlong Ġway Ġfrom Ġhome . Ġ\ uD 8 3 D \ u DC 3 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Primary Action ( activity Action For Path )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠC ra ete Ġactions Ġbased Ġon Ġpath ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcrate Action For Path ( slice Path : ĠString ?): ĠSlice Action ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġpending Intent Ġ= ĠIntent ( context , ĠS lices Demo Activity :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġadd Ġpayload Ġbased Ġon Ġpath ĊĠĠĠĠĠĠĠ Ġwhen Ġ( slice Path ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"/" Ġ-> Ġ{ Ġ// ĠHOME ĠURI ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġset Ġdata Ġin Ġintent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpending Intent . putExtra ( PAGE _ KEY , ĠScreen Name Enum . HOME . name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġpending Ġintent Ġwith ĠICON _ IMAGE Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSlice Action . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . getActivity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . currentTimeMillis (). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpending Intent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . FLAG _ ONE _ SHOT ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Compat . create With Resource ( context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . icon ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠList Builder . ICON _ IMAGE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Open ĠApp ") ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ about " Ġ-> Ġ{ Ġ// ĠA BO UT ĠURI ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġset Ġdata Ġin Ġintent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpending Intent . putExtra ( PAGE _ KEY , ĠScreen Name Enum . AB OUT . name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġpending Ġintent Ġwith ĠSMALL _ IMAGE Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSlice Action . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . getActivity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . currentTimeMillis (). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpending Intent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . FLAG _ ONE _ SHOT ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Compat . create With Resource ( context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . small ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠList Builder . SMALL _ IMAGE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Open ĠApp ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ contact " Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġset Ġdata Ġin Ġintent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpending Intent . putExtra ( PAGE _ KEY , ĠScreen Name Enum . CONTACT . name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġpending Ġintent Ġwith ĠL ARGE Ġimage Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSlice Action . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . getActivity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . currentTimeMillis (). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpending Intent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . FLAG _ ONE _ SHOT ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Compat . create With Resource ( context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . large ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠList Builder . LARGE _ IMAGE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Open ĠApp ") ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ Ġ// ĠANY TH ING ĠELSE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpending Intent . putExtra ( PAGE _ KEY , ĠScreen Name Enum . OTHER . name ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDefault Ġwith Ġapp Ġicon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSlice Action . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . getActivity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . currentTimeMillis (). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpending Intent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . FLAG _ ONE _ SHOT ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Compat . create With Resource ( context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . mip map . ic _ launcher ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠList Builder . LARGE _ IMAGE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Open ĠApp ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Slice Pin ned ( slice Uri : ĠUri ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġdata Ġis Ġreceived , Ġcall Ġcontext . content Resolver . notify Change ( slice Uri , Ġnull ) Ġto ĊĠĠĠĠĠĠĠ Ġ// Ġtrigger ĠBasic Slice Provider # on Bind Slice ( Uri ) Ġagain . ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Slice Un pinned ( slice Uri : ĠUri ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠRemove Ġany Ġob servers Ġif Ġnecessary Ġto Ġavoid Ġmemory Ġle aks . ĊĠĠĠ Ġ} Ċ } Ċ