MNR2KHIOEYQXJ72DODRL44JUB7YY44UFSEECASKNMTAEJ2ZMKI3AC 3HPUUCKCF5KC257LSRJWNUT7HXOWZP5ZKEUU3BGSQQTQSOVX5CGQC GG2553RBUKMCWIAD3EWJV7C2QH2BIS5V2E3BDTFSTYRHAPXGBF7QC ZTZOO2OQ2DXRG3MI4RQVNWRHALXQ6BCIOWTTYPP2URQF5EWSNTOAC R5QXEHUIZLELJGGCZAE7ATNS3CLRJ7JFRENMGH4XXH24C5WABZDQC BULPIBEGL7TMK6CVIE7IS7WGAHGOSUJBGJSFQK542MOWGHP2ADQQC 3VHUIIATPOF7FXB7NTL5MESCV5BCQACII2D7QZ4UIUCBX3CWXMMAC 6K5PFF6XBFTM6CXUVVFIH4CQMCMPHTND3ICDMRMNOME5BUBF27NQC NQM25OZVXXUTUBIIWE2QPHC22JMJB7YRIDKS2XTMQLJLCMLTM5SAC PLKNHYZ4KXWWKC2DHXCI4WVO23I7VMEVYT5H2J6JDE4S3D3CHDJQC JOPVPUSAMMU6RFVDQR4NJC4GNNUFB7GPKVH7OS5FKCYS5QZ53VLQC K5UKK5UVQBJN5Q27LLMJ7YQKENNHZOARPJQCJQOXQ4KFMKLINELQC GPJ2T6KIOWUI6YL7SR6NWVFQQ5B3KIUFAKYQ22VB72HKQR2377BAC endfunction starts_with(s, prefix)if #s < #prefix thenreturn falseendfor i=1,#prefix doif s:sub(i,i) ~= prefix:sub(i,i) thenreturn falseendendreturn trueendfunction ends_with(s, suffix)if #s < #suffix thenreturn falseendfor i=0,#suffix-1 doif s:sub(#s-i,#s-i) ~= suffix:sub(#suffix-i,#suffix-i) thenreturn falseendendreturn trueend
if edge.suffix and ends_with(frag, edge.suffix) thenCurrent_state = edge.targetbreakendendif edge.prefix and starts_with(frag, edge.prefix) thenCurrent_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