3ZC2SRVJQV4JVCUBEWODWQMZYP5ABBISGSEP6Y2DPXFIQ64SAK4AC MIKAQWHPJFAELPV7ATGH6DWR7V4FKHAOYMPAKVFFSGEUNE5IVIDQC QDKKMOEVECJW2Q2NH4Y6VOGPGXLBMRZQ6U7TIZTI2KUR6DOO37IQC UCQXSJU7J6MRHRQ2HDCSNYD7CYU246FGW3T2IDJMVHSPWGCMICVAC R5QXEHUIZLELJGGCZAE7ATNS3CLRJ7JFRENMGH4XXH24C5WABZDQC JOPVPUSAMMU6RFVDQR4NJC4GNNUFB7GPKVH7OS5FKCYS5QZ53VLQC LXTTOB33N2HCUZFIUDRQGGBVHK2HODRG4NBLH6RXRQZDCHF27BSAC NQM25OZVXXUTUBIIWE2QPHC22JMJB7YRIDKS2XTMQLJLCMLTM5SAC KHPSHJN4BMTJ3CHUFQQZU7ZIQDOQDF3L5HV3TRT5OJMYICJAEB5QC 7PZ4CQFVYUMSJKVCNM75VKK5JCUYU6ICHWPZXXIC3S63YJVFCP5QC if edge.prefix and starts_with(frag, edge.prefix) thenif edge.suffix and ends_with(frag, edge.suffix) thenCurrent_state = edge.targetbreakendendCurrent_state = edge.targetbreakendendendfunction switch_color_based_on_suffix(frag)if Next_state[Current_state] == nil thenreturnendfrag = rtrim(frag)for _,edge in pairs(Next_state[Current_state]) do