/** Ċ Ġ* ĠSPDX - File Copyright Text : Ġ( c ) Ġ 2 0 2 2 ĠArt Ñĳ m ĠIG Ġ< github . com / rtm igo > Ċ Ġ* ĠSPDX - License - Identifier : ĠMIT Ċ Ġ* Ċ Ġ*/ Ċ Ċ /** Ċ Ġ* ĠÐ ¤ ÑĥÐ½Ðº ÑĨÐ¸Ð¸ , ĠÐ¿Ð¾Ð¼ Ð¾Ð³ Ð°Ñİ ÑīÐ¸Ðµ ĠÐ² ĠÐ´ ÐµÑĢ ÐµÐ² Ðµ ĠÐº Ð°ÑĤ Ð°Ð» Ð¾Ð³ Ð¾Ð² ĠÐ½ Ð°Ð¹ ÑĤÐ¸ ĠÑĦÐ°Ð¹Ð» ĠÐ² ÑĢ Ð¾Ð´ Ðµ Ġ 1 2 3 / 4 5 6 / 7 8 9 . zip , Ċ Ġ* ĠÑĥ ĠÐºÐ¾ÑĤÐ¾ÑĢ Ð¾Ð³Ð¾ ĠÐ² Ð¾ÑĤ ĠÑįÑĤÐ¾ ĠÑĩ Ð¸Ñģ Ð»Ð¾ Ġ 1 2 3 4 5 6 7 8 9 ĠÐ¼ Ð°Ðº Ñģ Ð¸Ð¼ Ð°Ð»ÑĮ Ð½Ð¾ . ĊĊ Ġ* ĠÐľ Ñĭ ĠÑģÑĤÑĢ ÐµÐ¼ Ð¸Ð¼ ÑģÑı ĠÐĿ Ðķ ĠÐ¾Ð± ÑħÐ¾Ð´ Ð¸ÑĤÑĮ ĠÑĢ ÐµÐº ÑĥÑĢ Ñģ Ð¸Ð² Ð½Ð¾ ĠÐ²ÑģÐµ ĠÐ´ ÐµÑĢ ÐµÐ² Ð¾ ĠÐº Ð°ÑĤ Ð°Ð» Ð¾Ð³ Ð¾Ð² . ĠÐľ Ñĭ ĠÐ¿ÑĢ Ð¾ÑģÑĤ Ð¾ ĠÐ± ÐµÑĢ ÐµÐ¼ Ċ Ġ* ĠÐ¿Ð¾ÑģÐ» ÐµÐ´ Ð½Ð¸ Ð¹ ĠÐ¿Ð¾Ð´ Ðº Ð°ÑĤ Ð°Ð» Ð¾Ð³ ĠÐ¸Ð· Ġ' 1 2 3 /', ĠÐ¿Ð¾ÑĤ Ð¾Ð¼ ĠÐ¿Ð¾ÑģÐ» ÐµÐ´ Ð½Ð¸ Ð¹ ĠÑĦÐ°Ð¹Ð» ĠÐ¸Ð· Ġ' 1 2 3 / 4 5 6 /'. ĊĊ Ġ* ĠÐĴ Ð¾Ð· Ð¼Ð¾Ð¶ ÐµÐ½ ĠÐ¿Ð¾Ð´ Ð² Ð¾ Ñħ : ĠÐ½Ð°Ð¿ ÑĢ Ð¸Ð¼ÐµÑĢ , ĠÑĥ ĠÐ½Ð° Ñģ ĠÐµ ÑģÑĤÑĮ ĠÐ¿ ÑĥÑģÑĤ Ð¾Ð¹ ĠÐº Ð°ÑĤ Ð°Ð» Ð¾Ð³ Ġ' 9 9 9 /' ĠÐ¸ ĠÐ¿ ÑĥÑģÑĤ Ð¾Ð¹ Ġ' 9 9 9 / 8 8 8 '. Ċ Ġ* ĠÐĺ Ñħ ĠÐ½ ÑĥÐ¶ Ð½Ð¾ ĠÐ¿ÑĢÐ¾ Ð¸Ð³ Ð½ Ð¾ÑĢ Ð¸ÑĢÐ¾Ð² Ð°ÑĤÑĮ ĠÐ¸ ĠÐ´ Ð¾Ð± ÑĢ Ð°ÑĤÑĮÑģÑı ĠÐ´Ð¾ Ġ' 1 2 3 / 4 5 6 / 7 8 9 . zip ' ĠÐº ÑĢÐ°ÑĤ Ñĩ Ð°Ð¹ ÑĪ Ð¸Ð¼ ĠÐ¿ ÑĥÑĤ ÐµÐ¼ . ĊĊ Ġ* ĠÐ¡ ÑĢÐµÐ´ Ð¸ ĠÑĦÐ°Ð¹Ð» Ð¾Ð² ĠÐ¸ ĠÐº Ð°ÑĤ Ð°Ð» Ð¾Ð³ Ð¾Ð² ĠÐ½Ð° Ñģ ĠÐ¸Ð½ ÑĤÐµÑĢ ÐµÑģ ÑĥÑİ ÑĤ ĠÑĤÐ¾Ð»ÑĮÐºÐ¾ ĠÑĤ Ðµ , ĠÐ¸Ð¼ ÐµÐ½Ð° ĠÐºÐ¾ÑĤÐ¾ÑĢ ÑĭÑħ ĠÐ½Ð° Ñĩ Ð¸ Ð½Ð° ÑİÑĤÑģÑı Ċ Ġ* ĠÑģ ĠÑĩ Ð¸Ñģ ÐµÐ» . ĠÐĿ Ð°Ð¿ ÑĢ Ð¸Ð¼ÐµÑĢ , Ġ' 5 5 5 ', Ġ' 5 5 5 suffix ', Ġ' 5 5 5 . zip '. Ċ Ġ*/ Ċ Ċ package Ġio . github . rtm igo . line compress Ċ Ċ import Ġjava . nio . file . Not Directory Exception Ċ import Ġjava . nio . file . Path Ċ import Ġkotlin . io . path . list Directory Entries Ċ import Ġkotlin . io . path . name Ċ Ċ internal Ġfun Ġstrings Sorted By Num Prefix ( names Same Dir : ĠList < String >, Ġreverse : ĠBoolean ): ĠList < String > Ġ{ ĊĠĠĠ Ġreturn Ġnames Same Dir ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠPair ( num Prefix ( it ), Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . first Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġif Ġ( reverse ) Ġ- it . first !! Ġelse Ġit . first !! Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . second Ġ} Ċ } Ċ Ċ internal Ġfun Ġdirectory Entries Sorted By Num Prefix ( parent : ĠPath , Ġreverse : ĠBoolean ) Ġ= Ġsequence < Path > Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( basename Ġin Ġstrings Sorted By Num Prefix ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . list Directory Entries (). map Ġ{ Ġit . name Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreverse ĊĠĠĠĠĠĠĠ Ġ)) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġyield ( parent . resolve ( basename )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ(_ : ĠNot Directory Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġhappens Ġwhen Ġwe Ġtry Ġto Ġlist Ġa Ġfile ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠÐŀ Ð± ÑħÐ¾Ð´ Ð¸Ð¼ ĠÐ´ ÐµÑĢ ÐµÐ² Ð¾ ĠÐº Ð°ÑĤ Ð°Ð» Ð¾Ð³ Ð¾Ð² . Ċ Ġ* Ċ Ġ* ĠÐĴ Ñģ Ðµ ĠÑĢ ÐµÐ· ÑĥÐ»ÑĮ ÑĤ Ð°ÑĤ Ñĭ ĠÐ±ÑĥÐ´ ÑĥÑĤ ĠÐ¾ÑĤ Ñģ Ð¾ÑĢ ÑĤÐ¸ ÑĢÐ¾Ð² Ð°Ð½ Ñĭ ĠÐ¿Ð¾ ĠÐ·Ð½Ð°Ñĩ ÐµÐ½Ð¸Ñı Ð¼ ĠÑĩ Ð¸Ñģ Ð» Ð¾Ð² ÑĭÑħ ĠÐ¿ÑĢ Ðµ ÑĦ Ð¸Ðº Ñģ Ð¾Ð² : Ċ Ġ* Ċ Ġ* Ġ* Ġ 1 0 0 a / 2 0 0 b / 9 9 8 c Ċ Ġ* Ġ* Ġ 1 0 0 a / 2 0 0 b / 9 9 9 c Ċ Ġ* Ġ* Ġ 1 0 0 a / 2 0 1 b / 0 0 0 c Ċ Ġ* Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÑĩ Ð¸Ñģ Ð» Ð¾Ð² Ð¾Ð³Ð¾ ĠÐ¿ÑĢ Ðµ ÑĦ Ð¸Ðº Ñģ Ð° ĠÐ½ ÐµÑĤ Ġ- ĠÐ¿ Ñĥ ÑĤÑĮ Ġ( ÑĦ Ð°Ð¹ Ð» ĠÐ¸Ð»Ð¸ ĠÐº Ð°ÑĤ Ð°Ð» Ð¾Ð³ ) ĠÐ¸ Ð³ Ð½ Ð¾ÑĢ Ð¸ ÑĢÑĥ ÐµÑĤÑģÑı . Ċ Ġ* Ċ Ġ* ĠÐŁ ÑĥÑģÑĤ ÑĭÐµ ĠÐº Ð°ÑĤ Ð°Ð» Ð¾Ð³ Ð¸ ĠÐ¸ Ð³ Ð½ Ð¾ÑĢ Ð¸ ÑĢÑĥ ÑİÑĤÑģÑı . Ċ Ġ* Ċ Ġ* ĠÐļ Ð¾ÑĢ Ð¾ÑĤ ÐºÐ¸ Ðµ ĠÐ¿ Ñĥ ÑĤÐ¸ , ĠÐ² ÑĢ Ð¾Ð´ Ðµ Ġ' 1 0 0 a / 2 0 0 b ', ĠÐµÑģÐ»Ð¸ ĠÐ¼Ñĭ ĠÐ¸ Ñī ÐµÐ¼ ĠÐ¿ Ñĥ ÑĤÑĮ ĠÐ¸Ð· ĠÑĤÑĢ ÐµÑħ ĠÑĩ Ð°ÑģÑĤ ÐµÐ¹ Ġ- Ċ Ġ* ĠÐ¸ Ð³ Ð½ Ð¾ÑĢ Ð¸ ÑĢÑĥ ÑİÑĤÑģÑı . Ċ Ġ* Ċ Ġ*/ Ċ internal Ġfun Ġrecurse Paths ( parent : ĠPath , Ġreverse : ĠBoolean , Ġgo De eper : ĠInt ): ĠSequence < Path > Ġ= ĊĠĠĠ Ġsequence Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( go De eper Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( result Ġin Ġdirectory Entries Sorted By Num Prefix ( parent , Ġreverse )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyield ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( sub Ġin Ġdirectory Entries Sorted By Num Prefix ( parent , Ġreverse )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( result Ġin Ġrecurse Paths ( sub , Ġreverse , Ġgo De eper Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyield ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ