public void LoadTemplate(HexBox hb, string template)
        {
            if (hb.ByteProvider == null)
            {
                return;
            }

            hb.ClearHighlights();

            var fn = Path.Combine(DirectoryPath, template);

            if (!File.Exists(fn))
            {
                return;
            }

            var strings = File.ReadAllLines(fn);

            var interpreter = new Interpreter();

            foreach (var line in strings)
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    continue;
                }
                if (line.StartsWith("#"))
                {
                    continue;
                }

                var props = line.Split(';');
                if (props.Length < 4)
                {
                    Console.WriteLine($"bad csv line. {props}");
                    continue;
                }

                try
                {
                    var startpos_eval = interpreter.Eval(props[0].Trim());
                    int startpos;
                    if (!int.TryParse(startpos_eval.ToString(), out startpos))
                    {
                        continue;
                    }

                    var length_eval = interpreter.Eval(props[1].Trim());
                    int length;
                    if (!int.TryParse(length_eval.ToString(), out length))
                    {
                        continue;
                    }

                    var fg   = props[2].Trim();
                    var bg   = props[3].Trim();
                    var desc = (props.Length == 5) ? props[4] : string.Empty;

                    var fgc = Color.FromName(fg);
                    var bgc = Color.FromName(bg);


                    // length check.
                    if (hb.ByteProvider.Length < (startpos + length))
                    {
                        continue;
                    }

                    hb.AddHighlight(startpos, length, fgc, bgc);
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"Template has errors{Environment.NewLine}{line}{Environment.NewLine}{ex.Message}");
                }
            }
            hb.Invalidate();
        }