/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠB j Ã¶r n ĠK aut ler Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġnet . ka ut ler Ċ Ċ import Ġcom . char les k orn . k aml . Yaml Ċ import Ġnet . ka ut ler . dao . GitHub Action Ċ import Ġorg . jetbrains . kotlin . gradle . targets . js . du kat . Integr ated D uk at Task Ċ import Ġorg . jetbrains . kotlin . gradle . targets . js . nodejs . Node Js Root Extension Ċ import Ġjava . security . Message Digest Ċ import Ġkotlin . text . Regex Option . MULT IL INE Ċ Ċ plugins Ġ{ ĊĠĠĠ Ġkotlin (" js ") Ċ } Ċ Ċ kotlin Ġ{ ĊĠĠĠ Ġjs Ġ{ ĊĠĠĠĠĠĠĠ Ġuse Common Js () ĊĠĠĠĠĠĠĠ Ġbinaries . executable () ĊĠĠĠĠĠĠĠ Ġnodejs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Task Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtool Cache Dir Ġ= Ġ"$ temporary Dir / tool - cache " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment (" RUN NER _ TEMP ", Ġ"$ temporary Dir / runner - temp ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment (" RUN NER _ TOOL _ CACHE ", Ġtool Cache Dir ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠYaml ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. default ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. parse ( GitHub Action . serializer (), Ġfile (" action . yml "). read Text ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inputs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . filter Values Ġ{ Ġit . default Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . filter Keys Ġ{ Ġ! System . getenv (). containsKey (" INPUT _${ it . toUpperCase () }") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . forEach Ġ{ Ġname , Ġinput Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" INPUT _${ name . toUpperCase () }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name Ġ== Ġ" use - cache ") Ġ" false " Ġelse Ġinput . default !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo First (" Delete Ġtool - cache ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile ( tool Cache Dir ). delete Re cursively () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ configure < Node Js Root Extension > Ġ{ ĊĠĠĠ Ġnode Version Ġ= Ġ" node ". version ĊĠĠĠ Ġversions . du kat . version Ġ= Ġ" du kat ". version ĊĊĠĠĠ Ġ// Ġwork - around Ġfor Ġhttps :// github . com / Kotlin / du kat / issues / 1 0 3 ĊĠĠĠ Ġnpm Install Task Provider Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpatched D uk at 0 0 1 2 Cli Js Ġ= Ġlayout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. project Directory ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. file (" resources / du kat - cli - 0 . 0 . 1 2 . js ") ĊĊĠĠĠĠĠĠĠ Ġval Ġpatched D uk at 0 5 7 Cli Js Ġ= Ġlayout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. project Directory ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. file (" resources / du kat - cli - 0 . 5 . 7 . js ") ĊĊĠĠĠĠĠĠĠ Ġinputs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. files ( patched D uk at 0 0 1 2 Cli Js , Ġpatched D uk at 0 5 7 Cli Js ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with PropertyName (" patched Ġd uk at - cli . js Ġfiles ") ĊĊĠĠĠĠĠĠĠ Ġdo Last Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd uk at Cli Js Ġ= Ġroot Package Dir . resolve (" node _ modules / du kat / bin / du kat - cli . js ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( du kat Cli Js . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsha 2 5 6 Ġ= ĠMessage Digest ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getInstance (" SHA - 2 5 6 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. digest ( du kat Cli Js . read Bytes ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ("") Ġ{ Ġ"% 0 2 x ". format ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( sha 2 5 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġalready Ġa Ġpatched Ġversion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 3 2 b 7 c 9 1 ecf 8 c 9 4 b 8 f 1 e 5 5 4 da 8 7 0 a 6 1 7 4 3 7 e 4 2 1 db 0 7 e 4 0 d 5 5 8 dbb 9 5 9 bd 2 2 1 cb 5 e ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" e 1 6 d 6 8 4 be 9 b 9 0 c 2 d 5 d 7 8 f 9 0 0 7 7 dc 9 6 9 0 2 5 3 fd 4 d 7 bc 6 b 4 8 f 9 4 bbd 4 8 b 1 6 9 2 bf 2 d 5 " Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ do Last ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġoriginal Ġ 0 . 0 . 1 2 Ġversion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ce eb df bb 9 4 d 1 0 3 eb 4 4 da 2 6 5 b 5 7 2 e 5 1 fb 6 9 ff 4 bb 1 c 5 2 4 b 9 4 f 6 2 1 c 6 a 6 e 9 4 7 1 6 ac 8 " Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpatched D uk at 0 0 1 2 Cli Js . as File . copy To ( du kat Cli Js , Ġoverwrite Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġoriginal Ġ 0 . 5 . 7 Ġversion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 2 6 4 5 e 1 4 9 1 b 6 8 6 3 8 d 2 c 1 c 4 1 4 6 5 0 2 ae 9 ed 5 0 3 7 baa 8 2 cc 1 2 e 6 c 5 5 0 7 0 4 7 1 d 9 6 2 1 8 7 " Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpatched D uk at 0 5 7 Cli Js . as File . copy To ( du kat Cli Js , Ġoverwrite Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠRuntimeException (" du kat - cli . js Ġhas Ġunexpected Ġchecksum Ġ$ sha 2 5 6 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ repositories Ġ{ ĊĠĠĠ Ġmaven Central () ĊĠĠĠ Ġj center () Ċ } Ċ Ċ dependencies Ġ{ ĊĠĠĠ Ġimplementation (" org . jetbrains . kotlin x : kotlin x - coroutines - core ". with Version ) ĊĠĠĠ Ġimplementation (" org . jetbrains : kotlin - extensions ". with Version ) ĊĠĠĠ Ġimplementation (" org . jetbrains . kotlin x : kotlin x - nodejs ". with Version ) ĊĠĠĠ Ġimplementation ( npm ("@ actions / cache ")) ĊĠĠĠ Ġimplementation ( npm ("@ actions / core ")) ĊĠĠĠ Ġimplementation ( npm ("@ actions / exec ")) ĊĠĠĠ Ġimplementation ( npm ("@ actions / http - client ")) ĊĠĠĠ Ġimplementation ( npm ("@ actions / io ")) ĊĠĠĠ Ġimplementation ( npm ("@ actions / tool - cache ")) ĊĠĠĠ Ġimplementation ( npm ("@ types / semver ")) ĊĠĠĠ Ġimplementation ( npm (" semver ")) ĊĠĠĠ Ġimplementation ( npm (" null - writable ")) Ċ } Ċ Ċ tasks . with Type ( Integr ated D uk at Task :: class ) Ġ{ ĊĠĠĠ Ġdo Last Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Js Module Annotations ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" core . module _ @ actions _ core . kt " Ġto Ġ"@ actions / core ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" io . module _ @ actions _ io . kt " Ġto Ġ"@ actions / io ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" exec . module _ @ actions _ exec . kt " Ġto Ġ"@ actions / exec ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" index . module _ @ actions _ http - client . kt " Ġto Ġ"@ actions / http - client ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tool - cache . module _ @ actions _ tool - cache . kt " Ġto Ġ"@ actions / tool - cache ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" cache . module _ @ actions _ cache . kt " Ġto Ġ"@ actions / cache " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġdelete External s Files ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"*. module _ node . kt " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfix External s Files ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" lib . es 2 0 1 8 . async iterable . module _ du kat . kt " Ġto ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" \ Q val Ġ` return `: Ġ(( value : ĠT Return ) Ġ-> ĠPromise < dynamic Ġ/* ĠIterator Yield Result < T > Ġ| ĠIterator Return Result < TR eturn > Ġ*/ >) ?\ E $ """ Ġto Ġ" val Ġ` return `: Ġ(( value : Ġdynamic ) Ġ-> ĠPromise < dynamic Ġ/* ĠIterator Yield Result < T > Ġ| ĠIterator Return Result < TR eturn > Ġ*/ >) ?", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ^ *\ Q val Ġ` return `: Ġ(( value : ĠPromise Like < TR eturn >) Ġ-> ĠPromise < dynamic Ġ/* ĠIterator Yield Result < T > Ġ| ĠIterator Return Result < TR eturn > Ġ*/ >) ?\ E \ r ?\ n \ Q ĠĠĠĠĠĠĠ Ġget () Ġ= Ġdefined Ex tern ally \ E \ r ?\ n """ Ġto Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" null - writable . module _ null - writable . kt " Ġto ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" \ Q ` T $ 1 6 `\ E """ Ġto Ġ""" ` T \$ 1 0 ` """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tool - cache . module _ @ actions _ tool - cache . kt " Ġto ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" \ Q type alias ĠHTTP Error Ġ= ĠError \ E $ """ Ġto Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" \ Q type alias ĠI Tool Release Ġ= ĠI Tool Release \ E $ """ Ġto Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" \ Q type alias ĠI Tool Release File Ġ= ĠI Tool Release File \ E $ """ Ġto Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" cache . module _ @ actions _ cache . kt " Ġto ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" \ Q type alias ĠValidationError Ġ= ĠError \ E $ """ Ġto Ġ" external Ġclass ĠValidationError Ġ: ĠThrowable ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" \ Q type alias ĠReser ve Cache Error Ġ= ĠError \ E $ """ Ġto Ġ" external Ġclass ĠReser ve Cache Error Ġ: ĠThrowable " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" semver . module _ semver . kt " Ġto ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" \ Q @ Js Module (" semver ") \ E $ """ Ġto Ġ""" @ Js Module (" semver / classes / semver ") """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ tasks . assemble Ġ{ ĊĠĠĠ Ġdepends On ( project (": n cc - packer "). tasks . named (" run ")) Ċ } Ċ Ċ fun Ġadd Js Module Annotations ( task : ĠTask , Ġvar arg Ġpairs : ĠPair < String , ĠString >) Ġ{ ĊĠĠĠ Ġfor Ġ(( file , Ġmodule ) Ġin Ġpairs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtask ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. outputs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. files ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as File Tree ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. matching Ġ{ Ġinclude (" ** /$ file ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. single File ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Text ("@ file : Js Module (\" $ module \") \ n ${ read Text () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġdelete External s Files ( task : ĠTask , Ġvar arg Ġfiles : ĠString ) Ġ{ ĊĠĠĠ Ġtask ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. outputs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. files ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. as File Tree ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. matching Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġfiles ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinclude (" ** /$ file ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġit . delete () Ġ} Ċ } Ċ Ċ fun Ġfix External s Files ( task : ĠTask , Ġvar arg Ġpairs : ĠPair < String , ĠList < Pair < String , ĠString >> >) Ġ{ ĊĠĠĠ Ġfor Ġ(( file , Ġfix ups ) Ġin Ġpairs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtask ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. outputs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. files ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as File Tree ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. matching Ġ{ Ġinclude (" ** /$ file ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. single File ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Text ( fix ups ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( pattern , Ġreplacement ) Ġ-> Ġpattern . to Regex ( MULT IL INE ) Ġto Ġreplacement Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fold ( read Text ()) Ġ{ Ġcurrent , Ġ( regex , Ġreplacement ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregex . replace ( current , Ġreplacement ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ