package Ġde . r ki . cor on aw arn app . app config . sources . remote Ċ Ċ import Ġde . r ki . cor on aw arn app . app config . download . AppConfig Api V 2 Ċ import Ġde . r ki . cor on aw arn app . app config . internal . ApplicationConfiguration Cor rupt Exception Ċ import Ġde . r ki . cor on aw arn app . app config . internal . ApplicationConfiguration Invalid Exception Ċ import Ġde . r ki . cor on aw arn app . app config . internal . Internal Config Data Ċ import Ġde . r ki . cor on aw arn app . storage . Test Settings Ċ import Ġde . r ki . cor on aw arn app . util . C WA Debug Ċ import Ġde . r ki . cor on aw arn app . util . TimeStamp er Ċ import Ġde . r ki . cor on aw arn app . util . security . Signature Validation Ċ import Ġio . kot est . assertions . throw ables . should Throw Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . mock k . Mock K Annotations Ċ import Ġio . mock k . co Every Ċ import Ġio . mock k . every Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġio . mock k . mock k Object Ċ import Ġio . mock k . verify Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġokhttp 3 . Headers Ċ import Ġokhttp 3 . ResponseBody . Companion . to ResponseBody Ċ import Ġok io . ByteString . Companion . decode Hex Ċ import Ġorg . joda . time . Duration Ċ import Ġorg . joda . time . Instant Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġretrofit 2 . Response Ċ import Ġtest helpers . Base IO Test Ċ import Ġtest helpers . preferences . mock Flow Preference Ċ import Ġjava . io . File Ċ Ċ class ĠApp Config Server Test Ġ: ĠBase IO Test () Ġ{ ĊĊĠĠĠ Ġ@ Mock K Ġlateinit Ġvar Ġapi : ĠApp Config Api V 2 ĊĠĠĠ Ġ@ Mock K Ġlateinit Ġvar Ġsignature Validation : ĠSignature Validation ĊĠĠĠ Ġ@ Mock K Ġlateinit Ġvar Ġtime Stamp er : ĠTime Stamp er ĊĠĠĠ Ġ@ Mock K Ġlateinit Ġvar Ġtest Settings : ĠTest Settings ĊĠĠĠ Ġprivate Ġval Ġtest Dir Ġ= ĠFile ( IO _ TEST _ BASE DIR , Ġthis :: class . simple Name !! ) ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this ) ĊĠĠĠĠĠĠĠ Ġtest Dir . mkdir s () ĊĠĠĠĠĠĠĠ Ġtest Dir . exists () ĠshouldBe Ġtrue ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtime Stamp er . now UTC Ġ} Ġreturns ĠInstant . of Epoch Milli ( 1 2 3 4 5 6 7 8 9 ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġsignature Validation . has Valid Signature ( any (), Ġany ()) Ġ} Ġreturns Ġtrue ĊĊĠĠĠĠĠĠĠ Ġmock k Object ( C WA Debug ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĠC WA Debug . is Device For Test ers Build Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtest Settings . fake Correct Device Time Ġ} Ġreturns Ġmock Flow Preference ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun Ġteardown () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Dir . delete Re cursively () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Instance () Ġ= ĠApp Config Server ( ĊĠĠĠĠĠĠĠ Ġapi Ġ= Ġ{ Ġapi Ġ}, ĊĠĠĠĠĠĠĠ Ġsignature Validation Ġ= Ġsignature Validation , ĊĠĠĠĠĠĠĠ Ġtime Stamp er Ġ= Ġtime Stamp er , ĊĠĠĠĠĠĠĠ Ġtest Settings Ġ= Ġtest Settings ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` application Ġconfig Ġdownload `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġapi . get ApplicationConfiguration () Ġ} Ġreturns ĠResponse . success ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAPP CONFIG _ B UNDLE . to ResponseBody (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHeaders . headers Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Date ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Tue , Ġ 0 3 ĠNov Ġ 2 0 2 0 Ġ 0 8 : 4 6 : 0 3 ĠGMT ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ET ag ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" I Ġam Ġan ĠE Tag Ġ:) !", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Cache - Control ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" public , max - age = 1 2 3 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdownload Server Ġ= Ġcreate Instance () ĊĊĠĠĠĠĠĠĠ Ġval Ġconfig Download Ġ= Ġdownload Server . download AppConfig () ĊĠĠĠĠĠĠĠ Ġconfig Download ĠshouldBe ĠInternal Config Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġraw Data Ġ= ĠAPP CONFIG _ RAW , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver Time Ġ= ĠInstant . parse (" 2 0 2 0 - 1 1 - 0 3 T 0 8 : 4 6 : 0 3 . 0 0 0 Z "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Offset Ġ= ĠDuration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInstant . parse (" 2 0 2 0 - 1 1 - 0 3 T 0 8 : 4 6 : 0 3 . 0 0 0 Z "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInstant . of Epoch Milli ( 1 2 3 4 5 6 7 8 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet ag Ġ= Ġ" I Ġam Ġan ĠE Tag Ġ:) !", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Validity Ġ= ĠDuration . standard Seconds ( 1 2 3 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġsignature Validation . has Valid Signature ( any (), Ġany ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` application Ġconfig Ġdata Ġis Ġfault y `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġapi . get ApplicationConfiguration () Ġ} Ġreturns ĠResponse . success ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 2 3 ABC ". decode Hex (). to ResponseBody () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdownload Server Ġ= Ġcreate Instance () ĊĊĠĠĠĠĠĠĠ Ġshould Throw < ApplicationConfiguration Invalid Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Server . download AppConfig () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` application Ġconfig Ġverification Ġfails `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġapi . get ApplicationConfiguration () Ġ} Ġreturns ĠResponse . success ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAPP CONFIG _ B UNDLE . to ResponseBody () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġsignature Validation . has Valid Signature ( any (), Ġany ()) Ġ} Ġreturns Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġdownload Server Ġ= Ġcreate Instance () ĊĊĠĠĠĠĠĠĠ Ġshould Throw < ApplicationConfiguration Cor rupt Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Server . download AppConfig () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` missing Ġserver Ġdate Ġleads Ġto Ġlocal Ġtime Ġfallback `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġapi . get ApplicationConfiguration () Ġ} Ġreturns ĠResponse . success ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAPP CONFIG _ B UNDLE . to ResponseBody (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHeaders . headers Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ET ag ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" I Ġam Ġan ĠE Tag Ġ:) !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdownload Server Ġ= Ġcreate Instance () ĊĊĠĠĠĠĠĠĠ Ġval Ġconfig Download Ġ= Ġdownload Server . download AppConfig () ĊĠĠĠĠĠĠĠ Ġconfig Download ĠshouldBe ĠInternal Config Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġraw Data Ġ= ĠAPP CONFIG _ RAW , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver Time Ġ= ĠInstant . of Epoch Milli ( 1 2 3 4 5 6 7 8 9 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Offset Ġ= ĠDuration . ZERO , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet ag Ġ= Ġ" I Ġam Ġan ĠE Tag Ġ:) !", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Validity Ġ= ĠDuration . standard Seconds ( 3 0 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` missing Ġserver Ġet ag Ġleads Ġto Ġexception `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġapi . get ApplicationConfiguration () Ġ} Ġreturns ĠResponse . success ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAPP CONFIG _ B UNDLE . to ResponseBody () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdownload Server Ġ= Ġcreate Instance () ĊĊĠĠĠĠĠĠĠ Ġshould Throw < ApplicationConfiguration Invalid Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Server . download AppConfig () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` local Ġoffset Ġis Ġthe Ġdifference Ġbetween Ġserver Ġtime Ġand Ġlocal Ġtime `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġapi . get ApplicationConfiguration () Ġ} Ġreturns ĠResponse . success ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAPP CONFIG _ B UNDLE . to ResponseBody (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHeaders . headers Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Date ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Tue , Ġ 0 3 ĠNov Ġ 2 0 2 0 Ġ 0 6 : 3 5 : 1 6 ĠGMT ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ET ag ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" I Ġam Ġan ĠE Tag Ġ:) !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtime Stamp er . now UTC Ġ} Ġreturns ĠInstant . parse (" 2 0 2 0 - 1 1 - 0 3 T 0 5 : 3 5 : 1 6 . 0 0 0 Z ") ĊĊĠĠĠĠĠĠĠ Ġval Ġdownload Server Ġ= Ġcreate Instance () ĊĊĠĠĠĠĠĠĠ Ġdownload Server . download AppConfig () ĠshouldBe ĠInternal Config Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġraw Data Ġ= ĠAPP CONFIG _ RAW , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver Time Ġ= ĠInstant . parse (" 2 0 2 0 - 1 1 - 0 3 T 0 6 : 3 5 : 1 6 . 0 0 0 Z "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Offset Ġ= ĠDuration . standard Hours (- 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet ag Ġ= Ġ" I Ġam Ġan ĠE Tag Ġ:) !", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Validity Ġ= ĠDuration . standard Seconds ( 3 0 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġsetting Ġcan Ġoverride Ġdevice Ġtime Ġoffset Ġon Ġtester Ġbuilds `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġapi . get ApplicationConfiguration () Ġ} Ġreturns ĠResponse . success ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAPP CONFIG _ B UNDLE . to ResponseBody (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHeaders . headers Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Date ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Tue , Ġ 0 3 ĠNov Ġ 2 0 2 0 Ġ 0 6 : 3 5 : 1 6 ĠGMT ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ET ag ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" I Ġam Ġan ĠE Tag Ġ:) !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtime Stamp er . now UTC Ġ} Ġreturns ĠInstant . parse (" 2 0 2 0 - 1 1 - 0 3 T 0 5 : 3 5 : 1 6 . 0 0 0 Z ") ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĠC WA Debug . is Device For Test ers Build Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtest Settings . fake Correct Device Time Ġ} Ġreturns Ġmock Flow Preference ( true ) ĊĠĠĠĠĠĠĠ Ġcreate Instance (). download AppConfig () ĠshouldBe ĠInternal Config Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġraw Data Ġ= ĠAPP CONFIG _ RAW , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver Time Ġ= ĠInstant . parse (" 2 0 2 0 - 1 1 - 0 3 T 0 6 : 3 5 : 1 6 . 0 0 0 Z "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Offset Ġ= ĠDuration . ZERO , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet ag Ġ= Ġ" I Ġam Ġan ĠE Tag Ġ:) !", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Validity Ġ= ĠDuration . standard Seconds ( 3 0 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġsetting Ġcan Ġnot Ġoverride Ġdevice Ġtime Ġoffset Ġon Ġprod Ġbuilds `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġapi . get ApplicationConfiguration () Ġ} Ġreturns ĠResponse . success ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAPP CONFIG _ B UNDLE . to ResponseBody (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHeaders . headers Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Date ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Tue , Ġ 0 3 ĠNov Ġ 2 0 2 0 Ġ 0 6 : 3 5 : 1 6 ĠGMT ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ET ag ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" I Ġam Ġan ĠE Tag Ġ:) !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtime Stamp er . now UTC Ġ} Ġreturns ĠInstant . parse (" 2 0 2 0 - 1 1 - 0 3 T 0 5 : 3 5 : 1 6 . 0 0 0 Z ") ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĠC WA Debug . is Device For Test ers Build Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtest Settings . fake Correct Device Time Ġ} Ġreturns Ġmock Flow Preference ( true ) ĊĠĠĠĠĠĠĠ Ġcreate Instance (). download AppConfig () ĠshouldBe ĠInternal Config Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġraw Data Ġ= ĠAPP CONFIG _ RAW , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver Time Ġ= ĠInstant . parse (" 2 0 2 0 - 1 1 - 0 3 T 0 6 : 3 5 : 1 6 . 0 0 0 Z "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Offset Ġ= ĠDuration . standard Hours (- 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet ag Ġ= Ġ" I Ġam Ġan ĠE Tag Ġ:) !", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Validity Ġ= ĠDuration . standard Seconds ( 3 0 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠAPP CONFIG _ B UNDLE Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 5 0 4 b 0 3 0 4 1 4 0 0 0 8 0 8 0 8 0 0 8 5 6 b 2 2 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a 0 0 0 0 0 0 6 5 7 8 7 0 6 f 7 2 7 4 2 e 6 2 6 9 6 ee 3 e 0 1 6 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" f 2 e 5 5 2 e 6 6 2 f 6 f 1 0 f 9 7 e 0 5 7 9 2 ca 2 8 2 9 2 9 2 8 b 6 d 2 d 7 2 f 2 f 2 fd 7 4 bce 2 fc acf 4 b 2 c 4 f 2 cc ad 3 4 b 2 c 2 8 e 0 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 5 2 e 3 6 2 f 1 f 0 7 4 f 7 1 0 e 0 9 7 f 0 c 0 a 7 4 e 2 a 8 5 4 b 8 0 8 3 5 1 8 0 4 9 8 2 5 9 8 1 4 5 8 3 d 5 8 0 cd 8 2 dd 8 1 4 3 9 0 0 1 0 c 3 c 1 d " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" a 4 b 8 1 4 1 8 3 5 1 8 0 d 1 8 2 d 1 8 1 d 1 8 1 5 6 1 8 2 5 a 0 2 1 cac 0 2 ac 1 2 ac 0 aac 4 0 f 5 ac 1 6 ac 0 eac 8 6 1 0 2 9 1 3 0 7 2 b 3 e " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 1 4 6 0 9 4 6 8 4 1 e 4 7 9 8 1 e 2 5 1 9 2 e 1 6 0 e 7 3 0 1 7 b 2 1 2 1 4 e 8 8 d 0 0 7 7 ba 8 2 5 0 fec 1 5 2 4 b 5 a 4 b 8 b 8 b 8 5 8 0 4 3 8 2 4 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 9 8 8 4 9 8 0 4 5 8 8 5 7 8 8 0 6 a 1 9 2 5 5 8 8 4 c 0 2 4 0 0 5 0 4 b 0 7 0 8 df 2 c 7 8 8 daf 0 0 0 0 0 0 f 1 0 0 0 0 0 0 5 0 4 b 0 3 0 4 1 4 0 0 0 8 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 8 0 8 0 0 8 5 6 b 2 2 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a 0 0 0 0 0 0 6 5 7 8 7 0 6 f 7 2 7 4 2 e 7 3 6 9 6 7 0 1 8 a 0 0 7 5 ff 0 a " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 7 0 1 0 a 3 8 0 a 1 8 6 4 6 5 2 e 7 2 6 b 6 9 2 e 6 3 6 f 7 2 6 f 6 e 6 1 7 7 6 1 7 2 6 e 6 1 7 0 7 0 2 d 6 4 6 5 7 6 1 a 0 2 7 6 3 1 2 2 0 3 3 2 3 6 3 2 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 a 1 3 3 1 2 e 3 2 2 e 3 8 3 4 3 0 2 e 3 1 3 0 3 0 3 4 3 5 2 e 3 4 2 e 3 3 2 e 3 2 1 0 0 1 1 8 0 1 2 2 4 7 3 0 4 5 0 2 2 1 0 0 cf 3 2 ff 2 4 ea 1 8 a 1 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ff cc 7 ff 4 c 9 fe 8 d 1 8 0 8 ce cbc 5 a 3 7 e 3 e 1 d 4 c 9 ce 6 8 2 1 2 0 4 5 0 9 5 8 c 0 2 2 0 6 4 bf 1 2 4 b 6 9 7 3 a 9 b 5 1 0 a 4 3 d 4 7 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 9 ff 9 3 e 0 ef 9 7 a 5 b 8 9 3 c 7 af 4 abc 4 a 8 d 3 9 9 9 6 9 cd 8 a 0 5 0 4 b 0 7 0 8 1 3 c 5 1 7 c 6 8 f 0 0 0 0 0 0 8 a 0 0 0 0 0 0 5 0 4 b 0 1 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 2 1 4 0 0 1 4 0 0 0 8 0 8 0 8 0 0 8 5 6 b 2 2 5 1 df 2 c 7 8 8 daf 0 0 0 0 0 0 f 1 0 0 0 0 0 0 0 a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 0 0 0 0 0 0 0 6 5 7 8 7 0 6 f 7 2 7 4 2 e 6 2 6 9 6 e 5 0 4 b 0 1 0 2 1 4 0 0 1 4 0 0 0 8 0 8 0 8 0 0 8 5 6 b 2 2 5 1 1 3 c 5 1 7 c 6 8 f 0 0 0 0 0 0 8 a " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 0 0 0 0 0 0 a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 e 7 0 0 0 0 0 0 6 5 7 8 7 0 6 f 7 2 7 4 2 e 7 3 6 9 6 7 5 0 4 b 0 5 0 6 0 0 0 0 0 0 0 0 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 2 0 0 0 2 0 0 7 0 0 0 0 0 0 0 ae 0 1 0 0 0 0 0 0 0 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). decode Hex () ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠAPP CONFIG _ RAW Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 8 0 b 1 2 4 d 0 a 2 3 0 a 0 3 4 c 4 f 5 7 1 8 0 f 2 2 1 a 6 8 7 4 7 4 7 0 7 3 3 a 2 f 2 f 7 7 7 7 7 7 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 e 6 3 6 f 7 2 6 f 6 e 6 1 7 7 6 1 7 2 6 e 2 e 6 1 7 0 7 0 0 a 2 6 0 a 0 4 4 8 4 9 4 7 4 8 1 0 0 f 1 8 4 8 2 2 1 a 6 8 7 4 7 4 7 0 7 3 3 a 2 f 2 f 7 7 7 7 7 7 2 e 6 3 6 f 7 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 6 f 6 e 6 1 7 7 6 1 7 2 6 e 2 e 6 1 7 0 7 0 1 a 6 4 0 a 1 0 0 8 0 1 1 0 0 2 1 8 0 3 2 0 0 4 2 8 0 5 3 0 0 6 3 8 0 7 4 0 0 8 1 1 0 0 0 0 0 0 0 0 0 0 0 0 4 9 4 0 1 a 0 a 2 0 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 1 2 8 0 1 3 0 0 1 3 8 0 1 4 0 0 1 2 1 0 0 0 0 0 0 0 0 0 0 0 0 4 9 4 0 2 a 1 0 0 8 0 5 1 0 0 5 1 8 0 5 2 0 0 5 2 8 0 5 3 0 0 5 3 8 0 5 4 0 0 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 3 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 4 4 0 3 a 0 e 1 0 0 1 1 8 0 1 2 0 0 1 2 8 0 1 3 0 0 1 3 8 0 1 4 0 0 1 4 1 0 0 0 0 0 0 0 0 0 0 0 0 4 9 4 0 2 2 1 c 0 a 0 4 0 8 3 7 1 0 3 f 1 2 1 2 0 9 0 0 0 0 0 0 0 0 0 0 0 0 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" f 0 3 f 1 1 0 0 0 0 0 0 0 0 0 0 0 0 e 0 3 f 2 0 1 9 2 a 1 a 0 a 0 a 0 a 0 4 1 0 0 8 1 8 0 2 1 2 0 2 1 0 0 5 1 2 0 c 0 a 0 4 0 8 0 1 1 8 0 4 1 2 0 4 0 8 0 1 1 8 0 4 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). decode Hex (). toByteArray () ĊĠĠĠ Ġ} Ċ } Ċ