commit 1b9f39910b4d0684937ec47f1571355908bab042 Author: AKi Date: Thu Feb 13 10:43:40 2025 +0100 Initial commit - moved from https://git.intrepidcs.de/Andreas/Demos diff --git a/MACsec_Utilitie/MACSec.zap b/MACsec_Utilitie/MACSec.zap new file mode 100644 index 0000000..b3fe899 Binary files /dev/null and b/MACsec_Utilitie/MACSec.zap differ diff --git a/MACsec_Utilitie/README.md b/MACsec_Utilitie/README.md new file mode 100644 index 0000000..75aef54 --- /dev/null +++ b/MACsec_Utilitie/README.md @@ -0,0 +1,32 @@ + Installing Dependencies +The following dependencies are required: +- python_ics +- pyyaml + +# Running MACSec utility + +Provide arguments for: +- RADGigastar serial number +- sfp +- config_netid + - `NETID_I2C2` for RADGigastar SFP1 port + - `NETID_I2C3` for RADGigastar SFP2 port + - 'NETID_MDIO_02' for RAD-Comet2 Ethernet1 +- yaml + - MACsec configuration yaml file name + - *Assumes .yml is located in "/yaml/" directory + +See `-h` for help text. + +Example: +``` +python test_sfp_macsec_util.py GS0694 --sfp --config_netid NETID_I2C2 --yaml test_sfp_macsec_Rule_wildcard_SecY_256_strip_noEncrypt_onlyCheck_sci_SA_sak0.yml +``` + +# Reset/Clear the MACsec configuration +Add `--reset` argument. Any MACsec configuration will be cleared and MACsec will be disabled on the device/port. +*Make sure to remove `--reset` argument before configuring MACsec on the module again. + +# New MACsec configuration +"/yaml/" folder contains 8 existing MACsec yaml configurations to showcase specific use cases of MACsec. +To add a new/custom MACsec configuration, add a new .yml file to the "/yaml/" folder in the same format as any of the existing files and edit the MACsec parameters. diff --git a/MACsec_Utilitie/Reset_SFP1_GS0728.bat b/MACsec_Utilitie/Reset_SFP1_GS0728.bat new file mode 100644 index 0000000..12c3ad7 --- /dev/null +++ b/MACsec_Utilitie/Reset_SFP1_GS0728.bat @@ -0,0 +1 @@ +python test_sfp_macsec_util.py GS0728 --sfp --config_netid NETID_I2C2 --reset \ No newline at end of file diff --git a/MACsec_Utilitie/Reset_SFP1_GS0733.bat b/MACsec_Utilitie/Reset_SFP1_GS0733.bat new file mode 100644 index 0000000..5220cd0 --- /dev/null +++ b/MACsec_Utilitie/Reset_SFP1_GS0733.bat @@ -0,0 +1 @@ +python test_sfp_macsec_util.py GS0733 --sfp --config_netid NETID_I2C2 --reset \ No newline at end of file diff --git a/MACsec_Utilitie/Reset_SFP2_GS0728.bat b/MACsec_Utilitie/Reset_SFP2_GS0728.bat new file mode 100644 index 0000000..f936c77 --- /dev/null +++ b/MACsec_Utilitie/Reset_SFP2_GS0728.bat @@ -0,0 +1 @@ +python test_sfp_macsec_util.py GS0728 --sfp --config_netid NETID_I2C3 --reset \ No newline at end of file diff --git a/MACsec_Utilitie/Reset_SFP2_GS0733.bat b/MACsec_Utilitie/Reset_SFP2_GS0733.bat new file mode 100644 index 0000000..0b5004b --- /dev/null +++ b/MACsec_Utilitie/Reset_SFP2_GS0733.bat @@ -0,0 +1 @@ +python test_sfp_macsec_util.py GS0733 --sfp --config_netid NETID_I2C3 --reset \ No newline at end of file diff --git a/MACsec_Utilitie/Set_SFP1_GS0733.bat b/MACsec_Utilitie/Set_SFP1_GS0733.bat new file mode 100644 index 0000000..44c86b7 --- /dev/null +++ b/MACsec_Utilitie/Set_SFP1_GS0733.bat @@ -0,0 +1 @@ +python test_sfp_macsec_util.py GS0733 --sfp --config_netid NETID_I2C2 --yaml test_sfp_macsec_Rule_macda_SecY_128_strip_strict_sci_SA_sak0.yml \ No newline at end of file diff --git a/MACsec_Utilitie/Set_SFP2_GS0733.bat b/MACsec_Utilitie/Set_SFP2_GS0733.bat new file mode 100644 index 0000000..30b56e1 --- /dev/null +++ b/MACsec_Utilitie/Set_SFP2_GS0733.bat @@ -0,0 +1 @@ +python test_sfp_macsec_util.py GS0733 --sfp --config_netid NETID_I2C3 --yaml test_sfp_macsec_Rule_macda_SecY_128_strip_strict_sci_SA_sak0.yml \ No newline at end of file diff --git a/MACsec_Utilitie/test_sfp_macsec_util.py b/MACsec_Utilitie/test_sfp_macsec_util.py new file mode 100644 index 0000000..8f8c171 --- /dev/null +++ b/MACsec_Utilitie/test_sfp_macsec_util.py @@ -0,0 +1,133 @@ +from util import ( + MyArgParseHelpFormatter, + open_device, + get_hwnetid, + dict_align_str, +) + +from util_eth import ( + load_macsec_from_yaml, +) + +from util_sfp import ( + read_macsec_rx_secy_stats, + read_macsec_tx_secy_stats, + read_macsec_rx_sc_stats, + read_macsec_tx_sc_stats, + sfp_query_verify_macsec_support, +) + +import ics +import argparse + +############################################################################### +# This loads a single macsec configuration from selected yaml into supported +# devices and exits +############################################################################### + + +DESCRIPTION = "MACSec utility" + + +def main(): + parser = get_parser() + args = parser.parse_args() + run_test(args, None) + + +def run_test(args, power_supply): + print(f"Attempting to load {args.yaml}...") + + fail = 0 + + # connect to test device1 and set network settings for the macsec test + with open_device(args.serial_number) as device: + # Just load default every time in case we get some crazy stuff + ics.load_default_settings(device) + + # if sfp module, query for mdio i2c address + if args.sfp: + sfp_i2c_mdio_address = sfp_query_verify_macsec_support( + device, args.config_netid, args.reset + ) + # if we only want reset, exit here + if args.reset: + exit(0) + + # if we only want the phy macsec counters, read then exit + if args.counters: + # Read secy, sc stats + print("\nReading PHY MACsec rx/tx stats...\n") + rx_secy_stats = read_macsec_rx_secy_stats( + device, get_hwnetid(args.config_netid), sfp_i2c_mdio_address + ) + tx_secy_stats = read_macsec_tx_secy_stats( + device, get_hwnetid(args.config_netid), sfp_i2c_mdio_address + ) + rx_sc_stats = read_macsec_rx_sc_stats( + device, get_hwnetid(args.config_netid), sfp_i2c_mdio_address + ) + tx_sc_stats = read_macsec_tx_sc_stats( + device, get_hwnetid(args.config_netid), sfp_i2c_mdio_address + ) + # print non-zero macsec counts + print("rx_secy_stats:\n") + print(dict_align_str(rx_secy_stats, False, True)) + print("tx_secy_stats:\n") + print(dict_align_str(tx_secy_stats, False, True)) + print("rx_sc_stats:\n") + print(dict_align_str(rx_sc_stats, False, True)) + print("tx_sc_stats:\n") + print(dict_align_str(tx_sc_stats, False, True)) + exit(0) + + # load yaml macsec config + load_macsec_from_yaml(device, args.config_netid, args.yaml, args.sfp) + + if fail: # bail out if something fails + print(f"{fail} tests failed.") + exit(1) + + +def get_parser(): + parser = argparse.ArgumentParser( + description="MACsec utility script", + formatter_class=MyArgParseHelpFormatter, + ) + parser.add_argument( + "serial_number", + help="The serial number of the device to connect to", + ) + parser.add_argument( + "--yaml", + help="yaml file name to be loaded/configured.", + default="test_sfp_macsec_Rule_wildcard_SecY_128_strip_strict_sci_SA_sak0.yml", + ) + parser.add_argument( + "--sfp", + help="sfp module.", + default=False, + action="store_true", + ) + parser.add_argument( + "--config_netid", + help="netid to config the sfp module.", + default="NETID_I2C2", + ) + parser.add_argument( + "--reset", + help="Only reset and clear and disable macsec on the device, then exit.", + default=False, + action="store_true", + ) + parser.add_argument( + "--counters", + help="Only read the phy macsec counters, then exit.", + default=False, + action="store_true", + ) + return parser + + +if __name__ == "__main__": + main() diff --git a/MACsec_Utilitie/util.py b/MACsec_Utilitie/util.py new file mode 100644 index 0000000..b91124d --- /dev/null +++ b/MACsec_Utilitie/util.py @@ -0,0 +1,289 @@ +from contextlib import contextmanager +import ics +import time +import argparse + + +def serial_base36enc(ser_no): + """ + Encode serial as base36 if needed and return the string representation of the serial number + + Args: + ser_no: Serial number integer + """ + if int("AA0000", 36) < ser_no < int("ZZZZZZ", 36): + return ics.base36enc(ser_no) + else: + return str(ser_no) # Old devices don't do base36 + + +def serial_base36dec(ser_no): + """ + Decode serial as base36 if needed and return the integer representation of the serial number + + Args: + ser_no: Serial number string + """ + serial36 = int(ser_no, 36) + if int("AA0000", 36) < serial36 < int("ZZZZZZ", 36): + return serial36 + else: + return int(ser_no, 10) # Old devices don't do base36 + + +def filter_by_netid(msgs, netid): + """ + Filters the list of messages by netid + + Args: + msgs: A list of spy messages, likely from ics.get_messages + netid: The desired netid + + Returns: + The filtered message list + + """ + netids = [netid] + return filter_by_netids(msgs, netids) + + +def filter_by_netids(msgs, netids): + """ + Filters the provided messages by those that match the provided netids + + Args: + msgs: The messages to filter + netids: The valid netids to keep + + Returns: + All messages with the provided netids + + """ + ret = [msg for msg in msgs if get_netid(msg) in netids] + return ret + + +def get_netid(msg): + """ + Gets the netid for the message + + Args: + msg: The message to check + + Returns: + The netid (the number) for the message + + """ + netid = (msg.NetworkID2 << 8) | (msg.NetworkID & 0xFF) + return netid + + +@contextmanager +def open_device(ser_no, tries=10, delay=1.0): + """ + Context manager for a neovi device. Opens the device, then auto-closes + once the context manager falls out of scope + + Args: + ser_no: Serial number string of a connected device, will be validated + + Yields: + an open device + + Examples: + with open("GS0137") as device: + ics_do_stuff(device) + + """ + device = None + serial = serial_base36dec(ser_no) + + for i in range(tries): + try: + found = False + # work around for supporting neovi server connections + # ics.open_device will not work if already open in Vspy with server + devices = ics.find_devices() + for d in devices: + if d.SerialNumber == serial: + device = ics.open_device(d) + found = True + break + if found: + # successfully opened + break + else: + raise Exception(f"Could not find device to open {ser_no}") + except Exception: + device = None + print(f"Failed to Open {ser_no}, Trying again... ({i+1}/{tries})") + time.sleep(delay) + + if device is None: + # could not find device and multiple retries + devices = ics.find_devices() + print("ERROR: Device not found. Known devices are:") + print([serial_base36enc(dev.SerialNumber) for dev in devices]) + exit(1) + + try: + yield device + except Exception as e: + print("ERROR: Open device succeeded, but yielding failed?") + raise e + finally: + if device is not None: + ics.close_device(device) + + +def get_hwnetid(name): + """ + Get hardware network ID from string name in one of the following forms: + COREMINI_NETWORK_ETHERNET, NETID_ETHERNET, or ETHERNET + + Args: + name: Network name + + Returns: + Hardware network ID + """ + # NETID_XXX, use as is + if name.startswith("NETID_"): + if hasattr(ics, name): + return getattr(ics, name) + + # COREMINI_NETWORK_XXX, convert + if name.startswith("COREMINI_NETWORK_"): + newname = "NETID_" + name[len("COREMINI_NETWORK_") :] + if hasattr(ics, newname): + return getattr(ics, newname) + + # assume no prefix, so try adding it + newname = "NETID_" + name + if hasattr(ics, newname): + return getattr(ics, newname) + + raise AttributeError(f"Could not match network for {name}") + + +class MyArgParseHelpFormatter(argparse.ArgumentDefaultsHelpFormatter): + def _split_lines(self, text, width): + if text.startswith("R|"): + lines = text.splitlines()[1:] + return lines + return super()._split_lines(text, width) + + +def set_process_priority(pid=None, priority=2): + """ + Set The Priority of a Process. Priority is a value between 0-5 where + 2 is normal priority, 5 is highest priority. Default sets the priority of the current + python process but can take any valid process ID. + """ + import sys + + try: + sys.getwindowsversion() + except AttributeError: + isWindows = False + else: + isWindows = True + + if isWindows: + # Based on: + # "Recipe 496767: Set Process Priority In Windows" on ActiveState + # http://code.activestate.com/recipes/496767/ + import win32api + import win32process + import win32con + + priorityclasses = [ + win32process.IDLE_PRIORITY_CLASS, + win32process.BELOW_NORMAL_PRIORITY_CLASS, + win32process.NORMAL_PRIORITY_CLASS, + win32process.ABOVE_NORMAL_PRIORITY_CLASS, + win32process.HIGH_PRIORITY_CLASS, + win32process.REALTIME_PRIORITY_CLASS, + ] + if pid is None: + pid = win32api.GetCurrentProcessId() + handle = win32api.OpenProcess(win32con.PROCESS_ALL_ACCESS, True, pid) + win32process.SetPriorityClass(handle, priorityclasses[priority]) + else: + # untested! + import os + + nice_levels = [19, 9, 0, -7, -14, -20] + os.nice(nice_levels[priority]) + + +def dict_align_str(d, sort=False, nz=False): + """ + Prints a dict nicely and key value pairs in aligned rows + Primarily limited to simple "a": "b" dicts, might not look nice for complex value types + + Args: + d: Some dictionary + sort: Sort dictionary items + nz: Excludes key value pairs with int value = 0 + + Returns: + A string that looks like this: + aardvark: banana + monkey: apple + ant: pear + """ + strings = [] + longest_key_len = len(max(d.keys(), key=len)) + if sort: + d = dict(sorted(d.items())) + for k, v in d.items(): + key_len = len(k) + diff = longest_key_len - key_len + spaces = " " * diff + string = f"{k}:{spaces} {v}" + if nz: + if not isinstance(v, int) or v > 0: + strings.append(string) + else: + strings.append(string) + ret = "\n".join(strings) + "\n" + return ret + + +# Print iterations progress +# https://stackoverflow.com/questions/3173320/text-progress-bar-in-terminal-with-block-characters +def print_progress_bar( + iteration, + total, + prefix="", + suffix="", + decimals=1, + length=100, + fill="█", + printEnd="\r", + start=None, +): + """ + Call in a loop to create terminal progress bar + @params: + iteration - Required : current iteration (Int) + total - Required : total iterations (Int) + prefix - Optional : prefix string (Str) + suffix - Optional : suffix string (Str) + decimals - Optional : positive number of decimals in percent complete (Int) + length - Optional : character length of bar (Int) + fill - Optional : bar fill character (Str) + printEnd - Optional : end character (e.g. "\r", "\r\n") (Str) + """ + percent = ("{0:." + str(decimals) + "f}").format(100 * (iteration / float(total))) + filledLength = int(length * iteration // total) + bar = fill * filledLength + "-" * (length - filledLength) + if iteration == total: + if start is not None: + timestr = str(timedelta(seconds=time.time() - start)) + suffix = f"{suffix} -- {timestr}" + print(f"\r{prefix} |{bar}| {percent}% {suffix}", end=printEnd) + # Print New Line on Complete + if iteration == total: + print() diff --git a/MACsec_Utilitie/util_eth.py b/MACsec_Utilitie/util_eth.py new file mode 100644 index 0000000..900fa72 --- /dev/null +++ b/MACsec_Utilitie/util_eth.py @@ -0,0 +1,180 @@ +from util import ( + get_hwnetid, +) +from util_sfp import ( + sfp_ics_send_macsec_rule, + sfp_ics_send_macsec_map, + sfp_ics_send_macsec_secy, + sfp_ics_send_macsec_sc, + sfp_ics_send_macsec_sa, + sfp_ics_update_macsec, +) + +import time +import yaml + +ETH_SPEED_STRINGS = [ + "ETH_SPEED_10", + "ETH_SPEED_100", + "ETH_SPEED_1000", + "ETH_SPEED_2500", + "ETH_SPEED_5000", + "ETH_SPEED_10000", + "ETH_SPEED_AUTO", +] + +ETH_DUPLEX_STRINGS = [ + "ETH_DUPLEX_FULL", + "ETH_DUPLEX_HALF", +] + +ETH_MODE_STRINGS = [ + "ETH_MODE_MASTER", + "ETH_MODE_SLAVE", + "ETH_MODE_AUTO", +] + +ETH_REPORT_LINK_UP_IDX = 0 +ETH_REPORT_SPEED_IDX = 1 +ETH_REPORT_DUPLEX_IDX = 2 +ETH_REPORT_NETID_LSB_IDX = 3 +ETH_REPORT_NETID_MSB_IDX = 4 +ETH_REPORT_MODE_IDX = 5 + + +def load_macsec_from_yaml(device, netid_name, yml, sfp): + netid = get_hwnetid(netid_name) + with open("yaml/" + yml, "r") as file: + macsec_cfg = yaml.safe_load(file) # read macsec configuration from yaml + if sfp: # ics sfp module - load over i2c with ics config subcommands + en = 1 + rx = 0 + rule = 0 + map = 0 + secy = 0 + sc = 0 + sa = 0 + nvm = 1 + clr = 0 + rst = 1 + # clear/reset any current macsec configuration + sfp_ics_update_macsec( + device, netid, rx, rule, map, secy, sc, sa, nvm, en, clr, rst + ) + time.sleep( + 1 + ) # allow time for sfp to write macsec configuration to phy over mdio + # tx config + if macsec_cfg["tx"]: + rx = 0 + rst = 0 + if macsec_cfg["tx"]["rule"]: + rule = 1 + sfp_ics_send_macsec_rule( + device, netid, macsec_cfg["tx"]["rule"] + ) # write macsec rule to sfp + if macsec_cfg["tx"]["map"]: + map = 1 + sfp_ics_send_macsec_map( + device, netid, macsec_cfg["tx"]["map"] + ) # write macsec map to sfp + if macsec_cfg["tx"]["secy"]: + secy = 1 + sfp_ics_send_macsec_secy( + device, netid, macsec_cfg["tx"]["secy"] + ) # write macsec secy to sfp + if macsec_cfg["tx"]["sc"]: + sc = 1 + sfp_ics_send_macsec_sc( + device, netid, macsec_cfg["tx"]["sc"] + ) # write macsec sc to sfp + if macsec_cfg["tx"]["sa0"] and macsec_cfg["tx"]["sa1"]: + sa = 1 + sfp_ics_send_macsec_sa( + device, netid, macsec_cfg["tx"]["sa0"] + ) # write macsec sa0 to sfp + sfp_ics_update_macsec( + device, netid, rx, 0, 0, 0, 0, sa, 0, en, clr, rst + ) # push macsec sa config to phy + time.sleep( + 0.5 + ) # allow time for sfp to write macsec configuration to phy over mdio + sfp_ics_send_macsec_sa( + device, netid, macsec_cfg["tx"]["sa1"] + ) # write macsec sa1 to sfp + sfp_ics_update_macsec( + device, + netid, + rx, + rule, + map, + secy, + sc, + sa, + nvm, + en, + clr, + rst, + ) # push entire macsec config to phy + time.sleep( + 1 + ) # allow time for sfp to write entire macsec configuration to phy over mdio + # rx config + if macsec_cfg["rx"]: + rx = 1 + rst = 0 + if macsec_cfg["rx"]["rule"]: + rule = 1 + sfp_ics_send_macsec_rule( + device, netid, macsec_cfg["rx"]["rule"] + ) # write macsec rule to sfp + if macsec_cfg["rx"]["map"]: + map = 1 + sfp_ics_send_macsec_map( + device, netid, macsec_cfg["rx"]["map"] + ) # write macsec map to sfp + if macsec_cfg["rx"]["secy"]: + secy = 1 + sfp_ics_send_macsec_secy( + device, netid, macsec_cfg["rx"]["secy"] + ) # write macsec secy to sfp + if macsec_cfg["rx"]["sc"]: + sc = 1 + sfp_ics_send_macsec_sc( + device, netid, macsec_cfg["rx"]["sc"] + ) # write macsec sc to sfp + if macsec_cfg["rx"]["sa0"] and macsec_cfg["rx"]["sa1"]: + sa = 1 + sfp_ics_send_macsec_sa( + device, netid, macsec_cfg["rx"]["sa0"] + ) # write macsec sa0 to sfp + sfp_ics_update_macsec( + device, netid, rx, 0, 0, 0, 0, sa, 0, en, clr, rst + ) # push macsec sa config to phy + time.sleep( + 0.5 + ) # allow time for sfp to write macsec configuration to phy over mdio + sfp_ics_send_macsec_sa( + device, netid, macsec_cfg["rx"]["sa1"] + ) # write macsec sa1 to sfp + sfp_ics_update_macsec( + device, + netid, + rx, + rule, + map, + secy, + sc, + sa, + nvm, + en, + clr, + rst, + ) # push entire macsec config to phy + time.sleep( + 1 + ) # allow time for sfp to write entire macsec configuration to phy over mdio + else: # non-sfp module + pass # TODO write device settings with the macsec config + # print macsec confirmation + print(f"\nSuccessfully configured MACsec on {netid_name}.") diff --git a/MACsec_Utilitie/util_i2c.py b/MACsec_Utilitie/util_i2c.py new file mode 100644 index 0000000..9b66b97 --- /dev/null +++ b/MACsec_Utilitie/util_i2c.py @@ -0,0 +1,108 @@ +import ics +import time + + +def transmit_i2c( + device, netid, read, slave_addr, control_len, controldata, data_len, data +): + msg = ics.SpyMessage() + msg.NetworkID = netid & 0xFF + msg.NetworkID2 = (netid >> 8) & 0xFF + msg.Protocol = ics.SPY_PROTOCOL_I2C + msg.StatusBitField = 0 + msg.StatusBitField2 = 0 + msg.StatusBitField |= ics.SPY_STATUS_NETWORK_MESSAGE_TYPE + msg.StatusBitField |= ics.SPY_STATUS_TX_MSG + if slave_addr & 0x380: # if 10-bit address + msg.StatusBitField |= ics.SPY_STATUS_XTD_FRAME + if read: + msg.StatusBitField2 |= ics.SPY_STATUS2_I2C_DIR_READ + msg.ArbIDOrHeader = 0x10000000 + msg.DescriptionID = 0x6869 # arbitrary tx msg "key" + msg.NodeID = 0 + msg.ArbIDOrHeader |= slave_addr + msg.NumberBytesHeader = control_len + msg.MiscData = (data_len >> 8) & 0xFF + msg.NumberBytesData = data_len & 0xFF + if data_len: + for x in data[:data_len]: + controldata.append(x) + msg.ExtraDataPtr = tuple(controldata) + msg.ExtraDataPtrEnabled = 1 + ics.transmit_messages(device, msg) + return msg + + +def are_errors_present(msg): + error_flags = 0 + error_flags |= ics.SPY_STATUS_GLOBAL_ERR + error_flags |= ics.SPY_STATUS_CRC_ERROR + error_flags |= ics.SPY_STATUS_CAN_ERROR_PASSIVE + error_flags |= ics.SPY_STATUS_HEADERCRC_ERROR + error_flags |= ics.SPY_STATUS_INCOMPLETE_FRAME + error_flags |= ics.SPY_STATUS_LOST_ARBITRATION + error_flags |= ics.SPY_STATUS_UNDEFINED_ERROR + error_flags |= ics.SPY_STATUS_CAN_BUS_OFF + error_flags |= ics.SPY_STATUS_BUS_RECOVERED + error_flags |= ics.SPY_STATUS_BUS_SHORTED_PLUS + error_flags |= ics.SPY_STATUS_BUS_SHORTED_GND + error_flags |= ics.SPY_STATUS_CHECKSUM_ERROR + error_flags |= ics.SPY_STATUS_BAD_MESSAGE_BIT_TIME_ERROR + error_flags |= ics.SPY_STATUS_TX_NOMATCH + error_flags |= ics.SPY_STATUS_COMM_IN_OVERFLOW + error_flags |= ics.SPY_STATUS_EXPECTED_LEN_MISMATCH + error_flags |= ics.SPY_STATUS_MSG_NO_MATCH + error_flags |= ics.SPY_STATUS_BREAK + error_flags |= ics.SPY_STATUS_AVSI_REC_OVERFLOW + if (msg.StatusBitField & error_flags) != 0: + return True + error_flags = 0 + error_flags |= ics.SPY_STATUS2_I2C_ERR_TIMEOUT + error_flags |= ics.SPY_STATUS2_I2C_ERR_NACK + if (msg.StatusBitField2 & error_flags) != 0: + return True + return False + + +def find_i2c_message(msg, msgs): + for msg_rx in msgs: + if msg.NetworkID == msg_rx.NetworkID and msg.NetworkID2 == msg_rx.NetworkID2: + # check for any possible errors + if are_errors_present(msg_rx): + return None + + data = msg_rx.ExtraDataPtr + return data + + return None + + +def wait_for_i2c_msg(device, msg, timeout=2): + start = time.time() + + while time.time() - start <= timeout: + time.sleep(0.01) + msgs, errors = ics.get_messages(device) + data = find_i2c_message(msg, msgs) + if data is not None: + return data + + return None + + +def i2c_read( + device, netid, slave_addr, control_len, controldata, data_len, data, timeout=2 +): + msg = transmit_i2c( + device, netid, 1, slave_addr, control_len, controldata, data_len, data + ) + return wait_for_i2c_msg(device, msg, timeout) + + +def i2c_write( + device, netid, slave_addr, control_len, controldata, data_len, data, timeout=2 +): + msg = transmit_i2c( + device, netid, 0, slave_addr, control_len, controldata, data_len, data + ) + return wait_for_i2c_msg(device, msg, timeout) diff --git a/MACsec_Utilitie/util_sfp.py b/MACsec_Utilitie/util_sfp.py new file mode 100644 index 0000000..5122be5 --- /dev/null +++ b/MACsec_Utilitie/util_sfp.py @@ -0,0 +1,888 @@ +from util import ( + get_hwnetid, + dict_align_str, +) +from util_i2c import ( + i2c_read, + i2c_write, +) + +import time +import datetime +import struct +from collections import namedtuple +from enum import Enum + +# ICS SFP MODULE SLAVE ADDRESSES +ICS_SFP_SLAVE_ADDR_MSA = 0x50 +ICS_SFP_SLAVE_ADDR_DMI = 0x51 +ICS_SFP_SLAVE_ADDR_MDIO_BRIDGE = 0x56 +ICS_SFP_SLAVE_ADDR_MDIO_BRIDGE_TECHNICA = 0x40 +ICS_SFP_SLAVE_ADDR_ICS_CONTROL = 0x1C +ICS_SFP_SLAVE_ADDR_ICS_BOOTLOADER = 0x57 +# ICS SFP MODULE BOOTLOADER COMMANDS +ICS_SFP_BL_GET_STATUS = 0x00 +ICS_SFP_BL_GET_VERSION = 0x12 +ICS_SFP_BL_SEND_FW = 0x14 +ICS_SFP_BL_RESET_TO_BL = 0x15 +ICS_SFP_BL_FLASH_VALIDATE = 0x16 +ICS_SFP_BL_FLASH_INIT = 0x17 +ICS_SFP_BL_FLASH_START = 0x18 +ICS_SFP_BL_FLASH_ERASE = 0x20 +ICS_SFP_BL_RESET_TO_APP = 0x21 +ICS_SFP_BL_VALIDATE_SW_VERS = 0x27 +ICS_SFP_BL_GET_ERROR = 0x28 +# ICS SFP MODULE ICS CONTROL BYTE OFFSETS +ICS_SFP_CONFIG_REG_SLEEP_OFFSET = 0 +ICS_SFP_CONFIG_REG_BL_OFFSET = 1 +ICS_SFP_CONFIG_REG_MDIO_SPEED_OFFSET = 2 +ICS_SFP_CONFIG_REG_MDIO_LINKMODE_OFFSET = 3 +ICS_SFP_CONFIG_REG_MDIO_PHYMODE_OFFSET = 4 +ICS_SFP_CONFIG_REG_MDIO_AUTONEG_OFFSET = 5 +ICS_SFP_CONFIG_REG_MDIO_ENABLE_OFFSET = 6 +ICS_SFP_CONFIG_REG_PHY_TEMPERATURE_OFFSET = 7 +ICS_SFP_CONFIG_REG_FW_MINOR_VERS_OFFSET = 8 +ICS_SFP_CONFIG_REG_FW_MAJOR_VERS_OFFSET = 9 +ICS_SFP_CONFIG_REG_WRITE_MACSEC_CFG_OFFSET = 10 +ICS_SFP_CONFIG_REG_CONFIGURE_MACSEC_RULE_OFFSET = 11 +ICS_SFP_CONFIG_REG_CONFIGURE_MACSEC_MAP_OFFSET = 12 +ICS_SFP_CONFIG_REG_CONFIGURE_MACSEC_SECY_OFFSET = 13 +ICS_SFP_CONFIG_REG_CONFIGURE_MACSEC_SC_OFFSET = 14 +ICS_SFP_CONFIG_REG_CONFIGURE_MACSEC_SA_OFFSET = 15 +# vendor fields in MSA table +ICS_SFP_VENDOR_BRIDGE_ADDR_OVERRIDE_N_MASK = 0x01 +ICS_SFP_VENDOR_SOFT_OPTIONS_OVERRIDE_N_MASK = 0x02 +ICS_SFP_VENDOR_ROTARY_SWITCH_OVERRIDE_N_MASK = 0x04 + +# MACsec definitions +MRVL_Q222X_MAC_DEV = 0x1F +MRVL_Q222X_MMAC_READ_LOW = 0x97FE +MRVL_Q222X_MMAC_READ_HIGH = 0x97FF +MRVL_Q222X_MSEC_CSE_CLR_ON_RD = 0x588 +MRVL_Q222X_MSEC_CSE_CLR_ON_RD_Tx = 0x5A0 + +MRVL_Q222X_MSEC_IN_OCETS_SECY_DECRYPTED = 0x3400 +MRVL_Q222X_MSEC_IN_OCETS_SECY_VALIDATE = 0x33F0 +MRVL_Q222X_MSEC_IN_PKTS_SECY_NO_SA = 0x33D0 +MRVL_Q222X_MSEC_IN_PKTS_SECY_NO_SA_ERROR = 0x33E0 +MRVL_Q222X_MSEC_IN_PKTS_SECY_BAD_TAG = 0x33C0 +MRVL_Q222X_MSEC_IN_PKTS_SECY_NO_TAG = 0x33B0 +MRVL_Q222X_MSEC_IN_PKTS_SECY_UNTAGGED = 0x33A0 +MRVL_Q222X_MSEC_IN_PKTS_CTRL_PORT_DISABLE = 0x3390 +MRVL_Q222X_MSEC_IN_CTRL_PORT_OCETS = 0x3300 +MRVL_Q222X_MSEC_IN_CTRL_PORT_UC_PKTS = 0x3310 +MRVL_Q222X_MSEC_IN_CTRL_PORT_MC_PKTS = 0x3320 +MRVL_Q222X_MSEC_IN_CTRL_PORT_BC_PKTS = 0x3330 +MRVL_Q222X_MSEC_IN_UNCTRL_PORT_OCETS = 0x3340 +MRVL_Q222X_MSEC_IN_UNCTRL_PORT_UC_PKTS = 0x3350 +MRVL_Q222X_MSEC_IN_UNCTRL_PORT_MC_PKTS = 0x3360 +MRVL_Q222X_MSEC_IN_UNCTRL_PORT_BC_PKTS = 0x3370 + +MRVL_Q222X_MSEC_OUT_PKTS_CTRL_PORT_DISABLE = 0x3520 +MRVL_Q222X_MSEC_OUT_PKTS_SECY_UNTAGGED = 0x3530 +MRVL_Q222X_MSEC_OUT_PKTS_SECY_NO_ACTIVE_SA = 0x3540 +MRVL_Q222X_MSEC_OUT_PKTS_SECY_TOO_LONG = 0x3550 +MRVL_Q222X_MSEC_OUT_OCETS_SECY_PROTECTED = 0x3560 +MRVL_Q222X_MSEC_OUT_OCETS_SECY_ENCRYPTED = 0x3570 +MRVL_Q222X_MSEC_OUT_CTRL_PORT_OCETS = 0x34A0 +MRVL_Q222X_MSEC_OUT_CTRL_PORT_UC_PKTS = 0x34B0 +MRVL_Q222X_MSEC_OUT_CTRL_PORT_MC_PKTS = 0x34C0 +MRVL_Q222X_MSEC_OUT_CTRL_PORT_BC_PKTS = 0x34D0 +MRVL_Q222X_MSEC_OUT_UNCTRL_PORT_OCETS = 0x34E0 +MRVL_Q222X_MSEC_OUT_UNCTRL_PORT_UC_PKTS = 0x34F0 +MRVL_Q222X_MSEC_OUT_UNCTRL_PORT_MC_PKTS = 0x3500 +MRVL_Q222X_MSEC_OUT_UNCTRL_PORT_BC_PKTS = 0x3510 + +MRVL_Q222X_MSEC_IN_PKTS_SC_CAM_HIT = 0x3620 +MRVL_Q222X_MSEC_IN_PKTS_SC_LATE = 0x3420 +MRVL_Q222X_MSEC_IN_PKTS_SC_NOT_VALID = 0x3430 +MRVL_Q222X_MSEC_IN_PKTS_SC_INVALID = 0x3440 +MRVL_Q222X_MSEC_IN_PKTS_SC_DELAYED = 0x3450 +MRVL_Q222X_MSEC_IN_PKTS_SC_UNCHECKED = 0x3460 +MRVL_Q222X_MSEC_IN_PKTS_SC_OK = 0x3470 + +MRVL_Q222X_MSEC_OUT_PKTS_SC_PROTECTED = 0x3580 +MRVL_Q222X_MSEC_OUT_PKTS_SC_ENCRYPTED = 0x3590 + + +class MRVL_Q222X_MSEC_PACKET_TYPE(Enum): + MRVL_Q222X_MSEC_PACKET_NO_VLAN_OR_MPLS = 0 + MRVL_Q222X_MSEC_PACKET_SINGLE_VLAN = 1 + MRVL_Q222X_MSEC_PACKET_DUAL_VLAN = 2 + MRVL_Q222X_MSEC_PACKET_MPLS = 3 + MRVL_Q222X_MSEC_PACKET_SINGLE_VLAN_FOLLOW_BY_MPLS = 4 + MRVL_Q222X_MSEC_PACKET_DUAL_VLAN_FOLLOW_BY_MPLS = 5 + MRVL_Q222X_MSEC_PACKET_UNSUPPORTED_TYPE = 6 + + +class MRVL_Q222X_MSEC_VALIDATEFRAME(Enum): + MRVL_Q222X_MSEC_VF_DISABLED = 0 + MRVL_Q222X_MSEC_VF_CHECK = 1 + MRVL_Q222X_MSEC_VF_STRICT = 2 + MRVL_Q222X_MSEC_VF_NA = 3 + + +class MRVL_Q222X_MSEC_STRIP_SECTAG_ICV(Enum): + MRVL_Q222X_MSEC_SECTAG_ICV_BOTH_STRIP = 0 + MRVL_Q222X_MSEC_SECTAG_ICV_RESERVED = 1 + MRVL_Q222X_MSEC_SECTAG_ICV_STRIP_ICV_ONLY = 2 + MRVL_Q222X_MSEC_SECTAG_ICV_NO_STRIP = 3 + + +class MRVL_Q222X_MSEC_CIPHER_SUITE(Enum): + MRVL_Q222X_MSEC_CIPHER_GCM_AES_128 = 0 + MRVL_Q222X_MSEC_CIPHER_GCM_AES_256 = 1 + MRVL_Q222X_MSEC_CIPHER_GCM_AES_128_XPN = 2 + MRVL_Q222X_MSEC_CIPHER_GCM_AES_256_XPN = 3 + + +class SFP_ICS_CONFIG_SUBCOMMANDS(Enum): + CMD_WRITE_SLEEP = 0 + CMD_WRITE_BOOTLOADER = 1 + CMD_WRITE_MDIO_PHY_UPDATE = 2 + CMD_WRITE_TC10_WAKEUP = 3 + CMD_RESERVED_4 = 4 + CMD_RESERVED_5 = 5 + CMD_RESERVED_6 = 6 + CMD_READ_PHY_TEMPERATURE = 7 + CMD_READ_FW_MINOR = 8 + CMD_READ_FW_MAJOR = 9 + CMD_WRITE_MACSEC_UPDATE = 10 + CMD_WRITE_MACSEC_CFG_RULE = 11 + CMD_WRITE_MACSEC_CFG_MAP = 12 + CMD_WRITE_MACSEC_CFG_SECY = 13 + CMD_WRITE_MACSEC_CFG_SC = 14 + CMD_WRITE_MACSEC_CFG_SA = 15 + + +def transmit_i2c_ICSSFP_UPDATE_MACSEC(device, netid, data): + return i2c_write( + device, + netid, + ICS_SFP_SLAVE_ADDR_ICS_CONTROL, + 1, + [SFP_ICS_CONFIG_SUBCOMMANDS.CMD_WRITE_MACSEC_UPDATE.value], + 2, + data, + ) + + +def transmit_i2c_ICSSFP_CONFIG_MACSEC_RULE(device, netid, len, data): + return i2c_write( + device, + netid, + ICS_SFP_SLAVE_ADDR_ICS_CONTROL, + 1, + [SFP_ICS_CONFIG_SUBCOMMANDS.CMD_WRITE_MACSEC_CFG_RULE.value], + len, + data, + ) + + +def transmit_i2c_ICSSFP_CONFIG_MACSEC_MAP(device, netid, len, data): + return i2c_write( + device, + netid, + ICS_SFP_SLAVE_ADDR_ICS_CONTROL, + 1, + [SFP_ICS_CONFIG_SUBCOMMANDS.CMD_WRITE_MACSEC_CFG_MAP.value], + len, + data, + ) + + +def transmit_i2c_ICSSFP_CONFIG_MACSEC_SECY(device, netid, len, data): + return i2c_write( + device, + netid, + ICS_SFP_SLAVE_ADDR_ICS_CONTROL, + 1, + [SFP_ICS_CONFIG_SUBCOMMANDS.CMD_WRITE_MACSEC_CFG_SECY.value], + len, + data, + ) + + +def transmit_i2c_ICSSFP_CONFIG_MACSEC_SC(device, netid, len, data): + return i2c_write( + device, + netid, + ICS_SFP_SLAVE_ADDR_ICS_CONTROL, + 1, + [SFP_ICS_CONFIG_SUBCOMMANDS.CMD_WRITE_MACSEC_CFG_SC.value], + len, + data, + ) + + +def transmit_i2c_ICSSFP_CONFIG_MACSEC_SA(device, netid, len, data): + return i2c_write( + device, + netid, + ICS_SFP_SLAVE_ADDR_ICS_CONTROL, + 1, + [SFP_ICS_CONFIG_SUBCOMMANDS.CMD_WRITE_MACSEC_CFG_SA.value], + len, + data, + ) + + +def transmit_i2c_ICSSFP_READ_MACSEC_32B_REG( + device, netid, data, i2c_mdio_addr, regaddr +): + data_lower16b = None + data_upper16b = None + while data_lower16b is None or data_upper16b is None: + # load macsec read reg addr + i2c_read( + device, + netid, + i2c_mdio_addr, + 3, + [ + ((0x1 << 5) | MRVL_Q222X_MAC_DEV), + ((regaddr & 0xFF00) >> 8), + (regaddr & 0xFF), + ], + 2, + [0, 0], + ) + # read out lower 16b + data_lower16b = i2c_read( + device, + netid, + i2c_mdio_addr, + 3, + [ + ((0x1 << 5) | MRVL_Q222X_MAC_DEV), + ((MRVL_Q222X_MMAC_READ_LOW & 0xFF00) >> 8), + (MRVL_Q222X_MMAC_READ_LOW & 0xFF), + ], + 2, + [0, 0], + ) + # read out upper 16b + data_upper16b = i2c_read( + device, + netid, + i2c_mdio_addr, + 3, + [ + ((0x1 << 5) | MRVL_Q222X_MAC_DEV), + ((MRVL_Q222X_MMAC_READ_HIGH & 0xFF00) >> 8), + (MRVL_Q222X_MMAC_READ_HIGH & 0xFF), + ], + 2, + [0, 0], + ) + # return 32b reg data + data.append(data_upper16b[3]) + data.append(data_upper16b[4]) + data.append(data_lower16b[3]) + data.append(data_lower16b[4]) + return data + + +def transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_addr, regaddr +): + # read out upper 32b + transmit_i2c_ICSSFP_READ_MACSEC_32B_REG( + device, netid, data, i2c_mdio_addr, regaddr + 2 + ) + # read out lower 32b + transmit_i2c_ICSSFP_READ_MACSEC_32B_REG(device, netid, data, i2c_mdio_addr, regaddr) + + +def transmit_i2c_ICSSFP_WRITE_MACSEC_32B_REG( + device, netid, data, i2c_mdio_addr, regaddr +): + # write lower 16b + i2c_write( + device, + netid, + i2c_mdio_addr, + 3, + [MRVL_Q222X_MAC_DEV, ((regaddr & 0xFF00) >> 8), (regaddr & 0xFF)], + 2, + [(data & 0xFF00) >> 8, data & 0xFF], + ) + regaddr += 1 + # write upper 16b + i2c_write( + device, + netid, + i2c_mdio_addr, + 3, + [MRVL_Q222X_MAC_DEV, ((regaddr & 0xFF00) >> 8), (regaddr & 0xFF)], + 2, + [(data & 0xFF000000) >> 24, (data & 0xFF0000) >> 16], + ) + + +def sfp_msa_decode(data): + table = namedtuple( + "msa", + "identifier ext_identifier connector transceiver encoding br_nominal l1 l2 l3 l4 l5 vendor_name vendor_oui vendor_pn vendor_rev cc_base options br_max br_min vendor_sn date_year date_month date_day date_lot diag_mon_type enh_options sff8472_compl cc_ext ics_mdio_bridge_addr vendor_data ics_pcb_serial ics_app_id ics_overrides", + ) + data = bytes(data) + x = struct.unpack( + ">BBBQBB1xBBBBB1x16s1x3s16s4s3xBHBB16s2s2s2s2sBBBBB13s16sBB", data + ) + n = 16 * 2 + hex_str = data.hex() + hex_str = "\n".join(hex_str[i : i + n] for i in range(0, len(hex_str), n)) + print("MSA table raw:\n" + hex_str) + table = table._asdict(table._make(x)) + try: + # verify CC_BASE, 8-bit sum of bytes 64-94 + cc_base = 0 + for i in range(0, 63): + cc_base += data[i] + table["cc_base_valid"] = 1 if (cc_base & 0xFF) == table["cc_base"] else 0 + # verify CC_EXT, 8-bit sum of bytes 64-94 + cc_ext = 0 + for i in range(64, 95): + cc_ext += data[i] + table["cc_ext_valid"] = 1 if (cc_ext & 0xFF) == table["cc_ext"] else 0 + # convert types of some items + table["vendor_name"] = ( + table["vendor_name"].decode("utf-8", errors="ignore").strip() + ) + table["vendor_pn"] = table["vendor_pn"].decode("utf-8", errors="ignore").strip() + table["vendor_rev"] = ( + table["vendor_rev"].decode("utf-8", errors="ignore").strip() + ) + table["vendor_sn"] = table["vendor_sn"].decode("utf-8", errors="ignore").strip() + table["ics_pcb_serial"] = ( + table["ics_pcb_serial"].decode("utf-8", errors="ignore").strip() + ) + year = table["date_year"].decode("utf-8", errors="ignore").strip() + if year.isdigit(): + table["date_year"] = int(year) + 2000 + month = table["date_month"].decode("utf-8", errors="ignore").strip() + if month.isdigit(): + table["date_month"] = int(month) + day = table["date_day"].decode("utf-8", errors="ignore").strip() + if day.isdigit(): + table["date_day"] = int(day) + except Exception: + pass + return table + + +def i2c_read_macsec_rx_secy_stats(device, netid, i2c_mdio_address): + data = [] + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_OCETS_SECY_DECRYPTED + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_OCETS_SECY_VALIDATE + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_PKTS_SECY_NO_SA + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_PKTS_SECY_NO_SA_ERROR + ) + + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_PKTS_SECY_BAD_TAG + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_PKTS_SECY_NO_TAG + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_PKTS_SECY_UNTAGGED + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_PKTS_CTRL_PORT_DISABLE + ) + + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_CTRL_PORT_OCETS + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_CTRL_PORT_UC_PKTS + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_CTRL_PORT_MC_PKTS + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_CTRL_PORT_BC_PKTS + ) + + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_UNCTRL_PORT_OCETS + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_UNCTRL_PORT_UC_PKTS + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_UNCTRL_PORT_MC_PKTS + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_UNCTRL_PORT_BC_PKTS + ) + + table = namedtuple( + "rx_secy_stats", + "inOctetsSecYDecrypted inOctetsSecYValidate inPktsSecYNoSAError inPktsSecYNoSA inPktsSecYBadTag inPktsSecYNoTag inPktsSecYUntagged inPktsCtrlPortDisable inCtrlPortOctets inCtrlPortUCPkts inCtrlPortMCPkts inCtrlPortBCPkts inUnCtrlPortOctets inUnCtrlPortUCPkts inUnCtrlPortMCPkts inUnCtrlPortBCPkts", + ) + data = bytes(data) + x = struct.unpack(">QQQQQQQQQQQQQQQQ", data) + table = table._asdict(table._make(x)) + return table + + +def read_macsec_rx_secy_stats(device, netid, i2c_mdio_address): + data = i2c_read_macsec_rx_secy_stats(device, netid, i2c_mdio_address) + if data is None: + return None + return data + + +def i2c_read_macsec_tx_secy_stats(device, netid, i2c_mdio_address): + data = [] + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, + netid, + data, + i2c_mdio_address, + MRVL_Q222X_MSEC_OUT_PKTS_CTRL_PORT_DISABLE, + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_OUT_PKTS_SECY_UNTAGGED + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, + netid, + data, + i2c_mdio_address, + MRVL_Q222X_MSEC_OUT_PKTS_SECY_NO_ACTIVE_SA, + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_OUT_PKTS_SECY_TOO_LONG + ) + + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_OUT_OCETS_SECY_PROTECTED + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_OUT_OCETS_SECY_ENCRYPTED + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_OUT_CTRL_PORT_OCETS + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_OUT_CTRL_PORT_UC_PKTS + ) + + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_OUT_CTRL_PORT_MC_PKTS + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_OUT_CTRL_PORT_BC_PKTS + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_OUT_UNCTRL_PORT_OCETS + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_OUT_UNCTRL_PORT_UC_PKTS + ) + + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_OUT_UNCTRL_PORT_MC_PKTS + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_OUT_UNCTRL_PORT_BC_PKTS + ) + + table = namedtuple( + "tx_secy_stats", + "outPktsCtrlPortDisable outPktsSecYUntagged outPktsSecYNoActiveSA outPktSecYTooLong outOCTETSSecYProtected outOCTETSSecYEncrypted outCtrlPortOctets outCtrlPortUCPkts outCtrlPortMCPkts outCtrlPortBCPkts outUnCtrlPortOctets outUnCtrlPortUCPkts outUnCtrlPortMCPkts outUnCtrlPortBCPkts", + ) + data = bytes(data) + x = struct.unpack(">QQQQQQQQQQQQQQ", data) + table = table._asdict(table._make(x)) + return table + + +def read_macsec_tx_secy_stats(device, netid, i2c_mdio_address): + data = i2c_read_macsec_tx_secy_stats(device, netid, i2c_mdio_address) + if data is None: + return None + return data + + +def i2c_read_macsec_rx_sc_stats(device, netid, i2c_mdio_address): + data = [] + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_PKTS_SC_CAM_HIT + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_PKTS_SC_LATE + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_PKTS_SC_NOT_VALID + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_PKTS_SC_INVALID + ) + + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_PKTS_SC_DELAYED + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_PKTS_SC_UNCHECKED + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_IN_PKTS_SC_OK + ) + + table = namedtuple( + "rx_sc_stats", + "inPktsSCCamHit inPktsSCLate inPktsSCNotValid inPktsSCInvalid inPktsSCDelayed inPktsSCUnchecked inPktsSCOK", + ) + data = bytes(data) + x = struct.unpack(">QQQQQQQ", data) + table = table._asdict(table._make(x)) + return table + + +def read_macsec_rx_sc_stats(device, netid, i2c_mdio_address): + data = i2c_read_macsec_rx_sc_stats(device, netid, i2c_mdio_address) + if data is None: + return None + return data + + +def i2c_read_macsec_tx_sc_stats(device, netid, i2c_mdio_address): + data = [] + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_OUT_PKTS_SC_PROTECTED + ) + transmit_i2c_ICSSFP_READ_MACSEC_64B_REG( + device, netid, data, i2c_mdio_address, MRVL_Q222X_MSEC_OUT_PKTS_SC_ENCRYPTED + ) + + table = namedtuple( + "tx_sc_stats", + "outPktsProtected outPktsEncrypted", + ) + data = bytes(data) + x = struct.unpack(">QQ", data) + table = table._asdict(table._make(x)) + return table + + +def read_macsec_tx_sc_stats(device, netid, i2c_mdio_address): + data = i2c_read_macsec_tx_sc_stats(device, netid, i2c_mdio_address) + if data is None: + return None + return data + + +def write_macsec_stats_clear_on_read(device, netid, i2c_mdio_address): + transmit_i2c_ICSSFP_WRITE_MACSEC_32B_REG( + device, netid, 1, i2c_mdio_address, MRVL_Q222X_MSEC_CSE_CLR_ON_RD + ) + transmit_i2c_ICSSFP_WRITE_MACSEC_32B_REG( + device, netid, 1, i2c_mdio_address, MRVL_Q222X_MSEC_CSE_CLR_ON_RD_Tx + ) + + +def write_macsec_stats_reinit(device, netid, i2c_mdio_address): + transmit_i2c_ICSSFP_WRITE_MACSEC_32B_REG( + device, netid, 0, i2c_mdio_address, MRVL_Q222X_MSEC_CSE_CLR_ON_RD + ) + transmit_i2c_ICSSFP_WRITE_MACSEC_32B_REG( + device, netid, 0, i2c_mdio_address, MRVL_Q222X_MSEC_CSE_CLR_ON_RD_Tx + ) + + +def macsec_clear_phy_counters(device, netid, i2c_mdio_address): + # Set counters to clear on read + write_macsec_stats_clear_on_read(device, netid, i2c_mdio_address) + write_macsec_stats_clear_on_read(device, netid, i2c_mdio_address) + time.sleep(0.1) + # Read secy, sc stats + read_macsec_rx_secy_stats(device, netid, i2c_mdio_address) + read_macsec_tx_secy_stats(device, netid, i2c_mdio_address) + read_macsec_rx_sc_stats(device, netid, i2c_mdio_address) + read_macsec_tx_sc_stats(device, netid, i2c_mdio_address) + read_macsec_rx_secy_stats(device, netid, i2c_mdio_address) + read_macsec_tx_secy_stats(device, netid, i2c_mdio_address) + read_macsec_rx_sc_stats(device, netid, i2c_mdio_address) + read_macsec_tx_sc_stats(device, netid, i2c_mdio_address) + time.sleep(0.1) + # Re-init counters + write_macsec_stats_reinit(device, netid, i2c_mdio_address) + write_macsec_stats_reinit(device, netid, i2c_mdio_address) + + +def sfp_query_module(device, netid): + """ + Look for an SFP module on an I2C network. + """ + data = i2c_read(device, netid, ICS_SFP_SLAVE_ADDR_MSA, 1, [0x00], 128, [0] * 128) + if data is None: + return None + + msa = sfp_msa_decode(data[1:]) + return msa + + +BL_FLAGS_FW_VALID_OFFSET = 0 +BL_FLAGS_APP_ERROR_OFFSET = 1 +BL_FLAGS_ERASE_IN_PROGRESS_OFFSET = 2 +BL_FLAGS_FLASH_IN_PROGRESS_OFFSET = 3 +BL_FLAGS_RESET_IN_PROGRESS_OFFSET = 4 +BL_FLAGS_BL_READY_OFFSET = 5 +BL_FLAGS_FLASH_READY_OFFSET = 6 +BL_FLAGS_ENABLE_XTEA_OFFSET = 7 + + +def sfp_ics_send_macsec_rule(device, netid, rule): + data = [] + data.append(rule["index"]) + for x in range(6): + data.append(rule["key_MAC_DA"][x]) + for x in range(6): + data.append(rule["mask_MAC_DA"][x]) + for x in range(6): + data.append(rule["key_MAC_SA"][x]) + for x in range(6): + data.append(rule["mask_MAC_SA"][x]) + for x in bytearray(rule["key_Ethertype"].to_bytes(2, "little")): + data.append(x) + for x in bytearray(rule["mask_Ethertype"].to_bytes(2, "little")): + data.append(x) + for x in bytearray(rule["key_outer1"]["vlanTag"]["VID"].to_bytes(2, "little")): + data.append(x) + data.append(rule["key_outer1"]["vlanTag"]["PRI_CFI"]) + for x in bytearray(rule["key_outer1"]["mpls"]["MPLS_label"].to_bytes(4, "little")): + data.append(x) + data.append(rule["key_outer1"]["mpls"]["exp"]) + for x in bytearray(rule["mask_outer1"]["vlanTag"]["VID"].to_bytes(2, "little")): + data.append(x) + data.append(rule["mask_outer1"]["vlanTag"]["PRI_CFI"]) + for x in bytearray(rule["mask_outer1"]["mpls"]["MPLS_label"].to_bytes(4, "little")): + data.append(x) + data.append(rule["mask_outer1"]["mpls"]["exp"]) + for x in bytearray(rule["key_outer2"]["vlanTag"]["VID"].to_bytes(2, "little")): + data.append(x) + data.append(rule["key_outer2"]["vlanTag"]["PRI_CFI"]) + for x in bytearray(rule["key_outer2"]["mpls"]["MPLS_label"].to_bytes(4, "little")): + data.append(x) + data.append(rule["key_outer2"]["mpls"]["exp"]) + for x in bytearray(rule["mask_outer2"]["vlanTag"]["VID"].to_bytes(2, "little")): + data.append(x) + data.append(rule["mask_outer2"]["vlanTag"]["PRI_CFI"]) + for x in bytearray(rule["mask_outer2"]["mpls"]["MPLS_label"].to_bytes(4, "little")): + data.append(x) + data.append(rule["mask_outer2"]["mpls"]["exp"]) + for x in bytearray(rule["key_bonus_data"].to_bytes(2, "little")): + data.append(x) + for x in bytearray(rule["mask_bonus_data"].to_bytes(2, "little")): + data.append(x) + data.append(rule["key_tag_match_bitmap"]) + data.append(rule["mask_tag_match_bitmap"]) + data.append(rule["key_packet_type"]) + data.append(rule["mask_packet_type"]) + for x in bytearray(rule["key_inner_vlan_type"].to_bytes(2, "little")): + data.append(x) + for x in bytearray(rule["mask_inner_vlan_type"].to_bytes(2, "little")): + data.append(x) + for x in bytearray(rule["key_outer_vlan_type"].to_bytes(2, "little")): + data.append(x) + for x in bytearray(rule["mask_outer_vlan_type"].to_bytes(2, "little")): + data.append(x) + data.append(rule["key_num_tags"]) + data.append(rule["mask_num_tags"]) + data.append(rule["key_express"]) + data.append(rule["mask_express"]) + for x in bytearray(rule["isMPLS"].to_bytes(1, "little")): + data.append(x) + for x in range(5): + data.append(rule["reserved"][x]) + for x in bytearray(rule["enable"].to_bytes(1, "little")): + data.append(x) + transmit_i2c_ICSSFP_CONFIG_MACSEC_RULE(device, netid, len(data), data) + + +def sfp_ics_send_macsec_map(device, netid, map): + data = [] + data.append(map["index"]) + for x in bytearray(map["sectag_sci"].to_bytes(8, "little")): + data.append(x) + data.append(map["secYIndex"]) + for x in bytearray(map["isControlPacket"].to_bytes(1, "little")): + data.append(x) + data.append(map["scIndex"]) + for x in bytearray(map["auxiliary_plcy"].to_bytes(1, "little")): + data.append(x) + data.append(map["ruleId"]) + for x in range(5): + data.append(map["reserved"][x]) + for x in bytearray(map["enable"].to_bytes(1, "little")): + data.append(x) + transmit_i2c_ICSSFP_CONFIG_MACSEC_MAP(device, netid, len(data), data) + + +def sfp_ics_send_macsec_secy(device, netid, secy): + data = [] + data.append(secy["index"]) + for x in bytearray(secy["controlled_port_enabled"].to_bytes(1, "little")): + data.append(x) + data.append(secy["validate_frames"]) + data.append(secy["strip_sectag_icv"]) + data.append(secy["cipher"]) + data.append(secy["confidential_offset"]) + for x in bytearray(secy["icv_includes_da_sa"].to_bytes(1, "little")): + data.append(x) + for x in bytearray(secy["replay_protect"].to_bytes(1, "little")): + data.append(x) + for x in bytearray(secy["replay_window"].to_bytes(4, "little")): + data.append(x) + for x in bytearray(secy["protect_frames"].to_bytes(1, "little")): + data.append(x) + data.append(secy["sectag_offset"]) + data.append(secy["sectag_tci"]) + for x in bytearray(secy["mtu"].to_bytes(2, "little")): + data.append(x) + for x in range(6): + data.append(secy["reserved"][x]) + for x in bytearray(secy["enable"].to_bytes(1, "little")): + data.append(x) + transmit_i2c_ICSSFP_CONFIG_MACSEC_SECY(device, netid, len(data), data) + + +def sfp_ics_send_macsec_sc(device, netid, sc): + data = [] + data.append(sc["index"]) + data.append(sc["secYIndex"]) + for x in bytearray(sc["sci"].to_bytes(8, "little")): + data.append(x) + data.append(sc["sa_index0"]) + data.append(sc["sa_index1"]) + for x in bytearray(sc["sa_index0_in_use"].to_bytes(1, "little")): + data.append(x) + for x in bytearray(sc["sa_index1_in_use"].to_bytes(1, "little")): + data.append(x) + for x in bytearray(sc["enable_auto_rekey"].to_bytes(1, "little")): + data.append(x) + for x in bytearray(sc["isActiveSA1"].to_bytes(1, "little")): + data.append(x) + for x in range(7): + data.append(sc["reserved"][x]) + for x in bytearray(sc["enable"].to_bytes(1, "little")): + data.append(x) + transmit_i2c_ICSSFP_CONFIG_MACSEC_SC(device, netid, len(data), data) + + +def sfp_ics_send_macsec_sa(device, netid, sa): + data = [] + data.append(sa["index"]) + for x in range(32): + data.append(sa["sak"][x]) + for x in range(16): + data.append(sa["hashKey"][x]) + for x in range(12): + data.append(sa["salt"][x]) + for x in bytearray(sa["ssci"].to_bytes(4, "little")): + data.append(x) + data.append(sa["AN"]) + for x in bytearray(sa["nextPN"].to_bytes(8, "little")): + data.append(x) + for x in range(5): + data.append(sa["reserved"][x]) + for x in bytearray(sa["enable"].to_bytes(1, "little")): + data.append(x) + transmit_i2c_ICSSFP_CONFIG_MACSEC_SA(device, netid, len(data), data) + + +def sfp_ics_update_macsec( + device, netid, rx, rule, map, secy, sc, sa, nvm, en, clr, rst +): + data = [] + byte0 = rule << 0 + byte0 |= map << 1 + byte0 |= secy << 2 + byte0 |= sc << 3 + byte0 |= sa << 4 + byte0 |= rx << 5 + byte0 |= nvm << 6 + byte0 |= en << 7 + data.append(byte0) + byte1 = clr << 0 + byte1 |= rst << 1 + data.append(byte1) + transmit_i2c_ICSSFP_UPDATE_MACSEC(device, netid, data) + + +def sfp_query_verify_macsec_support(device, netid_config, reset): + netid = get_hwnetid(netid_config) + # query for MACSec supproted SFP module + print("Checking for SFP modules...") + msa = sfp_query_module(device, netid) + if msa is None: + print(f"\nNo SFP module found on port {netid_config}... exiting.") + if not reset: # dont exit if we only want to reset + exit(1) + + # add information to dictionary + d = {} + d["Vendor PN"] = msa["vendor_pn"] + d["Vendor"] = msa["vendor_name"] + d["Vendor Revision"] = msa["vendor_rev"] + d["Vendor SN"] = msa["vendor_sn"] + try: + man_date = datetime.date(msa["date_year"], msa["date_month"], msa["date_day"]) + x = man_date.strftime("%Y/%m/%d") + except Exception: + x = f"{msa['date_year']}/{msa['date_month']}/{msa['date_day']} -- invalid" + + d["Manufacture date"] = f"{x}" + d["Supports LOS Pin"] = 1 if msa["options"] & 0x02 else 0 + d["Supports LOS Pin (inverted)"] = 1 if (msa["options"] & 0x04) else 0 + d["Supports TX Fault Pin"] = 1 if msa["options"] & 0x08 else 0 + d["Supports TX Disable Pin"] = 1 if msa["options"] & 0x10 else 0 + d["Supports Rate Select Pin"] = 1 if msa["options"] & 0x20 else 0 + + d["Supports Soft LOS"] = 1 if msa["enh_options"] & 0x10 else 0 + d["Supports Soft TX Fault"] = 1 if msa["enh_options"] & 0x20 else 0 + d["Supports Soft TX Disable"] = 1 if msa["enh_options"] & 0x40 else 0 + d["Supports Soft Rate Select"] = 1 if msa["enh_options"] & 0x08 else 0 + d["Supports Soft Alarm/Warning Flags"] = 1 if msa["enh_options"] & 0x80 else 0 + d["Supports Diagnostic Monitoring Interface"] = ( + 1 if msa["diag_mon_type"] & 0x40 else 0 + ) + if not msa["cc_base_valid"]: + d["Check Code"] = hex(msa["cc_base"]) + " -- invalid" + if not msa["cc_ext_valid"]: + d["Check Code"] = hex(msa["cc_ext"]) + " -- invalid" + + i2c_mdio_address = 0x40 + if not (msa["ics_overrides"] & 0x1): # MDIO address override + i2c_mdio_address = msa["ics_mdio_bridge_addr"] + + # print all information + print(dict_align_str(d)) + + # verify macsec supported part + if d["Vendor PN"] != "SFP-MV2221M-B1": + print(f"\nNo SFP-MV2221M-B1 module found on port {netid_config}... exiting.") + exit(1) + + if reset: # clear macsec config for this module + print( + f"\nClearing and Disabling MACSec on SFP module found on port {netid_config}..." + ) + # clear/reset any current macsec configuration + sfp_ics_update_macsec(device, netid, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1) + time.sleep(1) + print( + f"\nCleared and Disabled MACSec on SFP module found on port {netid_config}..." + ) + return i2c_mdio_address diff --git a/MACsec_Utilitie/yaml.zip b/MACsec_Utilitie/yaml.zip new file mode 100644 index 0000000..8fcf64a Binary files /dev/null and b/MACsec_Utilitie/yaml.zip differ diff --git a/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_macda_SecY_128_strip_strict_sci_SA_sak0.yml b/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_macda_SecY_128_strip_strict_sci_SA_sak0.yml new file mode 100644 index 0000000..2dab688 --- /dev/null +++ b/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_macda_SecY_128_strip_strict_sci_SA_sak0.yml @@ -0,0 +1,271 @@ +--- +############################################################################### +# This is intended to be used as an example yaml for loading a MACsec +# configuration to ICS SFP-MV2221M-B1 module +# +# MACsec configuration: +# tx: +# rule: +# - MAC DA = 00:FC:70:XX:XX:XX (IntrepidCS OUI) packets authenticated and encrypted +# - other packets dropped +# map: +# - Map Rule 0 to SecY 0 and SC 0 +# - Use SCI = 0xAFAFAFAFAFAFFFFF +# secy: +# - Cipher = GCM_AES_128 +# - Always Authenticate, Replay Protect, and Encrypt/Decrypt +# - Include the MAC DA and SA in the ICV +# sc: +# - Assign 2 x SA's +# - SA 0 is Active +# - Enable auto rekey +# 2 x sa: +# - Define Keys +# - Assign indices 0,1 +# - Next PN = 1 +# rx: +# rule: +# - MAC DA = 00:FC:70:XX:XX:XX (IntrepidCS OUI) packets authenticated, replay protected, and decrypted +# - other packets dropped +# map: +# - Map Rule 0 to SecY 0 and SC 0 +# - Check SCI = 0xAFAFAFAFAFAFFFFF +# secy: +# - Cipher = GCM_AES_128 +# - Drop invalid frames +# - Always Authenticate, Replay Protect, and Decrypt User Data +# - Strip ICV and SecTag from incoming frames +# - Include the MAC DA and SA in the ICV +# sc: +# - Assign 2 x SA's +# - SA 0 is Active +# - Enable auto rekey +# 2 x sa: +# - Define Keys +# - Assign indices 0,1 +# - Next PN = 1 +############################################################################### +tx: + rule: + index: 0 + key_MAC_DA: [ 0x00, 0xFC, 0x70, 0xFF, 0xFF, 0xFF ] # MAC DA field extracted from the packet + mask_MAC_DA: [ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC SA field extracted from the packet + mask_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_Ethertype: 0xFFFF # First E-Type found in the packet that doesn't match one of the preconfigured custom tag + mask_Ethertype: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer1: # outermost/1st VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer1: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_outer2: # 2nd outermost VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer2: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_bonus_data: 0xFFFF # 2 bytes of additional bonus data extracted from one of the custom tags + mask_bonus_data: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_tag_match_bitmap: 0xFF # 8 bits total. Maps 1 to 1 bitwise with the set of custom tags. (set bit[N]=1 if check Nth custom tag) + mask_tag_match_bitmap: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_packet_type: 0 # Encoded Packet Type = NO_VLAN_OR_MPLS; see MRVL_Q222X_MSEC_PACKET_TYPE + mask_packet_type: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_inner_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the second outermost VLAN Tag + mask_inner_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the outermost VLAN Tag + mask_outer_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_num_tags: 0xFF # 7 bits total. Number of VLAN/custom tags or MPLS lables detected. Ingress: before SecTag; Egress: total detected + mask_num_tags: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_express: 0xFF # 1 bits. Express packet + mask_express: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + isMPLS: False + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + map: + index: 0 + sectag_sci: 0xAFAFAFAFAFAFFFFF # Identifies the SecTAG SCI for this Flow + secYIndex: 0x00 # Index for entry in Egress secY Policy + isControlPacket: False # Identifies all packets matching this index lookup as control packets + scIndex: 0x00 # Identifies the SC for this Flow + auxiliary_plcy: False # Auxiliary policy bits + ruleId: 0x00 # Identifies the Rule for this Flow + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + secy: + index: 0x00 # Identifies the SecY for this Flow + controlled_port_enabled: True # Enable (or disable) operation of the Controlled port associated with this SecY + validate_frames: 2 # Validate Frame = STRICT; see MRVL_Q222X_MSEC_VALIDATEFRAME + strip_sectag_icv: 0 # Strip SecTag and ICV; see MRVL_Q222X_MSEC_STRIP_SECTAG_ICV + cipher: 0 # GCM_AES_128 = Cipher suite to use for this SecY; see MRVL_Q222X_MSEC_CIPHER_SUITE + confidential_offset: 0x00 # Define the number of bytes that are unencrypted following the SecTag + icv_includes_da_sa: True # When set, the outer DA/SA bytes are included in the authentication GHASH calculation + replay_protect: True # Enables Anti-Replay protection + replay_window: 0xFFFFFFFF # Unsigned value indicating the size of the anti-replay window + protect_frames: True # 0 = do not encrypt or authenticate this packet; 1 = always Authenticate frame and if SecTag.TCI.E = 1 encrypt the packet as well + sectag_offset: 12 # 12B = sizeof(DA) + sizeof(SA); offset in bytes from either the start of the packet or a matching Etype depending on SecTag_Insertion_Mode + sectag_tci: 0x0B # SCI included, encrypt and auth user data; Tag Control Information excluding the AN field which originates from the SA Policy table; + mtu: 0xFFFF # Specifies the outgoing MTU for this SecY + reserved: [ 0, 0, 0, 0, 0, 0 ] + enable: True + sc: + index: 0x00 # SC index + secYIndex: 0x00 # SecY associated with this packet + sci: 0xAFAFAFAFAFAFFFFF # The Secure Channel Identifier + sa_index0: 0x00 # Define the 1st SA to use + sa_index1: 0x01 # Define the 2nd SA to use + sa_index0_in_use: True # Specifies whether 1st SA is in use or not + sa_index1_in_use: True # Specifies whether 2nd SA is in use or not + enable_auto_rekey: True # If enabled, then once the pn_threshold is reached, auto rekey will happen + isActiveSA1: False # If set, then sa_index1 is the currently active SA index. If cleared, the sa_index0 is the currently active SA index + reserved: [ 0, 0, 0, 0, 0, 0, 0 ] + enable: True + sa0: + index: 0x00 # SA index + sak: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x00 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + sa1: + index: 0x01 # SA index + sak: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x01 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True +rx: + rule: + index: 0 + key_MAC_DA: [ 0x00, 0xFC, 0x70, 0xFF, 0xFF, 0xFF ] # MAC DA field extracted from the packet + mask_MAC_DA: [ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC SA field extracted from the packet + mask_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_Ethertype: 0xFFFF # First E-Type found in the packet that doesn't match one of the preconfigured custom tag + mask_Ethertype: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer1: # outermost/1st VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer1: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_outer2: # 2nd outermost VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer2: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_bonus_data: 0xFFFF # 2 bytes of additional bonus data extracted from one of the custom tags + mask_bonus_data: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_tag_match_bitmap: 0xFF # 8 bits total. Maps 1 to 1 bitwise with the set of custom tags. (set bit[N]=1 if check Nth custom tag) + mask_tag_match_bitmap: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_packet_type: 0 # Encoded Packet Type = NO_VLAN_OR_MPLS; see MRVL_Q222X_MSEC_PACKET_TYPE + mask_packet_type: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_inner_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the second outermost VLAN Tag + mask_inner_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the outermost VLAN Tag + mask_outer_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_num_tags: 0xFF # 7 bits total. Number of VLAN/custom tags or MPLS lables detected. Ingress: before SecTag; Egress: total detected + mask_num_tags: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_express: 0xFF # 1 bits. Express packet + mask_express: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + isMPLS: False + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + map: + index: 0 + sectag_sci: 0xAFAFAFAFAFAFFFFF # Identifies the SecTAG SCI for this Flow + secYIndex: 0x00 # Index for entry in Egress secY Policy + isControlPacket: False # Identifies all packets matching this index lookup as control packets + scIndex: 0x00 # Identifies the SC for this Flow + auxiliary_plcy: False # Auxiliary policy bits + ruleId: 0x00 # Identifies the Rule for this Flow + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + secy: + index: 0x00 # Identifies the SecY for this Flow + controlled_port_enabled: True # Enable (or disable) operation of the Controlled port associated with this SecY + validate_frames: 2 # Validate Frame = STRICT; see MRVL_Q222X_MSEC_VALIDATEFRAME + strip_sectag_icv: 0 # Strip SecTag and ICV; see MRVL_Q222X_MSEC_STRIP_SECTAG_ICV + cipher: 0 # GCM_AES_128 = Cipher suite to use for this SecY; see MRVL_Q222X_MSEC_CIPHER_SUITE + confidential_offset: 0x00 # Define the number of bytes that are unencrypted following the SecTag + icv_includes_da_sa: True # When set, the outer DA/SA bytes are included in the authentication GHASH calculation + replay_protect: True # Enables Anti-Replay protection + replay_window: 0xFFFFFFFF # Unsigned value indicating the size of the anti-replay window + protect_frames: True # 0 = do not encrypt or authenticate this packet; 1 = always Authenticate frame and if SecTag.TCI.E = 1 encrypt the packet as well + sectag_offset: 12 # 12B = sizeof(DA) + sizeof(SA); offset in bytes from either the start of the packet or a matching Etype depending on SecTag_Insertion_Mode + sectag_tci: 0x0B # SCI included, encrypt and auth user data; Tag Control Information excluding the AN field which originates from the SA Policy table; + mtu: 0xFFFF # Specifies the outgoing MTU for this SecY + reserved: [ 0, 0, 0, 0, 0, 0 ] + enable: True + sc: + index: 0x00 # SC index + secYIndex: 0x00 # SecY associated with this packet + sci: 0xAFAFAFAFAFAFFFFF # The Secure Channel Identifier + sa_index0: 0x00 # Define the 1st SA to use + sa_index1: 0x01 # Define the 2nd SA to use + sa_index0_in_use: True # Specifies whether 1st SA is in use or not + sa_index1_in_use: True # Specifies whether 2nd SA is in use or not + enable_auto_rekey: True # If enabled, then once the pn_threshold is reached, auto rekey will happen + isActiveSA1: False # If set, then sa_index1 is the currently active SA index. If cleared, the sa_index0 is the currently active SA index + reserved: [ 0, 0, 0, 0, 0, 0, 0 ] + enable: True + sa0: + index: 0x00 # SA index + sak: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x00 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + sa1: + index: 0x01 # SA index + sak: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x01 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True \ No newline at end of file diff --git a/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_macsa_SecY_128_strip_strict_sci_SA_sak0.yml b/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_macsa_SecY_128_strip_strict_sci_SA_sak0.yml new file mode 100644 index 0000000..b82df6a --- /dev/null +++ b/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_macsa_SecY_128_strip_strict_sci_SA_sak0.yml @@ -0,0 +1,271 @@ +--- +############################################################################### +# This is intended to be used as an example yaml for loading a MACsec +# configuration to ICS SFP-MV2221M-B1 module +# +# MACsec configuration: +# tx: +# rule: +# - MAC SA = 00:FC:70:XX:XX:XX (IntrepidCS OUI) packets authenticated and encrypted +# - other packets dropped +# map: +# - Map Rule 0 to SecY 0 and SC 0 +# - Use SCI = 0xAFAFAFAFAFAFFFFF +# secy: +# - Cipher = GCM_AES_128 +# - Always Authenticate, Replay Protect, and Encrypt/Decrypt +# - Include the MAC DA and SA in the ICV +# sc: +# - Assign 2 x SA's +# - SA 0 is Active +# - Enable auto rekey +# 2 x sa: +# - Define Keys +# - Assign indices 0,1 +# - Next PN = 1 +# rx: +# rule: +# - MAC SA = 00:FC:70:XX:XX:XX (IntrepidCS OUI) packets authenticated, replay protected, and decrypted +# - other packets dropped +# map: +# - Map Rule 0 to SecY 0 and SC 0 +# - Check SCI = 0xAFAFAFAFAFAFFFFF +# secy: +# - Cipher = GCM_AES_128 +# - Drop invalid frames +# - Always Authenticate, Replay Protect, and Decrypt User Data +# - Strip ICV and SecTag from incoming frames +# - Include the MAC DA and SA in the ICV +# sc: +# - Assign 2 x SA's +# - SA 0 is Active +# - Enable auto rekey +# 2 x sa: +# - Define Keys +# - Assign indices 0,1 +# - Next PN = 1 +############################################################################### +tx: + rule: + index: 0 + key_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC DA field extracted from the packet + mask_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_MAC_SA: [ 0x00, 0xFC, 0x70, 0xFF, 0xFF, 0xFF ] # MAC SA field extracted from the packet + mask_MAC_SA: [ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_Ethertype: 0xFFFF # First E-Type found in the packet that doesn't match one of the preconfigured custom tag + mask_Ethertype: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer1: # outermost/1st VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer1: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_outer2: # 2nd outermost VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer2: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_bonus_data: 0xFFFF # 2 bytes of additional bonus data extracted from one of the custom tags + mask_bonus_data: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_tag_match_bitmap: 0xFF # 8 bits total. Maps 1 to 1 bitwise with the set of custom tags. (set bit[N]=1 if check Nth custom tag) + mask_tag_match_bitmap: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_packet_type: 0 # Encoded Packet Type = NO_VLAN_OR_MPLS; see MRVL_Q222X_MSEC_PACKET_TYPE + mask_packet_type: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_inner_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the second outermost VLAN Tag + mask_inner_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the outermost VLAN Tag + mask_outer_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_num_tags: 0xFF # 7 bits total. Number of VLAN/custom tags or MPLS lables detected. Ingress: before SecTag; Egress: total detected + mask_num_tags: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_express: 0xFF # 1 bits. Express packet + mask_express: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + isMPLS: False + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + map: + index: 0 + sectag_sci: 0xAFAFAFAFAFAFFFFF # Identifies the SecTAG SCI for this Flow + secYIndex: 0x00 # Index for entry in Egress secY Policy + isControlPacket: False # Identifies all packets matching this index lookup as control packets + scIndex: 0x00 # Identifies the SC for this Flow + auxiliary_plcy: False # Auxiliary policy bits + ruleId: 0x00 # Identifies the Rule for this Flow + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + secy: + index: 0x00 # Identifies the SecY for this Flow + controlled_port_enabled: True # Enable (or disable) operation of the Controlled port associated with this SecY + validate_frames: 2 # Validate Frame = STRICT; see MRVL_Q222X_MSEC_VALIDATEFRAME + strip_sectag_icv: 0 # Strip SecTag and ICV; see MRVL_Q222X_MSEC_STRIP_SECTAG_ICV + cipher: 0 # GCM_AES_128 = Cipher suite to use for this SecY; see MRVL_Q222X_MSEC_CIPHER_SUITE + confidential_offset: 0x00 # Define the number of bytes that are unencrypted following the SecTag + icv_includes_da_sa: True # When set, the outer DA/SA bytes are included in the authentication GHASH calculation + replay_protect: True # Enables Anti-Replay protection + replay_window: 0xFFFFFFFF # Unsigned value indicating the size of the anti-replay window + protect_frames: True # 0 = do not encrypt or authenticate this packet; 1 = always Authenticate frame and if SecTag.TCI.E = 1 encrypt the packet as well + sectag_offset: 12 # 12B = sizeof(DA) + sizeof(SA); offset in bytes from either the start of the packet or a matching Etype depending on SecTag_Insertion_Mode + sectag_tci: 0x0B # SCI included, encrypt and auth user data; Tag Control Information excluding the AN field which originates from the SA Policy table; + mtu: 0xFFFF # Specifies the outgoing MTU for this SecY + reserved: [ 0, 0, 0, 0, 0, 0 ] + enable: True + sc: + index: 0x00 # SC index + secYIndex: 0x00 # SecY associated with this packet + sci: 0xAFAFAFAFAFAFFFFF # The Secure Channel Identifier + sa_index0: 0x00 # Define the 1st SA to use + sa_index1: 0x01 # Define the 2nd SA to use + sa_index0_in_use: True # Specifies whether 1st SA is in use or not + sa_index1_in_use: True # Specifies whether 2nd SA is in use or not + enable_auto_rekey: True # If enabled, then once the pn_threshold is reached, auto rekey will happen + isActiveSA1: False # If set, then sa_index1 is the currently active SA index. If cleared, the sa_index0 is the currently active SA index + reserved: [ 0, 0, 0, 0, 0, 0, 0 ] + enable: True + sa0: + index: 0x00 # SA index + sak: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x00 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + sa1: + index: 0x01 # SA index + sak: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x01 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True +rx: + rule: + index: 0 + key_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC DA field extracted from the packet + mask_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_MAC_SA: [ 0x00, 0xFC, 0x70, 0xFF, 0xFF, 0xFF ] # MAC SA field extracted from the packet + mask_MAC_SA: [ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_Ethertype: 0xFFFF # First E-Type found in the packet that doesn't match one of the preconfigured custom tag + mask_Ethertype: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer1: # outermost/1st VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer1: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_outer2: # 2nd outermost VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer2: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_bonus_data: 0xFFFF # 2 bytes of additional bonus data extracted from one of the custom tags + mask_bonus_data: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_tag_match_bitmap: 0xFF # 8 bits total. Maps 1 to 1 bitwise with the set of custom tags. (set bit[N]=1 if check Nth custom tag) + mask_tag_match_bitmap: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_packet_type: 0 # Encoded Packet Type = NO_VLAN_OR_MPLS; see MRVL_Q222X_MSEC_PACKET_TYPE + mask_packet_type: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_inner_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the second outermost VLAN Tag + mask_inner_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the outermost VLAN Tag + mask_outer_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_num_tags: 0xFF # 7 bits total. Number of VLAN/custom tags or MPLS lables detected. Ingress: before SecTag; Egress: total detected + mask_num_tags: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_express: 0xFF # 1 bits. Express packet + mask_express: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + isMPLS: False + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + map: + index: 0 + sectag_sci: 0xAFAFAFAFAFAFFFFF # Identifies the SecTAG SCI for this Flow + secYIndex: 0x00 # Index for entry in Egress secY Policy + isControlPacket: False # Identifies all packets matching this index lookup as control packets + scIndex: 0x00 # Identifies the SC for this Flow + auxiliary_plcy: False # Auxiliary policy bits + ruleId: 0x00 # Identifies the Rule for this Flow + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + secy: + index: 0x00 # Identifies the SecY for this Flow + controlled_port_enabled: True # Enable (or disable) operation of the Controlled port associated with this SecY + validate_frames: 2 # Validate Frame = STRICT; see MRVL_Q222X_MSEC_VALIDATEFRAME + strip_sectag_icv: 0 # Strip SecTag and ICV; see MRVL_Q222X_MSEC_STRIP_SECTAG_ICV + cipher: 0 # GCM_AES_128 = Cipher suite to use for this SecY; see MRVL_Q222X_MSEC_CIPHER_SUITE + confidential_offset: 0x00 # Define the number of bytes that are unencrypted following the SecTag + icv_includes_da_sa: True # When set, the outer DA/SA bytes are included in the authentication GHASH calculation + replay_protect: True # Enables Anti-Replay protection + replay_window: 0xFFFFFFFF # Unsigned value indicating the size of the anti-replay window + protect_frames: True # 0 = do not encrypt or authenticate this packet; 1 = always Authenticate frame and if SecTag.TCI.E = 1 encrypt the packet as well + sectag_offset: 12 # 12B = sizeof(DA) + sizeof(SA); offset in bytes from either the start of the packet or a matching Etype depending on SecTag_Insertion_Mode + sectag_tci: 0x0B # SCI included, encrypt and auth user data; Tag Control Information excluding the AN field which originates from the SA Policy table; + mtu: 0xFFFF # Specifies the outgoing MTU for this SecY + reserved: [ 0, 0, 0, 0, 0, 0 ] + enable: True + sc: + index: 0x00 # SC index + secYIndex: 0x00 # SecY associated with this packet + sci: 0xAFAFAFAFAFAFFFFF # The Secure Channel Identifier + sa_index0: 0x00 # Define the 1st SA to use + sa_index1: 0x01 # Define the 2nd SA to use + sa_index0_in_use: True # Specifies whether 1st SA is in use or not + sa_index1_in_use: True # Specifies whether 2nd SA is in use or not + enable_auto_rekey: True # If enabled, then once the pn_threshold is reached, auto rekey will happen + isActiveSA1: False # If set, then sa_index1 is the currently active SA index. If cleared, the sa_index0 is the currently active SA index + reserved: [ 0, 0, 0, 0, 0, 0, 0 ] + enable: True + sa0: + index: 0x00 # SA index + sak: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x00 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + sa1: + index: 0x01 # SA index + sak: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x01 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True \ No newline at end of file diff --git a/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_txmacsa_rxmacda_SecY_128_strip_strict_sci_SA_sak0.yml b/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_txmacsa_rxmacda_SecY_128_strip_strict_sci_SA_sak0.yml new file mode 100644 index 0000000..aac3c3b --- /dev/null +++ b/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_txmacsa_rxmacda_SecY_128_strip_strict_sci_SA_sak0.yml @@ -0,0 +1,271 @@ +--- +############################################################################### +# This is intended to be used as an example yaml for loading a MACsec +# configuration to ICS SFP-MV2221M-B1 module +# +# MACsec configuration: +# tx: +# rule: +# - MAC SA = 00:FC:70:XX:XX:XX (IntrepidCS OUI) packets authenticated and encrypted +# - other packets dropped +# map: +# - Map Rule 0 to SecY 0 and SC 0 +# - Use SCI = 0xAFAFAFAFAFAFFFFF +# secy: +# - Cipher = GCM_AES_128 +# - Always Authenticate, Replay Protect, and Encrypt/Decrypt +# - Include the MAC DA and SA in the ICV +# sc: +# - Assign 2 x SA's +# - SA 0 is Active +# - Enable auto rekey +# 2 x sa: +# - Define Keys +# - Assign indices 0,1 +# - Next PN = 1 +# rx: +# rule: +# - MAC DA = 00:FC:70:XX:XX:XX (IntrepidCS OUI) packets authenticated, replay protected, and decrypted +# - other packets dropped +# map: +# - Map Rule 0 to SecY 0 and SC 0 +# - Check SCI = 0xAFAFAFAFAFAFFFFF +# secy: +# - Cipher = GCM_AES_128 +# - Drop invalid frames +# - Always Authenticate, Replay Protect, and Decrypt User Data +# - Strip ICV and SecTag from incoming frames +# - Include the MAC DA and SA in the ICV +# sc: +# - Assign 2 x SA's +# - SA 0 is Active +# - Enable auto rekey +# 2 x sa: +# - Define Keys +# - Assign indices 0,1 +# - Next PN = 1 +############################################################################### +tx: + rule: + index: 0 + key_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC DA field extracted from the packet + mask_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_MAC_SA: [ 0x00, 0xFC, 0x70, 0xFF, 0xFF, 0xFF ] # MAC SA field extracted from the packet + mask_MAC_SA: [ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_Ethertype: 0xFFFF # First E-Type found in the packet that doesn't match one of the preconfigured custom tag + mask_Ethertype: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer1: # outermost/1st VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer1: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_outer2: # 2nd outermost VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer2: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_bonus_data: 0xFFFF # 2 bytes of additional bonus data extracted from one of the custom tags + mask_bonus_data: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_tag_match_bitmap: 0xFF # 8 bits total. Maps 1 to 1 bitwise with the set of custom tags. (set bit[N]=1 if check Nth custom tag) + mask_tag_match_bitmap: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_packet_type: 0 # Encoded Packet Type = NO_VLAN_OR_MPLS; see MRVL_Q222X_MSEC_PACKET_TYPE + mask_packet_type: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_inner_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the second outermost VLAN Tag + mask_inner_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the outermost VLAN Tag + mask_outer_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_num_tags: 0xFF # 7 bits total. Number of VLAN/custom tags or MPLS lables detected. Ingress: before SecTag; Egress: total detected + mask_num_tags: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_express: 0xFF # 1 bits. Express packet + mask_express: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + isMPLS: False + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + map: + index: 0 + sectag_sci: 0xAFAFAFAFAFAFFFFF # Identifies the SecTAG SCI for this Flow + secYIndex: 0x00 # Index for entry in Egress secY Policy + isControlPacket: False # Identifies all packets matching this index lookup as control packets + scIndex: 0x00 # Identifies the SC for this Flow + auxiliary_plcy: False # Auxiliary policy bits + ruleId: 0x00 # Identifies the Rule for this Flow + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + secy: + index: 0x00 # Identifies the SecY for this Flow + controlled_port_enabled: True # Enable (or disable) operation of the Controlled port associated with this SecY + validate_frames: 2 # Validate Frame = STRICT; see MRVL_Q222X_MSEC_VALIDATEFRAME + strip_sectag_icv: 0 # Strip SecTag and ICV; see MRVL_Q222X_MSEC_STRIP_SECTAG_ICV + cipher: 0 # GCM_AES_128 = Cipher suite to use for this SecY; see MRVL_Q222X_MSEC_CIPHER_SUITE + confidential_offset: 0x00 # Define the number of bytes that are unencrypted following the SecTag + icv_includes_da_sa: True # When set, the outer DA/SA bytes are included in the authentication GHASH calculation + replay_protect: True # Enables Anti-Replay protection + replay_window: 0xFFFFFFFF # Unsigned value indicating the size of the anti-replay window + protect_frames: True # 0 = do not encrypt or authenticate this packet; 1 = always Authenticate frame and if SecTag.TCI.E = 1 encrypt the packet as well + sectag_offset: 12 # 12B = sizeof(DA) + sizeof(SA); offset in bytes from either the start of the packet or a matching Etype depending on SecTag_Insertion_Mode + sectag_tci: 0x0B # SCI included, encrypt and auth user data; Tag Control Information excluding the AN field which originates from the SA Policy table; + mtu: 0xFFFF # Specifies the outgoing MTU for this SecY + reserved: [ 0, 0, 0, 0, 0, 0 ] + enable: True + sc: + index: 0x00 # SC index + secYIndex: 0x00 # SecY associated with this packet + sci: 0xAFAFAFAFAFAFFFFF # The Secure Channel Identifier + sa_index0: 0x00 # Define the 1st SA to use + sa_index1: 0x01 # Define the 2nd SA to use + sa_index0_in_use: True # Specifies whether 1st SA is in use or not + sa_index1_in_use: True # Specifies whether 2nd SA is in use or not + enable_auto_rekey: True # If enabled, then once the pn_threshold is reached, auto rekey will happen + isActiveSA1: False # If set, then sa_index1 is the currently active SA index. If cleared, the sa_index0 is the currently active SA index + reserved: [ 0, 0, 0, 0, 0, 0, 0 ] + enable: True + sa0: + index: 0x00 # SA index + sak: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x00 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + sa1: + index: 0x01 # SA index + sak: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x01 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True +rx: + rule: + index: 0 + key_MAC_DA: [ 0x00, 0xFC, 0x70, 0xFF, 0xFF, 0xFF ] # MAC DA field extracted from the packet + mask_MAC_DA: [ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC SA field extracted from the packet + mask_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_Ethertype: 0xFFFF # First E-Type found in the packet that doesn't match one of the preconfigured custom tag + mask_Ethertype: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer1: # outermost/1st VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer1: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_outer2: # 2nd outermost VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer2: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_bonus_data: 0xFFFF # 2 bytes of additional bonus data extracted from one of the custom tags + mask_bonus_data: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_tag_match_bitmap: 0xFF # 8 bits total. Maps 1 to 1 bitwise with the set of custom tags. (set bit[N]=1 if check Nth custom tag) + mask_tag_match_bitmap: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_packet_type: 0 # Encoded Packet Type = NO_VLAN_OR_MPLS; see MRVL_Q222X_MSEC_PACKET_TYPE + mask_packet_type: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_inner_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the second outermost VLAN Tag + mask_inner_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the outermost VLAN Tag + mask_outer_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_num_tags: 0xFF # 7 bits total. Number of VLAN/custom tags or MPLS lables detected. Ingress: before SecTag; Egress: total detected + mask_num_tags: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_express: 0xFF # 1 bits. Express packet + mask_express: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + isMPLS: False + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + map: + index: 0 + sectag_sci: 0xAFAFAFAFAFAFFFFF # Identifies the SecTAG SCI for this Flow + secYIndex: 0x00 # Index for entry in Egress secY Policy + isControlPacket: False # Identifies all packets matching this index lookup as control packets + scIndex: 0x00 # Identifies the SC for this Flow + auxiliary_plcy: False # Auxiliary policy bits + ruleId: 0x00 # Identifies the Rule for this Flow + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + secy: + index: 0x00 # Identifies the SecY for this Flow + controlled_port_enabled: True # Enable (or disable) operation of the Controlled port associated with this SecY + validate_frames: 2 # Validate Frame = STRICT; see MRVL_Q222X_MSEC_VALIDATEFRAME + strip_sectag_icv: 0 # Strip SecTag and ICV; see MRVL_Q222X_MSEC_STRIP_SECTAG_ICV + cipher: 0 # GCM_AES_128 = Cipher suite to use for this SecY; see MRVL_Q222X_MSEC_CIPHER_SUITE + confidential_offset: 0x00 # Define the number of bytes that are unencrypted following the SecTag + icv_includes_da_sa: True # When set, the outer DA/SA bytes are included in the authentication GHASH calculation + replay_protect: True # Enables Anti-Replay protection + replay_window: 0xFFFFFFFF # Unsigned value indicating the size of the anti-replay window + protect_frames: True # 0 = do not encrypt or authenticate this packet; 1 = always Authenticate frame and if SecTag.TCI.E = 1 encrypt the packet as well + sectag_offset: 12 # 12B = sizeof(DA) + sizeof(SA); offset in bytes from either the start of the packet or a matching Etype depending on SecTag_Insertion_Mode + sectag_tci: 0x0B # SCI included, encrypt and auth user data; Tag Control Information excluding the AN field which originates from the SA Policy table; + mtu: 0xFFFF # Specifies the outgoing MTU for this SecY + reserved: [ 0, 0, 0, 0, 0, 0 ] + enable: True + sc: + index: 0x00 # SC index + secYIndex: 0x00 # SecY associated with this packet + sci: 0xAFAFAFAFAFAFFFFF # The Secure Channel Identifier + sa_index0: 0x00 # Define the 1st SA to use + sa_index1: 0x01 # Define the 2nd SA to use + sa_index0_in_use: True # Specifies whether 1st SA is in use or not + sa_index1_in_use: True # Specifies whether 2nd SA is in use or not + enable_auto_rekey: True # If enabled, then once the pn_threshold is reached, auto rekey will happen + isActiveSA1: False # If set, then sa_index1 is the currently active SA index. If cleared, the sa_index0 is the currently active SA index + reserved: [ 0, 0, 0, 0, 0, 0, 0 ] + enable: True + sa0: + index: 0x00 # SA index + sak: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x00 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + sa1: + index: 0x01 # SA index + sak: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x01 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True \ No newline at end of file diff --git a/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_wildcard_SecY_128_strip_strict_sci_SA_sak0.yml b/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_wildcard_SecY_128_strip_strict_sci_SA_sak0.yml new file mode 100644 index 0000000..f00c2e4 --- /dev/null +++ b/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_wildcard_SecY_128_strip_strict_sci_SA_sak0.yml @@ -0,0 +1,269 @@ +--- +############################################################################### +# This is intended to be used as an example yaml for loading a MACsec +# configuration to ICS SFP-MV2221M-B1 module +# +# MACsec configuration: +# tx: +# rule: +# - wildcard / all packets authenticated and encrypted +# map: +# - Map Rule 0 to SecY 0 and SC 0 +# - Use SCI = 0xAFAFAFAFAFAFFFFF +# secy: +# - Cipher = GCM_AES_128 +# - Always Authenticate, Replay Protect, and Encrypt/Decrypt +# - Include the MAC DA and SA in the ICV +# sc: +# - Assign 2 x SA's +# - SA 0 is Active +# - Enable auto rekey +# 2 x sa: +# - Define Keys +# - Assign indices 0,1 +# - Next PN = 1 +# rx: +# rule: +# - wildcard / all packets authenticated, replay protected, and decrypted +# map: +# - Map Rule 0 to SecY 0 and SC 0 +# - Check SCI = 0xAFAFAFAFAFAFFFFF +# secy: +# - Cipher = GCM_AES_128 +# - Drop invalid frames +# - Always Authenticate, Replay Protect, and Decrypt User Data +# - Strip ICV and SecTag from incoming frames +# - Include the MAC DA and SA in the ICV +# sc: +# - Assign 2 x SA's +# - SA 0 is Active +# - Enable auto rekey +# 2 x sa: +# - Define Keys +# - Assign indices 0,1 +# - Next PN = 1 +############################################################################### +tx: + rule: + index: 0 + key_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC DA field extracted from the packet + mask_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC SA field extracted from the packet + mask_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_Ethertype: 0xFFFF # First E-Type found in the packet that doesn't match one of the preconfigured custom tag + mask_Ethertype: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer1: # outermost/1st VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer1: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_outer2: # 2nd outermost VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer2: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_bonus_data: 0xFFFF # 2 bytes of additional bonus data extracted from one of the custom tags + mask_bonus_data: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_tag_match_bitmap: 0xFF # 8 bits total. Maps 1 to 1 bitwise with the set of custom tags. (set bit[N]=1 if check Nth custom tag) + mask_tag_match_bitmap: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_packet_type: 0 # Encoded Packet Type = NO_VLAN_OR_MPLS; see MRVL_Q222X_MSEC_PACKET_TYPE + mask_packet_type: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_inner_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the second outermost VLAN Tag + mask_inner_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the outermost VLAN Tag + mask_outer_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_num_tags: 0xFF # 7 bits total. Number of VLAN/custom tags or MPLS lables detected. Ingress: before SecTag; Egress: total detected + mask_num_tags: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_express: 0xFF # 1 bits. Express packet + mask_express: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + isMPLS: False + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + map: + index: 0 + sectag_sci: 0xAFAFAFAFAFAFFFFF # Identifies the SecTAG SCI for this Flow + secYIndex: 0x00 # Index for entry in Egress secY Policy + isControlPacket: False # Identifies all packets matching this index lookup as control packets + scIndex: 0x00 # Identifies the SC for this Flow + auxiliary_plcy: False # Auxiliary policy bits + ruleId: 0x00 # Identifies the Rule for this Flow + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + secy: + index: 0x00 # Identifies the SecY for this Flow + controlled_port_enabled: True # Enable (or disable) operation of the Controlled port associated with this SecY + validate_frames: 2 # Validate Frame = STRICT; see MRVL_Q222X_MSEC_VALIDATEFRAME + strip_sectag_icv: 0 # Strip SecTag and ICV; see MRVL_Q222X_MSEC_STRIP_SECTAG_ICV + cipher: 0 # GCM_AES_128 = Cipher suite to use for this SecY; see MRVL_Q222X_MSEC_CIPHER_SUITE + confidential_offset: 0x00 # Define the number of bytes that are unencrypted following the SecTag + icv_includes_da_sa: True # When set, the outer DA/SA bytes are included in the authentication GHASH calculation + replay_protect: True # Enables Anti-Replay protection + replay_window: 0xFFFFFFFF # Unsigned value indicating the size of the anti-replay window + protect_frames: True # 0 = do not encrypt or authenticate this packet; 1 = always Authenticate frame and if SecTag.TCI.E = 1 encrypt the packet as well + sectag_offset: 12 # 12B = sizeof(DA) + sizeof(SA); offset in bytes from either the start of the packet or a matching Etype depending on SecTag_Insertion_Mode + sectag_tci: 0x0B # SCI included, encrypt and auth user data; Tag Control Information excluding the AN field which originates from the SA Policy table; + mtu: 0xFFFF # Specifies the outgoing MTU for this SecY + reserved: [ 0, 0, 0, 0, 0, 0 ] + enable: True + sc: + index: 0x00 # SC index + secYIndex: 0x00 # SecY associated with this packet + sci: 0xAFAFAFAFAFAFFFFF # The Secure Channel Identifier + sa_index0: 0x00 # Define the 1st SA to use + sa_index1: 0x01 # Define the 2nd SA to use + sa_index0_in_use: True # Specifies whether 1st SA is in use or not + sa_index1_in_use: True # Specifies whether 2nd SA is in use or not + enable_auto_rekey: True # If enabled, then once the pn_threshold is reached, auto rekey will happen + isActiveSA1: False # If set, then sa_index1 is the currently active SA index. If cleared, the sa_index0 is the currently active SA index + reserved: [ 0, 0, 0, 0, 0, 0, 0 ] + enable: True + sa0: + index: 0x00 # SA index + sak: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x00 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + sa1: + index: 0x01 # SA index + sak: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x01 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True +rx: + rule: + index: 0 + key_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC DA field extracted from the packet + mask_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC SA field extracted from the packet + mask_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_Ethertype: 0xFFFF # First E-Type found in the packet that doesn't match one of the preconfigured custom tag + mask_Ethertype: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer1: # outermost/1st VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer1: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_outer2: # 2nd outermost VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer2: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_bonus_data: 0xFFFF # 2 bytes of additional bonus data extracted from one of the custom tags + mask_bonus_data: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_tag_match_bitmap: 0xFF # 8 bits total. Maps 1 to 1 bitwise with the set of custom tags. (set bit[N]=1 if check Nth custom tag) + mask_tag_match_bitmap: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_packet_type: 0 # Encoded Packet Type = NO_VLAN_OR_MPLS; see MRVL_Q222X_MSEC_PACKET_TYPE + mask_packet_type: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_inner_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the second outermost VLAN Tag + mask_inner_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the outermost VLAN Tag + mask_outer_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_num_tags: 0xFF # 7 bits total. Number of VLAN/custom tags or MPLS lables detected. Ingress: before SecTag; Egress: total detected + mask_num_tags: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_express: 0xFF # 1 bits. Express packet + mask_express: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + isMPLS: False + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + map: + index: 0 + sectag_sci: 0xAFAFAFAFAFAFFFFF # Identifies the SecTAG SCI for this Flow + secYIndex: 0x00 # Index for entry in Egress secY Policy + isControlPacket: False # Identifies all packets matching this index lookup as control packets + scIndex: 0x00 # Identifies the SC for this Flow + auxiliary_plcy: False # Auxiliary policy bits + ruleId: 0x00 # Identifies the Rule for this Flow + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + secy: + index: 0x00 # Identifies the SecY for this Flow + controlled_port_enabled: True # Enable (or disable) operation of the Controlled port associated with this SecY + validate_frames: 2 # Validate Frame = STRICT; see MRVL_Q222X_MSEC_VALIDATEFRAME + strip_sectag_icv: 0 # Strip SecTag and ICV; see MRVL_Q222X_MSEC_STRIP_SECTAG_ICV + cipher: 0 # GCM_AES_128 = Cipher suite to use for this SecY; see MRVL_Q222X_MSEC_CIPHER_SUITE + confidential_offset: 0x00 # Define the number of bytes that are unencrypted following the SecTag + icv_includes_da_sa: True # When set, the outer DA/SA bytes are included in the authentication GHASH calculation + replay_protect: True # Enables Anti-Replay protection + replay_window: 0xFFFFFFFF # Unsigned value indicating the size of the anti-replay window + protect_frames: True # 0 = do not encrypt or authenticate this packet; 1 = always Authenticate frame and if SecTag.TCI.E = 1 encrypt the packet as well + sectag_offset: 12 # 12B = sizeof(DA) + sizeof(SA); offset in bytes from either the start of the packet or a matching Etype depending on SecTag_Insertion_Mode + sectag_tci: 0x0B # SCI included, encrypt and auth user data; Tag Control Information excluding the AN field which originates from the SA Policy table; + mtu: 0xFFFF # Specifies the outgoing MTU for this SecY + reserved: [ 0, 0, 0, 0, 0, 0 ] + enable: True + sc: + index: 0x00 # SC index + secYIndex: 0x00 # SecY associated with this packet + sci: 0xAFAFAFAFAFAFFFFF # The Secure Channel Identifier + sa_index0: 0x00 # Define the 1st SA to use + sa_index1: 0x01 # Define the 2nd SA to use + sa_index0_in_use: True # Specifies whether 1st SA is in use or not + sa_index1_in_use: True # Specifies whether 2nd SA is in use or not + enable_auto_rekey: True # If enabled, then once the pn_threshold is reached, auto rekey will happen + isActiveSA1: False # If set, then sa_index1 is the currently active SA index. If cleared, the sa_index0 is the currently active SA index + reserved: [ 0, 0, 0, 0, 0, 0, 0 ] + enable: True + sa0: + index: 0x00 # SA index + sak: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x00 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + sa1: + index: 0x01 # SA index + sak: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x01 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True \ No newline at end of file diff --git a/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_wildcard_SecY_128_strip_strict_sci_SA_sak1.yml b/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_wildcard_SecY_128_strip_strict_sci_SA_sak1.yml new file mode 100644 index 0000000..6ade747 --- /dev/null +++ b/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_wildcard_SecY_128_strip_strict_sci_SA_sak1.yml @@ -0,0 +1,269 @@ +--- +############################################################################### +# This is intended to be used as an example yaml for loading a MACsec +# configuration to ICS SFP-MV2221M-B1 module +# +# MACsec configuration: +# tx: +# rule: +# - wildcard / all packets authenticated and encrypted +# map: +# - Map Rule 0 to SecY 0 and SC 0 +# - Use SCI = 0xAFAFAFAFAFAFFFFF +# secy: +# - Cipher = GCM_AES_128 +# - Always Authenticate, Replay Protect, and Encrypt/Decrypt +# - Include the MAC DA and SA in the ICV +# sc: +# - Assign 2 x SA's +# - SA 0 is Active +# - Enable auto rekey +# 2 x sa: +# - Define Keys +# - Assign indices 0,1 +# - Next PN = 1 +# rx: +# rule: +# - wildcard / all packets authenticated, replay protected, and decrypted +# map: +# - Map Rule 0 to SecY 0 and SC 0 +# - Check SCI = 0xAFAFAFAFAFAFFFFF +# secy: +# - Cipher = GCM_AES_128 +# - Drop invalid frames +# - Always Authenticate, Replay Protect, and Decrypt User Data +# - Strip ICV and SecTag from incoming frames +# - Include the MAC DA and SA in the ICV +# sc: +# - Assign 2 x SA's +# - SA 0 is Active +# - Enable auto rekey +# 2 x sa: +# - Define Keys +# - Assign indices 0,1 +# - Next PN = 1 +############################################################################### +tx: + rule: + index: 0 + key_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC DA field extracted from the packet + mask_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC SA field extracted from the packet + mask_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_Ethertype: 0xFFFF # First E-Type found in the packet that doesn't match one of the preconfigured custom tag + mask_Ethertype: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer1: # outermost/1st VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer1: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_outer2: # 2nd outermost VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer2: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_bonus_data: 0xFFFF # 2 bytes of additional bonus data extracted from one of the custom tags + mask_bonus_data: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_tag_match_bitmap: 0xFF # 8 bits total. Maps 1 to 1 bitwise with the set of custom tags. (set bit[N]=1 if check Nth custom tag) + mask_tag_match_bitmap: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_packet_type: 0 # Encoded Packet Type = NO_VLAN_OR_MPLS; see MRVL_Q222X_MSEC_PACKET_TYPE + mask_packet_type: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_inner_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the second outermost VLAN Tag + mask_inner_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the outermost VLAN Tag + mask_outer_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_num_tags: 0xFF # 7 bits total. Number of VLAN/custom tags or MPLS lables detected. Ingress: before SecTag; Egress: total detected + mask_num_tags: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_express: 0xFF # 1 bits. Express packet + mask_express: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + isMPLS: False + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + map: + index: 0 + sectag_sci: 0xAFAFAFAFAFAFFFFF # Identifies the SecTAG SCI for this Flow + secYIndex: 0x00 # Index for entry in Egress secY Policy + isControlPacket: False # Identifies all packets matching this index lookup as control packets + scIndex: 0x00 # Identifies the SC for this Flow + auxiliary_plcy: False # Auxiliary policy bits + ruleId: 0x00 # Identifies the Rule for this Flow + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + secy: + index: 0x00 # Identifies the SecY for this Flow + controlled_port_enabled: True # Enable (or disable) operation of the Controlled port associated with this SecY + validate_frames: 2 # Validate Frame = STRICT; see MRVL_Q222X_MSEC_VALIDATEFRAME + strip_sectag_icv: 0 # Strip SecTag and ICV; see MRVL_Q222X_MSEC_STRIP_SECTAG_ICV + cipher: 0 # GCM_AES_128 = Cipher suite to use for this SecY; see MRVL_Q222X_MSEC_CIPHER_SUITE + confidential_offset: 0x00 # Define the number of bytes that are unencrypted following the SecTag + icv_includes_da_sa: True # When set, the outer DA/SA bytes are included in the authentication GHASH calculation + replay_protect: True # Enables Anti-Replay protection + replay_window: 0xFFFFFFFF # Unsigned value indicating the size of the anti-replay window + protect_frames: True # 0 = do not encrypt or authenticate this packet; 1 = always Authenticate frame and if SecTag.TCI.E = 1 encrypt the packet as well + sectag_offset: 12 # 12B = sizeof(DA) + sizeof(SA); offset in bytes from either the start of the packet or a matching Etype depending on SecTag_Insertion_Mode + sectag_tci: 0x0B # SCI included, encrypt and auth user data; Tag Control Information excluding the AN field which originates from the SA Policy table; + mtu: 0xFFFF # Specifies the outgoing MTU for this SecY + reserved: [ 0, 0, 0, 0, 0, 0 ] + enable: True + sc: + index: 0x00 # SC index + secYIndex: 0x00 # SecY associated with this packet + sci: 0xAFAFAFAFAFAFFFFF # The Secure Channel Identifier + sa_index0: 0x00 # Define the 1st SA to use + sa_index1: 0x01 # Define the 2nd SA to use + sa_index0_in_use: True # Specifies whether 1st SA is in use or not + sa_index1_in_use: True # Specifies whether 2nd SA is in use or not + enable_auto_rekey: True # If enabled, then once the pn_threshold is reached, auto rekey will happen + isActiveSA1: False # If set, then sa_index1 is the currently active SA index. If cleared, the sa_index0 is the currently active SA index + reserved: [ 0, 0, 0, 0, 0, 0, 0 ] + enable: True + sa0: + index: 0x00 # SA index + sak: [ 8, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 8 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x00 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + sa1: + index: 0x01 # SA index + sak: [ 9, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 9 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x01 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True +rx: + rule: + index: 0 + key_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC DA field extracted from the packet + mask_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC SA field extracted from the packet + mask_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_Ethertype: 0xFFFF # First E-Type found in the packet that doesn't match one of the preconfigured custom tag + mask_Ethertype: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer1: # outermost/1st VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer1: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_outer2: # 2nd outermost VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer2: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_bonus_data: 0xFFFF # 2 bytes of additional bonus data extracted from one of the custom tags + mask_bonus_data: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_tag_match_bitmap: 0xFF # 8 bits total. Maps 1 to 1 bitwise with the set of custom tags. (set bit[N]=1 if check Nth custom tag) + mask_tag_match_bitmap: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_packet_type: 0 # Encoded Packet Type = NO_VLAN_OR_MPLS; see MRVL_Q222X_MSEC_PACKET_TYPE + mask_packet_type: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_inner_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the second outermost VLAN Tag + mask_inner_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the outermost VLAN Tag + mask_outer_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_num_tags: 0xFF # 7 bits total. Number of VLAN/custom tags or MPLS lables detected. Ingress: before SecTag; Egress: total detected + mask_num_tags: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_express: 0xFF # 1 bits. Express packet + mask_express: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + isMPLS: False + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + map: + index: 0 + sectag_sci: 0xAFAFAFAFAFAFFFFF # Identifies the SecTAG SCI for this Flow + secYIndex: 0x00 # Index for entry in Egress secY Policy + isControlPacket: False # Identifies all packets matching this index lookup as control packets + scIndex: 0x00 # Identifies the SC for this Flow + auxiliary_plcy: False # Auxiliary policy bits + ruleId: 0x00 # Identifies the Rule for this Flow + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + secy: + index: 0x00 # Identifies the SecY for this Flow + controlled_port_enabled: True # Enable (or disable) operation of the Controlled port associated with this SecY + validate_frames: 2 # Validate Frame = STRICT; see MRVL_Q222X_MSEC_VALIDATEFRAME + strip_sectag_icv: 0 # Strip SecTag and ICV; see MRVL_Q222X_MSEC_STRIP_SECTAG_ICV + cipher: 0 # GCM_AES_128 = Cipher suite to use for this SecY; see MRVL_Q222X_MSEC_CIPHER_SUITE + confidential_offset: 0x00 # Define the number of bytes that are unencrypted following the SecTag + icv_includes_da_sa: True # When set, the outer DA/SA bytes are included in the authentication GHASH calculation + replay_protect: True # Enables Anti-Replay protection + replay_window: 0xFFFFFFFF # Unsigned value indicating the size of the anti-replay window + protect_frames: True # 0 = do not encrypt or authenticate this packet; 1 = always Authenticate frame and if SecTag.TCI.E = 1 encrypt the packet as well + sectag_offset: 12 # 12B = sizeof(DA) + sizeof(SA); offset in bytes from either the start of the packet or a matching Etype depending on SecTag_Insertion_Mode + sectag_tci: 0x0B # SCI included, encrypt and auth user data; Tag Control Information excluding the AN field which originates from the SA Policy table; + mtu: 0xFFFF # Specifies the outgoing MTU for this SecY + reserved: [ 0, 0, 0, 0, 0, 0 ] + enable: True + sc: + index: 0x00 # SC index + secYIndex: 0x00 # SecY associated with this packet + sci: 0xAFAFAFAFAFAFFFFF # The Secure Channel Identifier + sa_index0: 0x00 # Define the 1st SA to use + sa_index1: 0x01 # Define the 2nd SA to use + sa_index0_in_use: True # Specifies whether 1st SA is in use or not + sa_index1_in_use: True # Specifies whether 2nd SA is in use or not + enable_auto_rekey: True # If enabled, then once the pn_threshold is reached, auto rekey will happen + isActiveSA1: False # If set, then sa_index1 is the currently active SA index. If cleared, the sa_index0 is the currently active SA index + reserved: [ 0, 0, 0, 0, 0, 0, 0 ] + enable: True + sa0: + index: 0x00 # SA index + sak: [ 8, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 8 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x00 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + sa1: + index: 0x01 # SA index + sak: [ 9, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 9 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x01 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True \ No newline at end of file diff --git a/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_wildcard_SecY_256_strip_noEncrypt_onlyCheck_sci_SA_sak0.yml b/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_wildcard_SecY_256_strip_noEncrypt_onlyCheck_sci_SA_sak0.yml new file mode 100644 index 0000000..6906113 --- /dev/null +++ b/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_wildcard_SecY_256_strip_noEncrypt_onlyCheck_sci_SA_sak0.yml @@ -0,0 +1,269 @@ +--- +############################################################################### +# This is intended to be used as an example yaml for loading a MACsec +# configuration to ICS SFP-MV2221M-B1 module +# +# MACsec configuration: +# tx: +# rule: +# - wildcard / all packets authenticated and encrypted +# map: +# - Map Rule 0 to SecY 0 and SC 0 +# - Use SCI = 0xAFAFAFAFAFAFFFFF +# secy: +# - Cipher = GCM_AES_256 +# - No Encryption, Only Authenticate and Replay Protect +# - Include the MAC DA and SA in the ICV +# sc: +# - Assign 2 x SA's +# - SA 0 is Active +# - Enable auto rekey +# 2 x sa: +# - Define Keys +# - Assign indices 0,1 +# - Next PN = 1 +# rx: +# rule: +# - wildcard / all packets authenticated, replay protected, and decrypted +# map: +# - Map Rule 0 to SecY 0 and SC 0 +# - Check SCI = 0xAFAFAFAFAFAFFFFF +# secy: +# - Cipher = GCM_AES_256 +# - No Decryption, Only Authenticate and Replay Protect +# - Strip ICV and SecTag from incoming frames +# - Include the MAC DA and SA in the ICV\ +# - Non-strict validation +# sc: +# - Assign 2 x SA's +# - SA 0 is Active +# - Enable auto rekey +# 2 x sa: +# - Define Keys +# - Assign indices 0,1 +# - Next PN = 1 +############################################################################### +tx: + rule: + index: 0 + key_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC DA field extracted from the packet + mask_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC SA field extracted from the packet + mask_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_Ethertype: 0xFFFF # First E-Type found in the packet that doesn't match one of the preconfigured custom tag + mask_Ethertype: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer1: # outermost/1st VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer1: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_outer2: # 2nd outermost VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer2: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_bonus_data: 0xFFFF # 2 bytes of additional bonus data extracted from one of the custom tags + mask_bonus_data: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_tag_match_bitmap: 0xFF # 8 bits total. Maps 1 to 1 bitwise with the set of custom tags. (set bit[N]=1 if check Nth custom tag) + mask_tag_match_bitmap: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_packet_type: 0 # Encoded Packet Type = NO_VLAN_OR_MPLS; see MRVL_Q222X_MSEC_PACKET_TYPE + mask_packet_type: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_inner_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the second outermost VLAN Tag + mask_inner_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the outermost VLAN Tag + mask_outer_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_num_tags: 0xFF # 7 bits total. Number of VLAN/custom tags or MPLS lables detected. Ingress: before SecTag; Egress: total detected + mask_num_tags: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_express: 0xFF # 1 bits. Express packet + mask_express: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + isMPLS: False + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + map: + index: 0 + sectag_sci: 0xAFAFAFAFAFAFFFFF # Identifies the SecTAG SCI for this Flow + secYIndex: 0x00 # Index for entry in Egress secY Policy + isControlPacket: False # Identifies all packets matching this index lookup as control packets + scIndex: 0x00 # Identifies the SC for this Flow + auxiliary_plcy: False # Auxiliary policy bits + ruleId: 0x00 # Identifies the Rule for this Flow + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + secy: + index: 0x00 # Identifies the SecY for this Flow + controlled_port_enabled: True # Enable (or disable) operation of the Controlled port associated with this SecY + validate_frames: 1 # Validate Frame = CHECK; see MRVL_Q222X_MSEC_VALIDATEFRAME + strip_sectag_icv: 0 # Strip SecTag and ICV; see MRVL_Q222X_MSEC_STRIP_SECTAG_ICV + cipher: 1 # GCM_AES_256 = Cipher suite to use for this SecY; see MRVL_Q222X_MSEC_CIPHER_SUITE + confidential_offset: 0x00 # Define the number of bytes that are unencrypted following the SecTag + icv_includes_da_sa: True # When set, the outer DA/SA bytes are included in the authentication GHASH calculation + replay_protect: True # Enables Anti-Replay protection + replay_window: 0xFFFFFFFF # Unsigned value indicating the size of the anti-replay window + protect_frames: True # 0 = do not encrypt or authenticate this packet; 1 = always Authenticate frame and if SecTag.TCI.E = 1 encrypt the packet as well + sectag_offset: 12 # 12B = sizeof(DA) + sizeof(SA); offset in bytes from either the start of the packet or a matching Etype depending on SecTag_Insertion_Mode + sectag_tci: 0x08 # SCI included, auth user data; Tag Control Information excluding the AN field which originates from the SA Policy table; + mtu: 0xFFFF # Specifies the outgoing MTU for this SecY + reserved: [ 0, 0, 0, 0, 0, 0 ] + enable: True + sc: + index: 0x00 # SC index + secYIndex: 0x00 # SecY associated with this packet + sci: 0xAFAFAFAFAFAFFFFF # The Secure Channel Identifier + sa_index0: 0x00 # Define the 1st SA to use + sa_index1: 0x01 # Define the 2nd SA to use + sa_index0_in_use: True # Specifies whether 1st SA is in use or not + sa_index1_in_use: True # Specifies whether 2nd SA is in use or not + enable_auto_rekey: True # If enabled, then once the pn_threshold is reached, auto rekey will happen + isActiveSA1: False # If set, then sa_index1 is the currently active SA index. If cleared, the sa_index0 is the currently active SA index + reserved: [ 0, 0, 0, 0, 0, 0, 0 ] + enable: True + sa0: + index: 0x00 # SA index + sak: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x00 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + sa1: + index: 0x01 # SA index + sak: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x01 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True +rx: + rule: + index: 0 + key_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC DA field extracted from the packet + mask_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC SA field extracted from the packet + mask_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_Ethertype: 0xFFFF # First E-Type found in the packet that doesn't match one of the preconfigured custom tag + mask_Ethertype: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer1: # outermost/1st VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer1: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_outer2: # 2nd outermost VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer2: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_bonus_data: 0xFFFF # 2 bytes of additional bonus data extracted from one of the custom tags + mask_bonus_data: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_tag_match_bitmap: 0xFF # 8 bits total. Maps 1 to 1 bitwise with the set of custom tags. (set bit[N]=1 if check Nth custom tag) + mask_tag_match_bitmap: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_packet_type: 0 # Encoded Packet Type = NO_VLAN_OR_MPLS; see MRVL_Q222X_MSEC_PACKET_TYPE + mask_packet_type: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_inner_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the second outermost VLAN Tag + mask_inner_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the outermost VLAN Tag + mask_outer_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_num_tags: 0xFF # 7 bits total. Number of VLAN/custom tags or MPLS lables detected. Ingress: before SecTag; Egress: total detected + mask_num_tags: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_express: 0xFF # 1 bits. Express packet + mask_express: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + isMPLS: False + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + map: + index: 0 + sectag_sci: 0xAFAFAFAFAFAFFFFF # Identifies the SecTAG SCI for this Flow + secYIndex: 0x00 # Index for entry in Egress secY Policy + isControlPacket: False # Identifies all packets matching this index lookup as control packets + scIndex: 0x00 # Identifies the SC for this Flow + auxiliary_plcy: False # Auxiliary policy bits + ruleId: 0x00 # Identifies the Rule for this Flow + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + secy: + index: 0x00 # Identifies the SecY for this Flow + controlled_port_enabled: True # Enable (or disable) operation of the Controlled port associated with this SecY + validate_frames: 1 # Validate Frame = CHECK; see MRVL_Q222X_MSEC_VALIDATEFRAME + strip_sectag_icv: 0 # Strip SecTag and ICV; see MRVL_Q222X_MSEC_STRIP_SECTAG_ICV + cipher: 1 # GCM_AES_256 = Cipher suite to use for this SecY; see MRVL_Q222X_MSEC_CIPHER_SUITE + confidential_offset: 0x00 # Define the number of bytes that are unencrypted following the SecTag + icv_includes_da_sa: True # When set, the outer DA/SA bytes are included in the authentication GHASH calculation + replay_protect: True # Enables Anti-Replay protection + replay_window: 0xFFFFFFFF # Unsigned value indicating the size of the anti-replay window + protect_frames: True # 0 = do not encrypt or authenticate this packet; 1 = always Authenticate frame and if SecTag.TCI.E = 1 encrypt the packet as well + sectag_offset: 12 # 12B = sizeof(DA) + sizeof(SA); offset in bytes from either the start of the packet or a matching Etype depending on SecTag_Insertion_Mode + sectag_tci: 0x08 # SCI included, auth user data; Tag Control Information excluding the AN field which originates from the SA Policy table; + mtu: 0xFFFF # Specifies the outgoing MTU for this SecY + reserved: [ 0, 0, 0, 0, 0, 0 ] + enable: True + sc: + index: 0x00 # SC index + secYIndex: 0x00 # SecY associated with this packet + sci: 0xAFAFAFAFAFAFFFFF # The Secure Channel Identifier + sa_index0: 0x00 # Define the 1st SA to use + sa_index1: 0x01 # Define the 2nd SA to use + sa_index0_in_use: True # Specifies whether 1st SA is in use or not + sa_index1_in_use: True # Specifies whether 2nd SA is in use or not + enable_auto_rekey: True # If enabled, then once the pn_threshold is reached, auto rekey will happen + isActiveSA1: False # If set, then sa_index1 is the currently active SA index. If cleared, the sa_index0 is the currently active SA index + reserved: [ 0, 0, 0, 0, 0, 0, 0 ] + enable: True + sa0: + index: 0x00 # SA index + sak: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x00 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + sa1: + index: 0x01 # SA index + sak: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x01 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True \ No newline at end of file diff --git a/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_wildcard_SecY_256_strip_noEncrypt_onlyCheck_sci_SA_sak1.yml b/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_wildcard_SecY_256_strip_noEncrypt_onlyCheck_sci_SA_sak1.yml new file mode 100644 index 0000000..fa747e1 --- /dev/null +++ b/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_wildcard_SecY_256_strip_noEncrypt_onlyCheck_sci_SA_sak1.yml @@ -0,0 +1,269 @@ +--- +############################################################################### +# This is intended to be used as an example yaml for loading a MACsec +# configuration to ICS SFP-MV2221M-B1 module +# +# MACsec configuration: +# tx: +# rule: +# - wildcard / all packets authenticated and encrypted +# map: +# - Map Rule 0 to SecY 0 and SC 0 +# - Use SCI = 0xAFAFAFAFAFAFFFFF +# secy: +# - Cipher = GCM_AES_256 +# - No Encryption, Only Authenticate and Replay Protect +# - Include the MAC DA and SA in the ICV +# sc: +# - Assign 2 x SA's +# - SA 0 is Active +# - Enable auto rekey +# 2 x sa: +# - Define Keys +# - Assign indices 0,1 +# - Next PN = 1 +# rx: +# rule: +# - wildcard / all packets authenticated, replay protected, and decrypted +# map: +# - Map Rule 0 to SecY 0 and SC 0 +# - Check SCI = 0xAFAFAFAFAFAFFFFF +# secy: +# - Cipher = GCM_AES_256 +# - No Decryption, Only Authenticate and Replay Protect +# - Strip ICV and SecTag from incoming frames +# - Include the MAC DA and SA in the ICV\ +# - Non-strict validation +# sc: +# - Assign 2 x SA's +# - SA 0 is Active +# - Enable auto rekey +# 2 x sa: +# - Define Keys +# - Assign indices 0,1 +# - Next PN = 1 +############################################################################### +tx: + rule: + index: 0 + key_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC DA field extracted from the packet + mask_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC SA field extracted from the packet + mask_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_Ethertype: 0xFFFF # First E-Type found in the packet that doesn't match one of the preconfigured custom tag + mask_Ethertype: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer1: # outermost/1st VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer1: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_outer2: # 2nd outermost VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer2: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_bonus_data: 0xFFFF # 2 bytes of additional bonus data extracted from one of the custom tags + mask_bonus_data: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_tag_match_bitmap: 0xFF # 8 bits total. Maps 1 to 1 bitwise with the set of custom tags. (set bit[N]=1 if check Nth custom tag) + mask_tag_match_bitmap: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_packet_type: 0 # Encoded Packet Type = NO_VLAN_OR_MPLS; see MRVL_Q222X_MSEC_PACKET_TYPE + mask_packet_type: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_inner_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the second outermost VLAN Tag + mask_inner_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the outermost VLAN Tag + mask_outer_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_num_tags: 0xFF # 7 bits total. Number of VLAN/custom tags or MPLS lables detected. Ingress: before SecTag; Egress: total detected + mask_num_tags: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_express: 0xFF # 1 bits. Express packet + mask_express: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + isMPLS: False + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + map: + index: 0 + sectag_sci: 0xAFAFAFAFAFAFFFFF # Identifies the SecTAG SCI for this Flow + secYIndex: 0x00 # Index for entry in Egress secY Policy + isControlPacket: False # Identifies all packets matching this index lookup as control packets + scIndex: 0x00 # Identifies the SC for this Flow + auxiliary_plcy: False # Auxiliary policy bits + ruleId: 0x00 # Identifies the Rule for this Flow + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + secy: + index: 0x00 # Identifies the SecY for this Flow + controlled_port_enabled: True # Enable (or disable) operation of the Controlled port associated with this SecY + validate_frames: 1 # Validate Frame = CHECK; see MRVL_Q222X_MSEC_VALIDATEFRAME + strip_sectag_icv: 0 # Strip SecTag and ICV; see MRVL_Q222X_MSEC_STRIP_SECTAG_ICV + cipher: 1 # GCM_AES_256 = Cipher suite to use for this SecY; see MRVL_Q222X_MSEC_CIPHER_SUITE + confidential_offset: 0x00 # Define the number of bytes that are unencrypted following the SecTag + icv_includes_da_sa: True # When set, the outer DA/SA bytes are included in the authentication GHASH calculation + replay_protect: True # Enables Anti-Replay protection + replay_window: 0xFFFFFFFF # Unsigned value indicating the size of the anti-replay window + protect_frames: True # 0 = do not encrypt or authenticate this packet; 1 = always Authenticate frame and if SecTag.TCI.E = 1 encrypt the packet as well + sectag_offset: 12 # 12B = sizeof(DA) + sizeof(SA); offset in bytes from either the start of the packet or a matching Etype depending on SecTag_Insertion_Mode + sectag_tci: 0x08 # SCI included, auth user data; Tag Control Information excluding the AN field which originates from the SA Policy table; + mtu: 0xFFFF # Specifies the outgoing MTU for this SecY + reserved: [ 0, 0, 0, 0, 0, 0 ] + enable: True + sc: + index: 0x00 # SC index + secYIndex: 0x00 # SecY associated with this packet + sci: 0xAFAFAFAFAFAFFFFF # The Secure Channel Identifier + sa_index0: 0x00 # Define the 1st SA to use + sa_index1: 0x01 # Define the 2nd SA to use + sa_index0_in_use: True # Specifies whether 1st SA is in use or not + sa_index1_in_use: True # Specifies whether 2nd SA is in use or not + enable_auto_rekey: True # If enabled, then once the pn_threshold is reached, auto rekey will happen + isActiveSA1: False # If set, then sa_index1 is the currently active SA index. If cleared, the sa_index0 is the currently active SA index + reserved: [ 0, 0, 0, 0, 0, 0, 0 ] + enable: True + sa0: + index: 0x00 # SA index + sak: [ 8, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 8 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 8, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 8 ] # 128b Hash Key: Key used for authentication + salt: [ 8, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 8 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x00 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + sa1: + index: 0x01 # SA index + sak: [ 8, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 8 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 8, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 8 ] # 128b Hash Key: Key used for authentication + salt: [ 8, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 8 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x01 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True +rx: + rule: + index: 0 + key_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC DA field extracted from the packet + mask_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC SA field extracted from the packet + mask_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_Ethertype: 0xFFFF # First E-Type found in the packet that doesn't match one of the preconfigured custom tag + mask_Ethertype: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer1: # outermost/1st VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer1: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_outer2: # 2nd outermost VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer2: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_bonus_data: 0xFFFF # 2 bytes of additional bonus data extracted from one of the custom tags + mask_bonus_data: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_tag_match_bitmap: 0xFF # 8 bits total. Maps 1 to 1 bitwise with the set of custom tags. (set bit[N]=1 if check Nth custom tag) + mask_tag_match_bitmap: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_packet_type: 0 # Encoded Packet Type = NO_VLAN_OR_MPLS; see MRVL_Q222X_MSEC_PACKET_TYPE + mask_packet_type: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_inner_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the second outermost VLAN Tag + mask_inner_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the outermost VLAN Tag + mask_outer_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_num_tags: 0xFF # 7 bits total. Number of VLAN/custom tags or MPLS lables detected. Ingress: before SecTag; Egress: total detected + mask_num_tags: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_express: 0xFF # 1 bits. Express packet + mask_express: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + isMPLS: False + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + map: + index: 0 + sectag_sci: 0xAFAFAFAFAFAFFFFF # Identifies the SecTAG SCI for this Flow + secYIndex: 0x00 # Index for entry in Egress secY Policy + isControlPacket: False # Identifies all packets matching this index lookup as control packets + scIndex: 0x00 # Identifies the SC for this Flow + auxiliary_plcy: False # Auxiliary policy bits + ruleId: 0x00 # Identifies the Rule for this Flow + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + secy: + index: 0x00 # Identifies the SecY for this Flow + controlled_port_enabled: True # Enable (or disable) operation of the Controlled port associated with this SecY + validate_frames: 1 # Validate Frame = CHECK; see MRVL_Q222X_MSEC_VALIDATEFRAME + strip_sectag_icv: 0 # Strip SecTag and ICV; see MRVL_Q222X_MSEC_STRIP_SECTAG_ICV + cipher: 1 # GCM_AES_256 = Cipher suite to use for this SecY; see MRVL_Q222X_MSEC_CIPHER_SUITE + confidential_offset: 0x00 # Define the number of bytes that are unencrypted following the SecTag + icv_includes_da_sa: True # When set, the outer DA/SA bytes are included in the authentication GHASH calculation + replay_protect: True # Enables Anti-Replay protection + replay_window: 0xFFFFFFFF # Unsigned value indicating the size of the anti-replay window + protect_frames: True # 0 = do not encrypt or authenticate this packet; 1 = always Authenticate frame and if SecTag.TCI.E = 1 encrypt the packet as well + sectag_offset: 12 # 12B = sizeof(DA) + sizeof(SA); offset in bytes from either the start of the packet or a matching Etype depending on SecTag_Insertion_Mode + sectag_tci: 0x08 # SCI included, auth user data; Tag Control Information excluding the AN field which originates from the SA Policy table; + mtu: 0xFFFF # Specifies the outgoing MTU for this SecY + reserved: [ 0, 0, 0, 0, 0, 0 ] + enable: True + sc: + index: 0x00 # SC index + secYIndex: 0x00 # SecY associated with this packet + sci: 0xAFAFAFAFAFAFFFFF # The Secure Channel Identifier + sa_index0: 0x00 # Define the 1st SA to use + sa_index1: 0x01 # Define the 2nd SA to use + sa_index0_in_use: True # Specifies whether 1st SA is in use or not + sa_index1_in_use: True # Specifies whether 2nd SA is in use or not + enable_auto_rekey: True # If enabled, then once the pn_threshold is reached, auto rekey will happen + isActiveSA1: False # If set, then sa_index1 is the currently active SA index. If cleared, the sa_index0 is the currently active SA index + reserved: [ 0, 0, 0, 0, 0, 0, 0 ] + enable: True + sa0: + index: 0x00 # SA index + sak: [ 8, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 8 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 8, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 8 ] # 128b Hash Key: Key used for authentication + salt: [ 8, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 8 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x00 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + sa1: + index: 0x01 # SA index + sak: [ 8, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 8 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 8, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 8 ] # 128b Hash Key: Key used for authentication + salt: [ 8, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 8 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x01 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True \ No newline at end of file diff --git a/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_wildcard_SecY_256_strip_strict_sci_SA_sak0.yml b/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_wildcard_SecY_256_strip_strict_sci_SA_sak0.yml new file mode 100644 index 0000000..5711392 --- /dev/null +++ b/MACsec_Utilitie/yaml/test_sfp_macsec_Rule_wildcard_SecY_256_strip_strict_sci_SA_sak0.yml @@ -0,0 +1,269 @@ +--- +############################################################################### +# This is intended to be used as an example yaml for loading a MACsec +# configuration to ICS SFP-MV2221M-B1 module +# +# MACsec configuration: +# tx: +# rule: +# - wildcard / all packets authenticated and encrypted +# map: +# - Map Rule 0 to SecY 0 and SC 0 +# - Use SCI = 0xAFAFAFAFAFAFFFFF +# secy: +# - Cipher = GCM_AES_256 +# - Always Authenticate, Replay Protect, and Encrypt/Decrypt +# - Include the MAC DA and SA in the ICV +# sc: +# - Assign 2 x SA's +# - SA 0 is Active +# - Enable auto rekey +# 2 x sa: +# - Define Keys +# - Assign indices 0,1 +# - Next PN = 1 +# rx: +# rule: +# - wildcard / all packets authenticated, replay protected, and decrypted +# map: +# - Map Rule 0 to SecY 0 and SC 0 +# - Check SCI = 0xAFAFAFAFAFAFFFFF +# secy: +# - Cipher = GCM_AES_256 +# - Drop invalid frames +# - Always Authenticate, Replay Protect, and Decrypt User Data +# - Strip ICV and SecTag from incoming frames +# - Include the MAC DA and SA in the ICV +# sc: +# - Assign 2 x SA's +# - SA 0 is Active +# - Enable auto rekey +# 2 x sa: +# - Define Keys +# - Assign indices 0,1 +# - Next PN = 1 +############################################################################### +tx: + rule: + index: 0 + key_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC DA field extracted from the packet + mask_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC SA field extracted from the packet + mask_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_Ethertype: 0xFFFF # First E-Type found in the packet that doesn't match one of the preconfigured custom tag + mask_Ethertype: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer1: # outermost/1st VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer1: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_outer2: # 2nd outermost VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer2: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_bonus_data: 0xFFFF # 2 bytes of additional bonus data extracted from one of the custom tags + mask_bonus_data: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_tag_match_bitmap: 0xFF # 8 bits total. Maps 1 to 1 bitwise with the set of custom tags. (set bit[N]=1 if check Nth custom tag) + mask_tag_match_bitmap: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_packet_type: 0 # Encoded Packet Type = NO_VLAN_OR_MPLS; see MRVL_Q222X_MSEC_PACKET_TYPE + mask_packet_type: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_inner_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the second outermost VLAN Tag + mask_inner_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the outermost VLAN Tag + mask_outer_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_num_tags: 0xFF # 7 bits total. Number of VLAN/custom tags or MPLS lables detected. Ingress: before SecTag; Egress: total detected + mask_num_tags: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_express: 0xFF # 1 bits. Express packet + mask_express: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + isMPLS: False + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + map: + index: 0 + sectag_sci: 0xAFAFAFAFAFAFFFFF # Identifies the SecTAG SCI for this Flow + secYIndex: 0x00 # Index for entry in Egress secY Policy + isControlPacket: False # Identifies all packets matching this index lookup as control packets + scIndex: 0x00 # Identifies the SC for this Flow + auxiliary_plcy: False # Auxiliary policy bits + ruleId: 0x00 # Identifies the Rule for this Flow + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + secy: + index: 0x00 # Identifies the SecY for this Flow + controlled_port_enabled: True # Enable (or disable) operation of the Controlled port associated with this SecY + validate_frames: 2 # Validate Frame = STRICT; see MRVL_Q222X_MSEC_VALIDATEFRAME + strip_sectag_icv: 0 # Strip SecTag and ICV; see MRVL_Q222X_MSEC_STRIP_SECTAG_ICV + cipher: 1 # GCM_AES_256 = Cipher suite to use for this SecY; see MRVL_Q222X_MSEC_CIPHER_SUITE + confidential_offset: 0x00 # Define the number of bytes that are unencrypted following the SecTag + icv_includes_da_sa: True # When set, the outer DA/SA bytes are included in the authentication GHASH calculation + replay_protect: True # Enables Anti-Replay protection + replay_window: 0xFFFFFFFF # Unsigned value indicating the size of the anti-replay window + protect_frames: True # 0 = do not encrypt or authenticate this packet; 1 = always Authenticate frame and if SecTag.TCI.E = 1 encrypt the packet as well + sectag_offset: 12 # 12B = sizeof(DA) + sizeof(SA); offset in bytes from either the start of the packet or a matching Etype depending on SecTag_Insertion_Mode + sectag_tci: 0x0B # SCI included, encrypt and auth user data; Tag Control Information excluding the AN field which originates from the SA Policy table; + mtu: 0xFFFF # Specifies the outgoing MTU for this SecY + reserved: [ 0, 0, 0, 0, 0, 0 ] + enable: True + sc: + index: 0x00 # SC index + secYIndex: 0x00 # SecY associated with this packet + sci: 0xAFAFAFAFAFAFFFFF # The Secure Channel Identifier + sa_index0: 0x00 # Define the 1st SA to use + sa_index1: 0x01 # Define the 2nd SA to use + sa_index0_in_use: True # Specifies whether 1st SA is in use or not + sa_index1_in_use: True # Specifies whether 2nd SA is in use or not + enable_auto_rekey: True # If enabled, then once the pn_threshold is reached, auto rekey will happen + isActiveSA1: False # If set, then sa_index1 is the currently active SA index. If cleared, the sa_index0 is the currently active SA index + reserved: [ 0, 0, 0, 0, 0, 0, 0 ] + enable: True + sa0: + index: 0x00 # SA index + sak: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x00 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + sa1: + index: 0x01 # SA index + sak: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x01 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True +rx: + rule: + index: 0 + key_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC DA field extracted from the packet + mask_MAC_DA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # MAC SA field extracted from the packet + mask_MAC_SA: [ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ] # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_Ethertype: 0xFFFF # First E-Type found in the packet that doesn't match one of the preconfigured custom tag + mask_Ethertype: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer1: # outermost/1st VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer1: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_outer2: # 2nd outermost VLAN ID {8'd0, VLAN_ID[11:0]}, or 20-bit MPLS label + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + mask_outer2: # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + vlanTag: + VID: 0xFFFF + PRI_CFI: 0xFF + mpls: + MPLS_label: 0xFFFFFFFF + exp: 0xFF + key_bonus_data: 0xFFFF # 2 bytes of additional bonus data extracted from one of the custom tags + mask_bonus_data: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_tag_match_bitmap: 0xFF # 8 bits total. Maps 1 to 1 bitwise with the set of custom tags. (set bit[N]=1 if check Nth custom tag) + mask_tag_match_bitmap: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_packet_type: 0 # Encoded Packet Type = NO_VLAN_OR_MPLS; see MRVL_Q222X_MSEC_PACKET_TYPE + mask_packet_type: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_inner_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the second outermost VLAN Tag + mask_inner_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_outer_vlan_type: 0xFFFF # 3 bits total. Encoded value indicating which VLAN TPID value matched for the outermost VLAN Tag + mask_outer_vlan_type: 0xFFFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_num_tags: 0xFF # 7 bits total. Number of VLAN/custom tags or MPLS lables detected. Ingress: before SecTag; Egress: total detected + mask_num_tags: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + key_express: 0xFF # 1 bits. Express packet + mask_express: 0xFF # Set bits to 1 to mask/exclude corresponding flowid_tcam_data bit from compare + isMPLS: False + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + map: + index: 0 + sectag_sci: 0xAFAFAFAFAFAFFFFF # Identifies the SecTAG SCI for this Flow + secYIndex: 0x00 # Index for entry in Egress secY Policy + isControlPacket: False # Identifies all packets matching this index lookup as control packets + scIndex: 0x00 # Identifies the SC for this Flow + auxiliary_plcy: False # Auxiliary policy bits + ruleId: 0x00 # Identifies the Rule for this Flow + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + secy: + index: 0x00 # Identifies the SecY for this Flow + controlled_port_enabled: True # Enable (or disable) operation of the Controlled port associated with this SecY + validate_frames: 2 # Validate Frame = STRICT; see MRVL_Q222X_MSEC_VALIDATEFRAME + strip_sectag_icv: 0 # Strip SecTag and ICV; see MRVL_Q222X_MSEC_STRIP_SECTAG_ICV + cipher: 1 # GCM_AES_256 = Cipher suite to use for this SecY; see MRVL_Q222X_MSEC_CIPHER_SUITE + confidential_offset: 0x00 # Define the number of bytes that are unencrypted following the SecTag + icv_includes_da_sa: True # When set, the outer DA/SA bytes are included in the authentication GHASH calculation + replay_protect: True # Enables Anti-Replay protection + replay_window: 0xFFFFFFFF # Unsigned value indicating the size of the anti-replay window + protect_frames: True # 0 = do not encrypt or authenticate this packet; 1 = always Authenticate frame and if SecTag.TCI.E = 1 encrypt the packet as well + sectag_offset: 12 # 12B = sizeof(DA) + sizeof(SA); offset in bytes from either the start of the packet or a matching Etype depending on SecTag_Insertion_Mode + sectag_tci: 0x0B # SCI included, encrypt and auth user data; Tag Control Information excluding the AN field which originates from the SA Policy table; + mtu: 0xFFFF # Specifies the outgoing MTU for this SecY + reserved: [ 0, 0, 0, 0, 0, 0 ] + enable: True + sc: + index: 0x00 # SC index + secYIndex: 0x00 # SecY associated with this packet + sci: 0xAFAFAFAFAFAFFFFF # The Secure Channel Identifier + sa_index0: 0x00 # Define the 1st SA to use + sa_index1: 0x01 # Define the 2nd SA to use + sa_index0_in_use: True # Specifies whether 1st SA is in use or not + sa_index1_in_use: True # Specifies whether 2nd SA is in use or not + enable_auto_rekey: True # If enabled, then once the pn_threshold is reached, auto rekey will happen + isActiveSA1: False # If set, then sa_index1 is the currently active SA index. If cleared, the sa_index0 is the currently active SA index + reserved: [ 0, 0, 0, 0, 0, 0, 0 ] + enable: True + sa0: + index: 0x00 # SA index + sak: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x00 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True + sa1: + index: 0x01 # SA index + sak: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0 ] # 256b SAK: Define the encryption key to be used to encrypte this packet. The lower 128 bits are used for 128-bit ciphers + hashKey: [ 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0 ] # 128b Hash Key: Key used for authentication + salt: [ 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0 ] # 96b Salt value: Salt value used in XPN ciphers + ssci: 0xFFFFFFFF # 32b SSCI value: Short Secure Channel Identifier, used in XPN ciphers + AN: 0x01 # 2b SecTag Association Number (AN) + nextPN: 0x0000000000000001 # 64b next_pn value: Next packet number to insert into outgoing packet on a particular SA + reserved: [ 0, 0, 0, 0, 0 ] + enable: True \ No newline at end of file diff --git a/ReadMe.md b/ReadMe.md new file mode 100644 index 0000000..a008079 --- /dev/null +++ b/ReadMe.md @@ -0,0 +1,34 @@ +# MACsec and TC10 demo +## Show case +The demo should show: +1. MACsec secured datastream - only one Module is MACsec configured, modules might be swapped for showcasing +2. TC10 controlled SFP plugs + +Needed equipment: +* GigaStar +* 2 SFP: MV2221M 1000-Base-T1 modules, enabled for TC10/MACsec +## 1. Preparation +* If SFP module MV2221M 1000-Base-T1 is not yet flashed to support MACsec,\ +[RGS_ICS_SFP_FLASHER_REV1_4.vs3](.\SFP_Flasher\v1.4\RGS_ICS_SFP_FLASHER_REV1_4.vs3) is needed to flash the module. +Take care that also the binary [sfp_mv2221m_b1_mchip.msgbin](.\SFP_Flasher\v1.4\sfp_mv2221m_b1_mchip.msgbin) is available. +* To download a MACsec configuration, actually you will need a small python script you find in the [MACsec_Utilities folder](.\MACsec_Utilitie) (see **2.**)\ +In this case you might have to install [python](https://www.python.org/downloads/) onto the PC\ +Also you will need python_ics ``` pip instal python_ics ``` and ``` pip install pyyaml ``` + + +## 2. Downloading MACsec configuration to SFP module +If the SFP module is ready for MACsec en- and decryption, you can download one of the [Example YAML-Files](.\MACsec_Utilitie\yaml)\ +e.g.\ +programming SFP01 of device GS0728: +python test_sfp_macsec_util.py GS0728 --sfp --config_netid NETID_I2C2 --yaml test_sfp_macsec_Rule_wildcard_SecY_256_strip_noEncrypt_onlyCheck_sci_SA_sak0.yml\ +programming SFP02 of device GS0728: python test_sfp_macsec_util.py GS0728 --sfp --config_netid NETID_I2C3 --yaml test_sfp_macsec_Rule_wildcard_SecY_256_strip_noEncrypt_onlyCheck_sci_SA_sak0.yml\ +clearing SFP02 of device GS0728: python test_sfp_macsec_util.py GS0728 --sfp --config_netid NETID_I2C3 --yaml test_sfp_macsec_Rule_wildcard_SecY_256_strip_noEncrypt_onlyCheck_sci_SA_sak0.yml --reset\ +or just\ +python test_sfp_macsec_util.py GS0728 --sfp --config_netid NETID_I2C3 --reset\ +\ +There are four example batch-files available to set and reset SFP01 and SFP02 modules. Device SN has to be adjusted. + +## 3. Demosetup TC10_MACsec Demo.vs3 +![Description](./resources/TX_RX_MV2221M_setup.jpg)\ +![Graphical panel](./resources/TC10_MACse_Demo_GP.jpg) +If SFP modules are swapped direction of encryption will change \ No newline at end of file diff --git a/SFP_Flasher/v1.4/README.md b/SFP_Flasher/v1.4/README.md new file mode 100644 index 0000000..9d6cfe6 --- /dev/null +++ b/SFP_Flasher/v1.4/README.md @@ -0,0 +1,75 @@ +@mainpage README.md + +# ICS SFP RESOURCES RELEASE NOTES +> Copyright (c) 2023 Intrepid Control Systems, Inc. + + +--- + +## General Information + +### ICS SFP Resources include latest Release firmware and VSpy .vs3 files for module interfacing, and includes the following: +- sfp_mv2221m_b1_mchip.msgbin + - Latest Release Firmware for SFP-MV2221M module +- sfp_mv2112_a2_mchip.msgbin + - Latest Release Firmware for SFP-MV2112 module +- RGS_ICS_SFP_FLASHER_REV1_4.vs3 + - VSpy .vs3 for flashing ICS SFP module firmware +- ICS_SFP_MV2221M_TC10.vs3 + - VSpy .vs3 for interfacing examples with ICS SFP modules via I2C +- /MACsec/ + - Python src files for loading a MACsec configuration to the device + +### Instructions: +- ICS SFP Firmware Flashing: + - Copy "sfp_mv2221m_b1_mchip.msgbin" and "sfp_mv2112_a2_mchip.msgbin" to directory "\Data Directory\Default" + - Run VSpy + - Load "RGS_ICS_SFP_FLASHER_REV1_4.vs3" + - Go online with RADGigastar + - Make sure an SFP module is plugged into a RADGigastar SFP port + - Click the "Flash Firmware" button on the displayed Graphical Panel + - Wait for indicater "Flashing Completed" + - Limitations: + - This .vs3 only supports flashing 1 SFP port at a time (RADGigastar SFP1 port is prioritized) + - May need to plug cycle the device after successful flashing for the RADgigastar to detect the module +- ICS SFP module interfacing examples: + - Run VSpy + - Load "ICS_SFP_MV2221M_TC10.vs3" + - Go online with RADGigastar + - Make sure an ICS SFP module is plugged into a RADGigstar SFP port + - Transmit I2C messages for Read/Write examples + - NOTES + - I2C2 messages correlate with SFP1 port on the RADgigastar + - I2C3 messages correlate with SFP2 port on the RADgigastar + - All TC10 example messages are only supported on the SFP-MV2221M module (PHY limitation) +- MACsec + - See "/MACsec/README.md" +--- + +## Version History +- (11/27/2023) + - Added "MACsec" folder with python src files for loading a MACsec configuration to the device + - /yaml/ folder containing 8 MACsec configurations + - test_sfp_macsec_util.py + - util_eth.py + - util_sfp.py + - util.py + - README.md +- (9/5/2023) + - Fix ICS SFP flasher textbox and led indicaters: + - RGS_ICS_SFP_FLASHER_REV1_4.vs3 +- (9/5/2023) + - Fix ICS SFP flasher binary size errors: + - RGS_ICS_SFP_FLASHER_REV1_3.vs3 +- (8/9/2023) + - Update Release firwmare: + - sfp_mv2221m_b1_mchip.msgbin + - sfp_mv2112_a2_mchip.msgbin +- (6/29/2023) + - First draft of the following files: + - sfp_mv2221m_b1_mchip.msgbin + - sfp_mv2112_a2_mchip.msgbin + - ICS_SFP_FLASHER.vs3 + - ICS_SFP_MV2221M_TC10.vs3 + +--- diff --git a/SFP_Flasher/v1.4/RGS_ICS_SFP_FLASHER_REV1_4.vs3 b/SFP_Flasher/v1.4/RGS_ICS_SFP_FLASHER_REV1_4.vs3 new file mode 100644 index 0000000..a5ff707 --- /dev/null +++ b/SFP_Flasher/v1.4/RGS_ICS_SFP_FLASHER_REV1_4.vs3 @@ -0,0 +1,8687 @@ + + + +3.9.13.18 +2c16da1238 +False +3 +False + +0 +False +5 +0 +True +False +8000 +False +False +False +34 +10 +14 +0 + + 0 + 0 + 0 + 0 + 8000 + 100 + 0 + True + True + False + + + 64 + 128 + + + net0 + CAN Terminal LogFile + + + + 0 + + + + + 0 + + + 1 + + + 2 + + + 3 + + + 4 + + + 5 + + + 6 + + + 7 + + + 8 + + + 9 + + + 10 + + + 11 + + + 12 + + + 13 + + + 14 + + + 15 + + + 16 + + + 17 + + + + + sfp flasher on vspy + 0 + C:\IntrepidCS\Vehicle Spy 3\Data Directory\Default\sfp-flasher\sfp-flasher.vcxproj + C:\IntrepidCS\Vehicle Spy 3\Data Directory\Default\sfp-flasher\sfp-flasher.DLL + False + True + C:\IntrepidCS\Vehicle Spy 3\ISM + C:\IntrepidCS\Vehicle Spy 3\ISM\ISM\Build_Tools\ISM_Builder\ISMBuilder.exe + C:\IntrepidCS\Vehicle Spy 3\ISM\Build_Tools\ARM_GCC_Toolchain + C:\IntrepidCS\Vehicle Spy 3\ISM\Build_Tools\MinGW\bin\mingw32-make.exe + + + + + NotifMessage + sig3 + 4 + B1 Length: (all remaining) ~0,1|0,-1 + 0 + 0 + Flasher idle + True + + + greenLED + sig4 + 2 + bit7({B1}) + True/False + 1 + True + 1 + + + redLED + sig5 + 2 + bit7({B1}) + True/False + 0 + True + 1 + + + Index + sig7 + 1 + 0 + 0 + 0 + 0 + True + True + + + Length + sig8 + 1 + 0 + 0 + 32 + 32 + True + 32 + True + + + File Size + sig10 + 1 + XXXX hex + 0 + 0 + 0 + 32 + 0 + True + True + + + MaxLen + sig11 + 1 + 0 + 0 + 128 + True + + + IEF_BLOCK_SIZE + sig12 + 1 + 0 + 0 + 2048 + True + + + ief_block_index + sig13 + 1 + 0 + 0 + 27 + True + + + MaxLen_index + sig14 + 1 + 0 + 0 + 11 + True + + + ChunkSize + sig15 + 1 + 0 + 0 + 443136 + True + + + EndOfBin + sig16 + 1 + 0 + 0 + 0 + True + + + ErrorNotifMessage + sig17 + 4 + B1 Length: (all remaining) ~0,1|0,-1 + 0 + 0 + ICS SFP-MV2221M module found on SFP1 port... + True + + + MDIO_BRIDGE_ADDR + sig18 + 1 + 0 + 0 + 64 + True + + + FwMajor + sig19 + 1 + 0 + 0 + 0 + True + + + FwMinor + sig20 + 1 + 0 + 0 + 0 + True + + + + + dq0 + DAQ 1 + True + + + 1 + Collection 1 + True + + 107 + 0 + 0 + 3 + + False + 10 + icsSpyLogFile + icsSpyLogFile + + 0 + + icsSpyLogFile + True + + + 1 + True + + 60 + + + + DAQ 1 + True + True + 10 + DAQ 1 Log File + DAQ 1 Log File + + + DAQ 1 Log File + True + + + + + + + True + 50000 + True + True + 17 + 8 + Courier New + 0 + 1 + True + True + True + + + (default) + 0 + + + 0 + 1 + 61 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 73 + + + 4 + 7 + 5 + 175 + + + 5 + 8 + 6 + 90 + + + 6 + 37 + 7 + 25 + + + 7 + 9 + 8 + 162 + + + 8 + 11 + 9 + 90 + + + 9 + 12 + 10 + 62 + + + 10 + 40 + 11 + 62 + + + 11 + 39 + 12 + 175 + + + 12 + 87 + 13 + 175 + + + + + J1939 + 1 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 27 + 6 + 90 + + + 6 + 21 + 7 + 43 + + + 7 + 25 + 8 + 31 + + + 8 + 24 + 9 + 31 + + + 9 + 9 + 10 + 137 + + + 10 + 11 + 11 + 90 + + + 11 + 12 + 12 + 62 + + + 12 + 40 + 13 + 62 + + + 13 + 39 + 14 + 175 + + + 14 + 87 + 15 + 175 + + + + + Class 2 + 2 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 19 + 6 + 90 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 137 + + + 8 + 17 + 9 + 25 + + + + + Ford SCP + 3 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 16 + 6 + 90 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 137 + + + 8 + 15 + 9 + 90 + + + + + GMLAN + 4 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 20 + 7 + 43 + + + 7 + 28 + 8 + 43 + + + 8 + 29 + 9 + 50 + + + 9 + 30 + 10 + 31 + + + 10 + 9 + 11 + 137 + + + 11 + 12 + 12 + 62 + + + 12 + 11 + 13 + 62 + + + + + LIN + 5 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 32 + 3 + 25 + + + 3 + 33 + 4 + 25 + + + 4 + 6 + 5 + 25 + + + 5 + 7 + 6 + 152 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 187 + + + 8 + 34 + 9 + 62 + + + 9 + 35 + 10 + 62 + + + 10 + 36 + 11 + 62 + + + 11 + 11 + 12 + 90 + + + + + CGI + 6 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 37 + 6 + 25 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 162 + + + 8 + 38 + 9 + 90 + + + 9 + 11 + 10 + 90 + + + 10 + 12 + 11 + 62 + + + + + FlexRay + 7 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 54 + 6 + 25 + + + 6 + 106 + 7 + 90 + + + 7 + 51 + 8 + 90 + + + 8 + 103 + 9 + 90 + + + 9 + 37 + 10 + 25 + + + 10 + 9 + 11 + 162 + + + 11 + 11 + 12 + 90 + + + 12 + 12 + 13 + 62 + + + 13 + 104 + 14 + 90 + + + 14 + 60 + 15 + 31 + + + 15 + 57 + 16 + 25 + + + 16 + 58 + 17 + 31 + + + 17 + 59 + 18 + 31 + + + 18 + 56 + 19 + 25 + + + 19 + 55 + 20 + 25 + + + 20 + 50 + 21 + 50 + + + 21 + 52 + 22 + 75 + + + 22 + 53 + 23 + 62 + + + 23 + 35 + 24 + 62 + + + + + ARINC 825 + 8 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 41 + 6 + 43 + + + 6 + 42 + 7 + 50 + + + 7 + 43 + 8 + 31 + + + 8 + 44 + 9 + 31 + + + 9 + 45 + 10 + 31 + + + 10 + 46 + 11 + 37 + + + 11 + 47 + 12 + 31 + + + 12 + 48 + 13 + 50 + + + 13 + 49 + 14 + 31 + + + 14 + 9 + 15 + 162 + + + 15 + 11 + 16 + 90 + + + 16 + 40 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + MOST + 9 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 6 + 3 + 25 + + + 3 + 62 + 4 + 43 + + + 4 + 63 + 5 + 43 + + + 5 + 70 + 6 + 43 + + + 6 + 71 + 7 + 43 + + + 7 + 64 + 8 + 62 + + + 8 + 65 + 9 + 56 + + + 9 + 66 + 10 + 37 + + + 10 + 67 + 11 + 37 + + + 11 + 68 + 12 + 50 + + + 12 + 7 + 13 + 152 + + + 13 + 9 + 14 + 206 + + + 14 + 69 + 15 + 37 + + + 15 + 74 + 16 + 37 + + + 16 + 75 + 17 + 37 + + + 17 + 11 + 18 + 90 + + + 18 + 39 + 19 + 175 + + + 19 + 87 + 20 + 175 + + + + + Ethernet + 10 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 100 + 7 + 50 + + + 7 + 77 + 8 + 152 + + + 8 + 101 + 9 + 50 + + + 9 + 102 + 10 + 56 + + + 10 + 78 + 11 + 50 + + + 11 + 79 + 12 + 37 + + + 12 + 115 + 13 + 25 + + + 13 + 9 + 14 + 162 + + + 14 + 11 + 15 + 90 + + + 15 + 12 + 16 + 62 + + + 16 + 40 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + CAN FD + 11 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 37 + 7 + 25 + + + 7 + 9 + 8 + 162 + + + 8 + 11 + 9 + 90 + + + 9 + 12 + 10 + 62 + + + 10 + 105 + 11 + 25 + + + 11 + 80 + 12 + 25 + + + 12 + 81 + 13 + 25 + + + 13 + 82 + 14 + 25 + + + 14 + 40 + 15 + 62 + + + 15 + 39 + 16 + 175 + + + 16 + 87 + 17 + 175 + + + + + PTP (802.1as) + 12 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 77 + 7 + 152 + + + 7 + 102 + 8 + 56 + + + 8 + 78 + 9 + 50 + + + 9 + 79 + 10 + 37 + + + 10 + 37 + 11 + 25 + + + 11 + 85 + 12 + 125 + + + 12 + 83 + 13 + 50 + + + 13 + 84 + 14 + 37 + + + 14 + 86 + 15 + 125 + + + 15 + 11 + 16 + 90 + + + 16 + 12 + 17 + 62 + + + 17 + 40 + 18 + 62 + + + 18 + 39 + 19 + 175 + + + 19 + 87 + 20 + 175 + + + + + TCP + 13 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 100 + 7 + 50 + + + 7 + 77 + 8 + 152 + + + 8 + 101 + 9 + 50 + + + 9 + 102 + 10 + 56 + + + 10 + 78 + 11 + 50 + + + 11 + 79 + 12 + 37 + + + 12 + 37 + 13 + 31 + + + 13 + 88 + 14 + 68 + + + 14 + 89 + 15 + 68 + + + 15 + 90 + 16 + 50 + + + 16 + 91 + 17 + 93 + + + 17 + 11 + 18 + 90 + + + 18 + 12 + 19 + 62 + + + 19 + 40 + 20 + 62 + + + 20 + 39 + 21 + 175 + + + 21 + 87 + 22 + 175 + + + + + UDP + 14 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 100 + 7 + 50 + + + 7 + 77 + 8 + 152 + + + 8 + 101 + 9 + 50 + + + 9 + 102 + 10 + 56 + + + 10 + 78 + 11 + 50 + + + 11 + 79 + 12 + 37 + + + 12 + 37 + 13 + 50 + + + 13 + 9 + 14 + 212 + + + 14 + 11 + 15 + 90 + + + 15 + 120 + 16 + 90 + + + 16 + 12 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + FSA + 15 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 93 + 6 + 50 + + + 6 + 94 + 7 + 50 + + + 7 + 95 + 8 + 50 + + + 8 + 96 + 9 + 50 + + + 9 + 97 + 10 + 68 + + + 10 + 37 + 11 + 31 + + + 11 + 98 + 12 + 68 + + + 12 + 99 + 13 + 68 + + + 13 + 11 + 14 + 90 + + + 14 + 39 + 15 + 175 + + + 15 + 87 + 16 + 175 + + + + + Statistics + 16 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 37 + 7 + 25 + + + 7 + 9 + 8 + 162 + + + 8 + 11 + 9 + 90 + + + 9 + 12 + 10 + 62 + + + 10 + 40 + 11 + 62 + + + 11 + 39 + 12 + 175 + + + 12 + 87 + 13 + 175 + + + 13 + 107 + 14 + 62 + + + 14 + 108 + 15 + 62 + + + 15 + 109 + 16 + 62 + + + 16 + 110 + 17 + 62 + + + + + I2C + 17 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 142 + + + 6 + 121 + 7 + 25 + + + 7 + 122 + 8 + 81 + + + 8 + 37 + 9 + 25 + + + 9 + 9 + 10 + 383 + + + 10 + 11 + 11 + 90 + + + 11 + 12 + 12 + 62 + + + 12 + 40 + 13 + 62 + + + 13 + 39 + 14 + 175 + + + 14 + 87 + 15 + 175 + + + + + + Custom 1 + + + Custom 2 + + + Custom 3 + + + Custom 4 + + + Custom 5 + + + Custom 6 + + + + + 1 + + Gigastar + + + vcan + + + + + HS CAN + net0 + HS CAN + 500000 + 1 + 2000000 + 2 + 1 + False + False + + + MS CAN + net1 + MS CAN + 500000 + 1 + 2000000 + 2 + False + False + + + SW CAN + net2 + SW CAN + 33333 + 1 + 1 + 2 + False + False + + + J1850 VPW + net3 + J1850 VPW + 10417 + 3 + 2 + False + False + + + ISO9141/KW2K + net4 + ISO9141/KW2K + 10417 + 6 + 2 + False + False + + + LSFT CAN + net5 + LSFT CAN + 125000 + 1 + 2 + False + False + + + J1850 PWM + net6 + J1850 PWM + 41600 + 4 + 2 + False + False + + + J1708 + net7 + J1708 + 9600 + 13 + 2 + False + False + + + neoVI + net8 + neoVI + 0 + 1 + 2 + False + False + + + HS CAN2 + net9 + HS CAN2 (neoVI 3G) + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN3 + net10 + HS CAN3 (neoVI 3G) + 500000 + 1 + 2000000 + 2 + False + False + + + LIN2 + net11 + LIN2 (neoVI 3G) + 10417 + 12 + 2 + False + False + + + LIN3 + net12 + LIN3 (neoVI 3G) + 10417 + 12 + 2 + False + False + + + LIN4 + net13 + LIN4 (neoVI 3G) + 10417 + 12 + 2 + False + False + + + CGI + net14 + CGI (neoVI 3G) + 625000 + 18 + 2 + False + False + + + LIN + net15 + LIN + 10417 + 12 + 2 + False + False + + + ISO9141/KW2K 2 + net16 + ISO9141/KW2K 2 + 10417 + 6 + 2 + False + False + + + ISO9141/KW2K 3 + net17 + ISO9141/KW2K 3 + 10417 + 6 + 2 + False + False + + + ISO9141/KW2K 4 + net18 + ISO9141/KW2K 4 + 10417 + 6 + 2 + False + False + + + HS CAN4 + net19 + HS CAN4 + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN5 + net20 + HS CAN5 + 500000 + 1 + 2000000 + 2 + False + False + + + UART + net21 + UART (neoVI 3G) + 10417 + 28 + 2 + False + False + + + UART2 + net22 + UART2 (neoVI 3G) + 10417 + 28 + 2 + False + False + + + LIN5 + net23 + LIN5 (neoVI 3G) + 10417 + 12 + 2 + False + False + + + MOST (VNET A) + net24 + MOST (VNET A) + 1000000 + 17 + 2 + False + False + + + FlexRay1A (VNET A) + net25 + FlexRay1A (VNET A) + 5000000 + 16 + 2 + False + False + + + FlexRay1B (VNET A) + net26 + FlexRay1B (VNET A) + 5000000 + 16 + 2 + False + False + + + FlexRay2A (VNET A) + net27 + FlexRay2A (VNET A) + 5000000 + 16 + 2 + False + False + + + FlexRay2B (VNET A) + net28 + FlexRay2B (VNET A) + 5000000 + 16 + 2 + False + False + + + HS CAN (VNET A) + net29 + HS CAN (VNET A) + 500000 + 1 + 2000000 + 2 + False + False + + + MS CAN (VNET A) + net30 + MS CAN (VNET A) + 500000 + 1 + 2000000 + 2 + False + False + + + SW CAN (VNET A) + net31 + SW CAN (VNET A) + 33333 + 1 + 2 + False + False + + + J1850 VPW (VNET A) + net32 + J1850 VPW (VNET A) + 10417 + 3 + 2 + False + False + + + LSFT CAN (VNET A) + net33 + LSFT CAN (VNET A) + 125000 + 1 + 2 + False + False + + + J1708 (VNET A) + net34 + J1708 (VNET A) + 9600 + 13 + 2 + False + False + + + neoVI (VNET A) + net35 + neoVI (VNET A) + 500000 + 1 + 2 + False + False + + + HS CAN2 (VNET A) + net36 + HS CAN2 (VNET A) + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN3 (VNET A) + net37 + HS CAN3 (VNET A) + 500000 + 1 + 2000000 + 2 + False + False + + + LIN (VNET A) + net38 + LIN (VNET A) + 10417 + 12 + 2 + False + False + + + LIN2 (VNET A) + net39 + LIN2 (VNET A) + 10417 + 12 + 2 + False + False + + + LIN3 (VNET A) + net40 + LIN3 (VNET A) + 10417 + 12 + 2 + False + False + + + LIN4 (VNET A) + net41 + LIN4 (VNET A) + 10417 + 12 + 2 + False + False + + + CGI (VNET A) + net42 + CGI (VNET A) + 625000 + 18 + 2 + False + False + + + ISO9141/KW2K (VNET A) + net43 + ISO9141/KW2K (VNET A) + 10417 + 6 + 2 + False + False + + + ISO9141/KW2K 2 (VNET A) + net44 + ISO9141/KW2K 2 (VNET A) + 10417 + 6 + 2 + False + False + + + ISO9141/KW2K 3 (VNET A) + net45 + ISO9141/KW2K 3 (VNET A) + 10417 + 6 + 2 + False + False + + + ISO9141/KW2K 4 (VNET A) + net46 + ISO9141/KW2K 4 (VNET A) + 10417 + 6 + 2 + False + False + + + HS CAN (VNET B) + net47 + HS CAN (VNET B) + 500000 + 1 + 2000000 + 2 + False + False + + + MS CAN (VNET B) + net48 + MS CAN (VNET B) + 500000 + 1 + 2000000 + 2 + False + False + + + SW CAN (VNET B) + net49 + SW CAN (VNET B) + 33333 + 1 + 2 + False + False + + + J1850 VPW (VNET B) + net50 + J1850 VPW (VNET B) + 10417 + 3 + 2 + False + False + + + LSFT CAN (VNET B) + net51 + LSFT CAN (VNET B) + 125000 + 1 + 2 + False + False + + + J1708 (VNET B) + net52 + J1708 (VNET B) + 9600 + 13 + 2 + False + False + + + neoVI (VNET B) + net53 + neoVI (VNET B) + 500000 + 1 + 2 + False + False + + + HS CAN2 (VNET B) + net54 + HS CAN2 (VNET B) + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN3 (VNET B) + net55 + HS CAN3 (VNET B) + 500000 + 1 + 2000000 + 2 + False + False + + + LIN (VNET B) + net56 + LIN (VNET B) + 10417 + 12 + 2 + False + False + + + LIN2 (VNET B) + net57 + LIN2 (VNET B) + 10417 + 12 + 2 + False + False + + + LIN3 (VNET B) + net58 + LIN3 (VNET B) + 10417 + 12 + 2 + False + False + + + LIN4 (VNET B) + net59 + LIN4 (VNET B) + 10417 + 12 + 2 + False + False + + + CGI (VNET B) + net60 + CGI (VNET B) + 625000 + 18 + 2 + False + False + + + ISO9141/KW2K (VNET B) + net61 + ISO9141/KW2K (VNET B) + 10417 + 6 + 2 + False + False + + + ISO9141/KW2K 2 (VNET B) + net62 + ISO9141/KW2K 2 (VNET B) + 10417 + 6 + 2 + False + False + + + ISO9141/KW2K 3 (VNET B) + net63 + ISO9141/KW2K 3 (VNET B) + 10417 + 6 + 2 + False + False + + + ISO9141/KW2K 4 (VNET B) + net64 + ISO9141/KW2K 4 (VNET B) + 10417 + 6 + 2 + False + False + + + HS CAN4 (VNET A) + net65 + HS CAN4 (VNET A) + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN5 (VNET A) + net66 + HS CAN5 (VNET A) + 500000 + 1 + 2000000 + 2 + False + False + + + LIN5 (VNET A) + net67 + LIN5 (VNET A) + 10417 + 12 + 2 + False + False + + + HS CAN4 (VNET B) + net68 + HS CAN4 (VNET B) + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN5 (VNET B) + net69 + HS CAN5 (VNET B) + 500000 + 1 + 2000000 + 2 + False + False + + + LIN5 (VNET B) + net70 + LIN5 (VNET B) + 10417 + 12 + 2 + False + False + + + Ethernet DAQ + net71 + Ethernet DAQ (neoVI 3G) + 0 + 29 + 2 + False + False + + + Ethernet + net72 + Ethernet 2 : Lenovo USB Ethernet + 29 + True + Ethernet PCAP + icsenet.dll + 2 + False + False + + + MOST (VNET B) + net73 + MOST (VNET B) + 1000000 + 17 + 2 + False + False + + + FlexRay1A (VNET B) + net74 + FlexRay1A (VNET B) + 5000000 + 16 + 2 + False + False + + + FlexRay1B (VNET B) + net75 + FlexRay1B (VNET B) + 5000000 + 16 + 2 + False + False + + + FlexRay2A (VNET B) + net76 + FlexRay2A (VNET B) + 5000000 + 16 + 2 + False + False + + + FlexRay2B (VNET B) + net77 + FlexRay2B (VNET B) + 5000000 + 16 + 2 + False + False + + + SW CAN2 + net78 + SW CAN2 (neoVI 3G) + 33333 + 1 + 2 + False + False + + + SW CAN2 (VNET A) + net79 + SW CAN2 (VNET A) + 33333 + 1 + 2 + False + False + + + SW CAN2 (VNET B) + net80 + SW CAN2 (VNET B) + 33333 + 1 + 2 + False + False + + + FSA + net81 + (FSA Virtual) + 31 + 2 + False + False + + + TCP + net82 + (TCP Virtual) + 32 + 2 + False + False + + + HS CAN6 + net83 + HS CAN6 + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN7 + net84 + HS CAN7 + 500000 + 1 + 2000000 + 2 + False + False + + + LIN6 + net85 + LIN6 + 10417 + 12 + 2 + False + False + + + LSFT CAN2 + net86 + LSFT CAN2 + 125000 + 1 + 2 + False + False + + + OP (BR) ETH01 + net87 + OP (BR) ETH1 + 100 + 29 + 2 + False + False + + + OP (BR) ETH02 + net88 + OP (BR) ETH2 + 100 + 29 + 2 + False + False + + + OP (BR) ETH03 + net89 + OP (BR) ETH3 + 100 + 29 + 2 + False + False + + + OP (BR) ETH04 + net90 + OP (BR) ETH4 + 100 + 29 + 2 + False + False + + + OP (BR) ETH05 + net91 + OP (BR) ETH5 + 100 + 29 + 2 + False + False + + + OP (BR) ETH06 + net92 + OP (BR) ETH6 + 100 + 29 + 2 + False + False + + + OP (BR) ETH07 + net93 + OP (BR) ETH7 + 100 + 29 + 2 + False + False + + + OP (BR) ETH08 + net94 + OP (BR) ETH8 + 100 + 29 + 2 + False + False + + + OP (BR) ETH09 + net95 + OP (BR) ETH9 + 100 + 29 + 2 + False + False + + + OP (BR) ETH10 + net96 + OP (BR) ETH10 + 100 + 29 + 2 + False + False + + + OP (BR) ETH11 + net97 + OP (BR) ETH11 + 100 + 29 + 2 + False + False + + + OP (BR) ETH12 + net98 + OP (BR) ETH12 + 100 + 29 + 2 + False + False + + + FlexRay + net99 + FlexRay + 10000000 + 16 + 2 + False + False + + + FlexRay2 + net100 + FlexRay2 + 10000000 + 16 + 2 + False + False + + + LIN6 (VNET A) + net101 + LIN6 (VNET A) + 10417 + 12 + 2 + False + False + + + LIN6 (VNET B) + net102 + LIN6 (VNET B) + 10417 + 12 + 2 + False + False + + + HS CAN6 (VNET A) + net103 + HS CAN6 (VNET A) + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN6 (VNET B) + net104 + HS CAN6 (VNET B) + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN7 (VNET A) + net105 + HS CAN7 (VNET A) + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN7 (VNET B) + net106 + HS CAN7 (VNET B) + 500000 + 1 + 2000000 + 2 + False + False + + + LSFT CAN2 (VNET A) + net107 + LSFT CAN2 (VNET A) + 125000 + 1 + 2 + False + False + + + LSFT CAN2 (VNET B) + net108 + LSFT CAN2 (VNET B) + 125000 + 1 + 2 + False + False + + + Ethernet (VNET A) + net109 + Ethernet (VNET A) + 0 + 29 + 2 + False + False + + + Ethernet (VNET B) + net110 + Ethernet (VNET B) + 0 + 29 + 2 + False + False + + + UDP + net111 + (UDP Virtual) + 33 + 2 + False + False + + + AUTOSAR + net112 + (AUTOSAR Virtual) + 34 + 2 + False + False + + + I2C1 + net113 + I2C1 + 10417 + 21 + 2 + False + False + + + I2C2 + net114 + 0 + I2C2 + 10417 + 21 + 2 + False + False + + + I2C3 + net115 + 0 + I2C3 + 10417 + 21 + 2 + False + False + + + I2C4 + net116 + I2C4 + 10417 + 21 + 2 + False + False + + + Ethernet2 + net117 + Ethernet2 + 0 + 29 + 2 + False + False + + + + + out9 + + + SFP Check Status I2C3 + out9 + 057 + 00 + net115 + 1 + 1 + 1 + False + + + StatusReg + sig9 + 1 + {Raw Value}|0,0,0,8 + 0 + 255 + 0 + False + 0 + True + 8 + False + 4 + + + + + + + out10 + + + SFP Send Firmware 16 I2C3 + out10 + 057 + 14 + L,83,8C,82,0A,32,6F,B6,A5,21,F5,2D,93,42,F4,AB,63,32,2A,44,64,C2,F8,98,FC,9D,E5,82,B6,10,AC,86,DA,91,83,3D,02,37,B0,3C,06,BA,16,62,0E,45,76,70,DB,61,71,19,5E,10,3A,BA,B4,1C,2F,D5,0E,BF,FD,87,02,4C,06,B3,B4,CD,E9,8E,41,AF,C0,DF,1E,06,7C,3E,ED,41,E0,A2,EC,4B,F0,C3,0C,C2,33,42,5F,C8,C9,A7,6E,F9,0D,C2,13,F8,92,38,7C,B2,30,6A,BC,51,9C,5D,1C,44,FE,9E,80,0A,1C,EF,67,87,09,30,7D,15,CE,F2,41,91,26,D8,38,ED,7F,6A,0D,BD,8D,5A,C8,99,37,6F,5F,75,E9,F6,47,E1,A4,EE,AB,AE,75,47,7A,73,09,B3,6B,F0,0C,B2,EF,74,9D,03,AA,06,40,FC,BC,44,A9,CF,47,C8,42,63,C8,00,0F,89,58,C6,AF,3D,6A,0E,8D,5C,F7,A1,3C,BE,60,6C,82,F6,BB,97,AC,09,9F,FE,92,7A,39,3A,D5,E5,80,28,13,FB,1C,D8,2E,64,59,D5,77,C3,EF,45,9A,17,9E,EA,EE,6D,DC,21,E0,77,19,D8,41,09,1A,2F,64,B5,B8,B4,8D,E9,5C,21,3A,F2,3F,58,B5,78,4B,7B,74,18,5E,FC,F0,2F,E5,77,14,89,0E,8B,F9,13,2D,A3,E8,7C,A0,5F,1C,9F,F8,D5,00,18,D7,B8,D5,91,D2,5E,86,C1,7C,C7,6F,59,DC,4D,50,40,00,3B,D6,32,F6,51,69,C7,CA,DD,20,EA,D8,C1,7E,28,7B,DA,B2,74,9C,BC,38,14,CF,40,CD,F5,DD,0F,59,F9,40,A4,90,9A,DE,E9,FF,C3,8F,28,EB,A3,8F,50,61,18,6C,7A,A2,68,AA,74,69,D8,8E,D2,E2,39,83,A0,BA,AC,56,7C,34,35,B2,A1,F1,BA,3F,77,A3,30,C6,3A,6E,40,87,C9,A6,28,65,AD,49,F4,FF,24,F2,AB,A1,D5,04,1B,3D,55,A2,D7,C8,0E,31,F9,5F,85,54,38,07,3C,A5,7A,6E,B8,60,8F,14,1B,3D,13,49,BD,00,F7,9A,EE,69,A2,FB,9E,D4,80,4C,C7,57,5D,15,9E,C4,2D,2B,90,3D,CB,FC,A3,D2,2C,14,80,00,32,58,8D,9A,05,2A,55,CC,19,17,DB,4E,EF,13,8F,13,CE,1E,94,C5,37,B4,BF,90,16,6D,8A,79,92,A6,65,A9,97,2D,5E,EB,1E,44,B2,3C,5D,66,F8,8C,3C,36,F9,2B,30,FB,BA,17,7A,34,6F,D1,DE,04,74,9C,22,C9,04,C0,0C,B1,00,F1,04,00,00,F3,04,00,00,F5,04,00,00,F7,04,00,00,23,04,00,00,F9,04,00,00,FB,04,00,00,FD,04,00,00,FF,04,00,00,23,04,00,00,01,05,00,00,03,05,00,00,02,4B,03,4A,1A,60,00,BF,70,47,00,BF,00,00,00,20,00,6C,DC,02,02,4B,03,4A,1A,60,00,BF,70,47,00,BF,00,00,00,20,00,6C,DC,02,34,49,35,48,0A,1A,02,D0,07,22,91,43,8D,46,33,49,33,48,0A,1A,06,D0,07,22,91,43,81,F3,09,88,02,22,82,F3,14,88,2F,48,30,49,30,4A,00,F0,42,F8,30,48,30,49,31,4A,00,F0,3D,F8,30,48,31,49,31,4A,00,F0,38,F8,31,48,31,49,32,4A,00,F0,33,F8,31,48,32,49,32,4A,00,F0,2E,F8,32,48,32,49,33,4A,00,F0,29,F8,32,48,33,49,33,4A,00,F0,24,F8,33,48,33,49,00,22,00,F0,2A,F8,32,48,33,49,00,22,00,F0,25,F8,32,48,32,49,09,1A,08,29,02,DB,00,22,02,60,41,60,1F,48,1F,49,88,42,05,D0,02,68,04,30,03,B4,90,47,03,BC,F7,E7,00,20,86,46,EC,46,00,20,00,21,28,4A,90,47,FE,E7,88,42,07,D0,52,1A,05,D0,03,78,01,30,0B,70,01,31,01,3A,F9,D1,70,47,88,42,02,D0,02,70,01,30,FA,E7,70,47,08,0A,00,20,08,09,00,20,08,0A,00,20,08,0A,00,20,74,37,00,00,00,00,00,20,08,00,00,20,04,05,00,00,04,05,00,00,32,37,00,00,74,37,00,00,00,00,00,20,00,00,00,20,34,37,00,00,34,37,00,00,38,37,00,00,34,37,00,00,34,37,00,00,34,37,00,00,38,37,00,00,38,37,00,00,73,37,00,00,7C,37,00,00,08,08,00,20,08,08,00,20,08,00,00,20,08,08,00,20,08,08,00,20,08,08,00,20,08,08,00,20,08,09,00,20,31,1A,00,00,09,48,20,F0,07,00,85,46,08,48,80,47,08,48,09,49,01,60,09,48,01,68,41,F4,70,01,01,60,BF,F3,4F,8F,BF,F3,6F,8F,FF,F7,42,BF,00,00,03,20,61,02,00,00,08,ED,00,E0,00,00,00,00,88,ED,00,E0,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,82,B0,03,46,AD,F8,06,30,BD,F9,06,30,00,2B,0C,DB,BD,F8,06,30,03,F0,1F,02,05,49,BD,F9,06,30,5B,09,01,20,00,FA,02,F2,41,F8,23,20,00,BF,02,B0,70,47,00,E1,00,E0,82,B0,03,46,AD,F8,06,30,BD,F9,06,30,00,2B,13,DB,BD,F8,06,30,03,F0,1F,02,09,49,BD,F9,06,30,5B,09,01,20,00,FA,02,F2,20,33,41,F8,23,20,BF,F3,4F,8F,00,BF,BF,F3,6F,8F,00,BF,00,BF,02,B0,70,47,00,BF,00,E1,00,E0,82,B0,03,46,AD,F8,06,30,BD,F9,06,30,00,2B,0D,DB,BD,F8,06,30,03,F0,1F,02,06,49,BD,F9,06,30,5B,09,01,20,00,FA,02,F2,40,33,41,F8,23,20,00,BF,02,B0,70,47,00,BF,00,E1,00,E0,00,B5,85,B0,01,90,23,4B,1B,68,01,9A,9A,42,27,D1,01,9B,21,4A,1A,60,01,9B,33,22,A3,F8,92,22,05,21,08,20,00,F0,7D,FB,08,20,00,F0,98,FB,4F,F4,00,50,00,F0,DE,FB,00,23,8D,F8,0D,30,00,23,8D,F8,0E,30,03,23,8D,F8,0C,30,03,AB,1A,46,00,21,13,48,01,F0,B1,FA,03,AB,1A,46,01,21,10,48,01,F0,AB,FA,14,E0,0F,4B,1B,68,01,9A,9A,42,0F,D1,01,9B,0D,4A,1A,60,01,9B,02,22,A3,F8,92,22,00,23,8D,F8,09,30,00,23,8D,F8,0A,30,03,23,8D,F8,08,30,00,BF,05,B0,5D,F8,04,FB,00,BF,38,37,00,00,00,34,00,40,00,80,00,41,3C,37,00,00,00,40,01,41,00,B5,83,B0,01,90,01,98,FF,F7,A6,FF,02,21,03,20,00,F0,32,FB,03,20,00,F0,4D,FB,01,9B,1B,68,1D,4A,1A,60,01,9B,1B,68,4F,F4,01,42,5A,60,01,9B,1B,68,AC,22,5A,62,01,9B,1A,68,53,6A,50,21,61,F3,5A,43,53,62,01,9B,1A,68,53,6A,43,F0,01,03,53,62,00,BF,01,9B,1B,68,DB,69,C3,F3,80,03,DB,B2,00,2B,F7,D1,01,9B,1B,68,87,22,9A,75,01,9B,1B,68,1A,68,01,9B,1B,68,42,F0,02,02,1A,60,00,BF,01,9B,1B,68,DB,69,C3,F3,40,03,DB,B2,00,2B,F7,D1,00,BF,00,BF,03,B0,5D,F8,04,FB,10,00,00,08,10,B5,84,B0,01,90,01,9B,1B,68,1B,7E,C3,F3,40,03,DB,B2,00,2B,35,D0,01,9B,1B,68,5B,8B,C3,F3,C0,03,DB,B2,00,2B,06,D1,01,9B,1B,68,9B,6A,DA,B2,01,9B,83,F8,B1,22,01,9A,92,F8,9C,32,43,F0,01,03,82,F8,9C,32,01,9B,4F,F4,FA,72,A3,F8,AC,22,01,9B,01,22,83,F8,B3,22,01,9B,1B,68,02,22,1A,76,01,9B,1A,68,53,68,6F,F3,92,43,53,60,01,9B,1B,68,5B,8B,9B,B2,01,9A,12,68,43,F4,20,63,43,F0,03,03,9B,B2,53,83,E7,E0,01,9B,1B,68,5B,8B,C3,F3,C0,03,DB,B2,00,2B,7C,D1,01,9B,1B,68,1B,7E,C3,F3,80,03,DB,B2,00,2B,74,D0,01,9B,93,F8,9C,32,03,F0,01,03,DB,B2,00,2B,2F,D0,01,9A,92,F8,9C,32,6F,F3,00,03,82,F8,9C,32,01,9A,92,F8,9C,32,43,F0,02,03,82,F8,9C,32,01,9A,92,F8,9C,32,43,F0,04,03,82,F8,9C,32,01,9B,1B,68,9B,6A,DA,B2,01,9B,83,F8,B0,22,01,9B,1A,68,53,68,6F,F3,92,43,53,60,01,9B,1A,68,53,68,43,F4,40,33,53,60,01,9B,93,F8,B0,32,DA,B2,01,9B,83,F8,B2,22,9F,E0,01,9B,B3,F8,9C,32,03,F0,02,03,00,2B,33,D0,01,9A,92,F8,9C,32,6F,F3,82,03,82,F8,9C,32,01,9B,D3,F8,A4,42,01,9B,93,F8,B1,32,D8,B2,01,9B,93,F8,B2,32,D9,B2,01,9B,1B,68,9B,6A,DA,B2,5F,4B,A0,47,5E,4B,19,78,01,9B,1A,68,0B,46,03,F0,01,03,D9,B2,53,68,61,F3,92,43,53,60,01,9B,1A,68,53,68,43,F4,40,33,53,60,01,9B,93,F8,B2,32,DB,B2,01,33,DA,B2,01,9B,83,F8,B2,22,64,E0,00,BF,62,E0,01,9B,1B,68,1B,7E,C3,F3,80,03,DB,B2,00,2B,5A,D0,01,9B,93,F8,9C,32,03,F0,04,03,DB,B2,00,2B,14,D0,01,9A,92,F8,9C,32,6F,F3,82,03,82,F8,9C,32,01,9A,92,F8,9C,32,43,F0,02,03,82,F8,9C,32,01,9B,93,F8,B0,32,DA,B2,01,9B,83,F8,B2,22,01,9B,93,F8,9C,32,03,F0,02,03,DB,B2,00,2B,35,D0,01,9B,D3,F8,A0,42,01,9B,93,F8,B1,32,D8,B2,01,9B,93,F8,B2,32,D9,B2,0D,F1,0F,02,32,4B,A0,47,9D,F8,0F,20,01,9B,1B,68,9A,62,2F,4B,19,78,01,9B,1A,68,0B,46,03,F0,01,03,D9,B2,53,68,61,F3,92,43,53,60,01,9B,1A,68,53,68,43,F4,40,33,53,60,01,9B,93,F8,B2,32,DB,B2,01,33,DA,B2,01,9B,83,F8,B2,22,01,9A,92,F8,9C,32,43,F0,10,03,82,F8,9C,32,01,9B,1B,68,1B,7E,C3,F3,C0,13,DB,B2,00,2B,05,D0,01,9B,1A,68,53,68,43,F4,40,33,53,60,01,9B,1B,68,1B,7E,C3,F3,00,03,DB,B2,00,2B,23,D0,01,9B,1B,68,01,22,1A,76,01,9B,D3,F8,A8,32,01,9A,92,F8,B1,22,D2,B2,00,21,10,46,98,47,01,9A,92,F8,9C,32,6F,F3,41,03,82,F8,9C,32,01,9B,00,22,A3,F8,AC,22,01,9B,00,22,83,F8,B3,22,01,9A,92,F8,9C,32,6F,F3,45,13,82,F8,9C,32,00,BF,04,B0,10,BD,08,00,00,20,00,B5,83,B0,01,90,01,9B,1B,68,1B,7E,C3,F3,40,03,DA,B2,01,9B,1B,68,1B,7E,C3,F3,00,03,DB,B2,13,43,DA,B2,01,9B,1B,68,1B,7E,C3,F3,80,03,DB,B2,13,43,DB,B2,00,2B,05,D0,01,9B,B3,F9,92,32,18,46,FF,F7,BB,FD,00,BF,03,B0,5D,F8,04,FB,00,B5,85,B0,01,90,01,9A,92,F8,9C,32,6F,F3,C3,03,82,F8,9C,32,01,9B,B3,F9,92,32,AD,F8,0E,30,BD,F9,0E,30,18,46,FF,F7,81,FD,00,BF,01,9B,B3,F8,AC,32,9B,B2,01,3B,9B,B2,01,9A,19,46,A2,F8,AC,12,00,2B,10,D1,01,9B,93,F8,B3,32,01,9B,B3,F8,AC,32,9B,B2,00,2B,0A,D1,01,9A,92,F8,9C,32,43,F0,08,03,82,F8,9C,32,02,E0,01,9B,93,F8,B3,32,01,9B,B3,F9,92,32,AD,F8,0C,30,BD,F9,0C,30,18,46,FF,F7,3C,FD,00,BF,01,9B,93,F8,9C,32,03,F0,08,03,DB,B2,00,2B,09,D0,01,9B,D3,F8,A8,32,01,9A,92,F8,B1,22,D2,B2,01,21,10,46,98,47,00,BF,05,B0,5D,F8,04,FB,00,00,08,B5,03,4B,1B,68,18,46,FF,F7,16,FE,00,BF,08,BD,38,37,00,00,82,B0,03,46,00,91,AD,F8,06,30,BD,F9,06,30,00,2B,0A,DB,00,9B,DA,B2,0C,49,BD,F9,06,30,52,01,D2,B2,0B,44,83,F8,00,23,0B,E0,00,9B,DA,B2,07,49,BD,F8,06,30,03,F0,0F,03,04,3B,52,01,D2,B2,0B,44,1A,76,00,BF,02,B0,70,47,00,BF,00,E1,00,E0,00,ED,00,E0,00,B5,83,B0,01,90,01,9B,01,3B,B3,F1,80,7F,01,D3,01,23,0F,E0,09,4A,01,9B,01,3B,53,60,07,21,4F,F0,FF,30,FF,F7,C5,FF,05,4B,00,22,9A,60,03,4B,07,22,1A,60,00,23,18,46,03,B0,5D,F8,04,FB,10,E0,00,E0,08,B5,00,F0,8B,FE,00,BF,08,BD,00,00,08,B5,02,48,FF,F7,D6,FF,00,BF,08,BD,C0,D4,01,00,00,B5,85,B0,03,46,00,91,8D,F8,07,30,30,4A,9D,F8,07,30,08,33,52,F8,23,30,03,93,00,9B,1B,78,03,F0,0F,03,DA,B2,9D,F8,0C,30,62,F3,03,03,8D,F8,0C,30,00,9B,5B,88,AD,F8,0E,30,00,9B,1B,79,03,F0,01,03,DA,B2,9D,F8,0D,30,62,F3,04,13,8D,F8,0D,30,00,9B,5B,79,03,F0,01,03,DA,B2,9D,F8,0D,30,62,F3,C3,03,8D,F8,0D,30,00,9B,9B,79,03,F0,01,03,DA,B2,9D,F8,0D,30,62,F3,41,03,8D,F8,0D,30,00,9B,DB,79,03,F0,01,03,DA,B2,9D,F8,0D,30,62,F3,45,13,8D,F8,0D,30,00,9B,1B,7A,03,F0,01,03,DA,B2,9D,F8,0D,30,62,F3,82,03,8D,F8,0D,30,0A,49,9D,F8,07,30,03,9A,08,33,41,F8,23,20,00,BF,9D,F8,07,30,18,46,00,F0,2E,F8,03,46,00,2B,F7,D1,00,BF,00,BF,05,B0,5D,F8,04,FB,00,1C,00,40,00,B5,83,B0,03,46,8D,F8,07,30,0E,4A,9D,F8,07,30,08,33,52,F8,23,20,0B,49,9D,F8,07,30,42,F4,80,72,08,33,41,F8,23,20,00,BF,9D,F8,07,30,18,46,00,F0,0B,F8,03,46,00,2B,F7,D1,00,BF,00,BF,03,B0,5D,F8,04,FB,00,BF,00,1C,00,40,82,B0,03,46,8D,F8,07,30,0B,4B,5B,68,9D,F8,07,20,02,32,01,21,01,FA,02,F2,13,40,9D,F8,07,20,02,32,01,21,01,FA,02,F2,93,42,0C,BF,01,23,00,23,DB,B2,18,46,02,B0,70,47,00,BF,00,1C,00,40,82,B0,03,46,0A,46,8D,F8,07,30,13,46,8D,F8,06,30,09,49,9D,F8,07,30,9D,F8,06,20,02,F0,0F,02,D0,B2,03,F1,20,02,51,F8,22,30,60,F3,03,03,41,F8,22,30,00,BF,02,B0,70,47,00,BF,00,1C,00,40,82,B0,03,46,8D,F8,07,30,06,49,9D,F8,07,30,03,F1,20,02,51,F8,22,30,43,F0,40,03,41,F8,22,30,00,BF,02,B0,70,47,00,1C,00,40,00,B5,83,B0,01,90,01,9B,1F,2B,07,D8,01,22,01,9B,02,FA,03,F3,18,46,00,F0,29,F8,22,E0,01,9B,3F,2B,08,D8,01,9B,20,3B,01,22,02,FA,03,F3,18,46,00,F0,2B,F8,16,E0,01,9B,5F,2B,08,D8,01,9B,40,3B,01,22,02,FA,03,F3,18,46,00,F0,2D,F8,0A,E0,01,9B,7F,2B,07,D8,01,9B,60,3B,01,22,02,FA,03,F3,18,46,00,F0,2F,F8,00,BF,03,B0,5D,F8,04,FB,00,00,82,B0,01,90,04,4B,5A,69,03,49,01,9B,13,43,4B,61,00,BF,02,B0,70,47,00,BF,00,08,00,40,82,B0,01,90,04,4B,9A,69,03,49,01,9B,13,43,8B,61,00,BF,02,B0,70,47,00,BF,00,08,00,40,82,B0,01,90,04,4B,DA,69,03,49,01,9B,13,43,CB,61,00,BF,02,B0,70,47,00,BF,00,08,00,40,82,B0,01,90,04,4B,1A,6A,03,49,01,9B,13,43,0B,62,00,BF,02,B0,70,47,00,BF,00,08,00,40,84,B0,01,90,4E,49,01,9B,1A,68,13,46,9B,00,13,44,9B,00,0B,44,03,F1,30,02,13,78,6F,F3,41,03,13,70,47,49,01,9B,1A,68,13,46,9B,00,13,44,9B,00,0B,44,38,33,1B,68,02,93,01,9B,5B,68,03,F0,07,03,DA,B2,9D,F8,08,30,62,F3,47,13,8D,F8,08,30,01,9B,DB,68,5B,08,9B,B2,01,3B,9B,B2,C3,F3,0A,03,9A,B2,BD,F8,0A,30,62,F3,0A,03,AD,F8,0A,30,35,48,01,9B,1A,68,02,99,13,46,9B,00,13,44,9B,00,03,44,38,33,19,60,BF,F3,4F,8F,00,BF,2E,49,01,9B,1A,68,13,46,9B,00,13,44,9B,00,0B,44,34,33,1B,68,03,93,9D,F8,0E,30,6F,F3,04,03,8D,F8,0E,30,01,9B,9B,68,9B,B2,01,3B,9B,B2,C3,F3,0C,03,9A,B2,BD,F8,0C,30,62,F3,0C,03,AD,F8,0C,30,1E,48,01,9B,1A,68,03,99,13,46,9B,00,13,44,9B,00,03,44,34,33,19,60,00,BF,18,49,01,9B,1A,68,13,46,9B,00,13,44,9B,00,0B,44,38,33,5B,68,C3,F3,80,03,DB,B2,00,2B,F0,D1,11,49,01,9B,1A,68,13,46,9B,00,13,44,9B,00,0B,44,03,F1,30,02,13,78,43,F0,02,03,13,70,00,BF,09,49,01,9B,1A,68,13,46,9B,00,13,44,9B,00,0B,44,38,33,5B,68,C3,F3,40,03,DB,B2,00,2B,F0,D1,00,BF,00,BF,04,B0,70,47,00,BF,00,10,00,40,82,B0,03,46,AD,F8,06,30,BD,F9,06,30,00,2B,13,DB,BD,F8,06,30,03,F0,1F,02,09,49,BD,F9,06,30,5B,09,01,20,00,FA,02,F2,20,33,41,F8,23,20,BF,F3,4F,8F,00,BF,BF,F3,6F,8F,00,BF,00,BF,02,B0,70,47,00,BF,00,E1,00,E0,00,B5,83,B0,01,AB,00,21,0A,46,1A,80,0A,46,9A,70,0F,23,8D,F8,04,30,00,23,8D,F8,06,30,01,AB,1A,46,15,21,03,48,00,F0,D2,FD,00,BF,03,B0,5D,F8,04,FB,00,80,00,41,00,B5,83,B0,01,AB,00,21,0A,46,1A,80,0A,46,9A,70,0E,23,8D,F8,04,30,01,23,8D,F8,06,30,01,AB,1A,46,15,21,03,48,00,F0,B8,FD,00,BF,03,B0,5D,F8,04,FB,00,80,00,41,00,B5,97,B0,01,90,0B,46,8D,F8,03,30,2D,4B,0D,93,15,23,0C,93,9D,F8,03,30,8D,F8,2F,30,9D,F8,2F,30,00,2B,10,D0,0D,9B,0A,93,0C,9B,09,93,0A,9B,08,93,09,9B,07,93,01,22,07,9B,02,FA,03,F3,1A,46,08,9B,9A,61,00,BF,10,E0,0D,9B,06,93,0C,9B,05,93,06,9B,04,93,05,9B,03,93,01,22,03,9B,02,FA,03,F3,1A,46,04,9B,5A,61,00,BF,00,BF,00,BF,02,20,00,F0,16,FF,14,4B,11,93,14,23,10,93,11,9B,0F,93,10,9B,0E,93,01,22,0E,9B,02,FA,03,F3,1A,46,0F,9B,9A,61,00,BF,00,BF,02,20,00,F0,02,FF,0A,4B,15,93,14,23,14,93,15,9B,13,93,14,9B,12,93,01,22,12,9B,02,FA,03,F3,1A,46,13,9B,5A,61,00,BF,00,BF,00,BF,17,B0,5D,F8,04,FB,00,BF,00,80,00,41,00,B5,8F,B0,01,90,02,20,00,F0,E4,FE,21,4B,05,93,14,23,04,93,05,9B,03,93,04,9B,02,93,01,22,02,9B,02,FA,03,F3,1A,46,03,9B,9A,61,00,BF,00,BF,02,20,00,F0,D0,FE,17,4B,09,93,14,23,08,93,09,9B,07,93,08,9B,06,93,01,22,06,9B,02,FA,03,F3,1A,46,07,9B,5A,61,00,BF,00,BF,0F,4B,0D,93,15,23,0C,93,0D,9B,0B,93,0C,9B,0A,93,0B,9B,1B,6A,01,21,0A,9A,01,FA,02,F2,13,40,01,21,0A,9A,01,FA,02,F2,93,42,0C,BF,01,23,00,23,DB,B2,00,BF,DB,B2,18,46,0F,B0,5D,F8,04,FB,00,BF,00,80,00,41,00,B5,87,B0,01,90,08,46,11,46,1A,46,03,46,8D,F8,03,30,0B,46,8D,F8,02,30,13,46,AD,F8,00,30,FF,F7,0B,FF,00,23,05,93,06,E0,01,21,01,98,FF,F7,38,FF,05,9B,01,33,05,93,05,9B,0F,2B,F5,DD,00,21,01,98,FF,F7,2E,FF,01,21,01,98,FF,F7,2A,FF,00,21,01,98,FF,F7,26,FF,01,21,01,98,FF,F7,22,FF,04,23,04,93,0F,E0,9D,F8,03,20,04,9B,42,FA,03,F3,DB,B2,03,F0,01,03,DB,B2,19,46,01,98,FF,F7,12,FF,04,9B,01,3B,04,93,04,9B,00,2B,EC,DA,04,23,03,93,0F,E0,9D,F8,02,20,03,9B,42,FA,03,F3,DB,B2,03,F0,01,03,DB,B2,19,46,01,98,FF,F7,FC,FE,03,9B,01,3B,03,93,03,9B,00,2B,EC,DA,01,21,01,98,FF,F7,F2,FE,00,21,01,98,FF,F7,EE,FE,0F,23,02,93,0F,E0,BD,F8,00,20,02,9B,42,FA,03,F3,DB,B2,03,F0,01,03,DB,B2,19,46,01,98,FF,F7,DE,FE,02,9B,01,3B,02,93,02,9B,00,2B,EC,DA,FF,F7,BC,FE,01,98,FF,F7,37,FF,00,23,18,46,07,B0,5D,F8,04,FB,00,B5,8B,B0,01,90,0B,46,8D,F8,03,30,13,46,8D,F8,02,30,00,23,8D,F8,0F,30,00,23,AD,F8,26,30,FF,F7,89,FE,00,23,08,93,06,E0,01,21,01,98,FF,F7,B6,FE,08,9B,01,33,08,93,08,9B,0F,2B,F5,DD,00,21,01,98,FF,F7,AC,FE,01,21,01,98,FF,F7,A8,FE,01,21,01,98,FF,F7,A4,FE,00,21,01,98,FF,F7,A0,FE,04,23,07,93,0F,E0,9D,F8,03,20,07,9B,42,FA,03,F3,DB,B2,03,F0,01,03,DB,B2,19,46,01,98,FF,F7,90,FE,07,9B,01,3B,07,93,07,9B,00,2B,EC,DA,04,23,06,93,0F,E0,9D,F8,02,20,06,9B,42,FA,03,F3,DB,B2,03,F0,01,03,DB,B2,19,46,01,98,FF,F7,7A,FE,06,9B,01,3B,06,93,06,9B,00,2B,EC,DA,FF,F7,58,FE,01,98,FF,F7,D3,FE,03,46,00,2B,0E,D0,0F,23,05,93,05,E0,01,98,FF,F7,CA,FE,05,9B,01,3B,05,93,05,9B,00,2B,F6,DA,4F,F6,FF,73,1C,E0,0F,23,04,93,11,E0,BD,F8,26,30,5B,00,AD,F8,26,30,01,98,FF,F7,B6,FE,03,46,9A,B2,BD,F8,26,30,13,43,AD,F8,26,30,04,9B,01,3B,04,93,04,9B,00,2B,EA,DA,01,98,FF,F7,A6,FE,BD,F8,26,30,18,46,0B,B0,5D,F8,04,FB,00,B5,83,B0,01,90,08,46,11,46,1A,46,03,46,8D,F8,03,30,0B,46,8D,F8,02,30,13,46,AD,F8,00,30,9D,F8,02,30,9B,B2,9D,F8,03,10,0D,22,01,98,FF,F7,D4,FE,BD,F8,00,30,9D,F8,03,10,0E,22,01,98,FF,F7,CC,FE,9D,F8,02,30,1B,B2,6F,EA,43,43,6F,EA,53,43,1B,B2,9B,B2,9D,F8,03,10,0D,22,01,98,FF,F7,BD,FE,BD,F8,10,30,9D,F8,03,10,0E,22,01,98,FF,F7,B5,FE,00,BF,18,46,03,B0,5D,F8,04,FB,00,B5,85,B0,01,90,08,46,11,46,1A,46,03,46,8D,F8,03,30,0B,46,8D,F8,02,30,13,46,AD,F8,00,30,00,23,AD,F8,0E,30,9D,F8,02,30,9B,B2,9D,F8,03,10,0D,22,01,98,FF,F7,95,FE,BD,F8,00,30,9D,F8,03,10,0E,22,01,98,FF,F7,8D,FE,9D,F8,02,30,1B,B2,6F,EA,43,43,6F,EA,53,43,1B,B2,9B,B2,9D,F8,03,10,0D,22,01,98,FF,F7,7E,FE,9D,F8,03,30,0E,22,19,46,01,98,FF,F7,F9,FE,03,46,AD,F8,0E,30,BD,F8,0E,30,18,46,05,B0,5D,F8,04,FB,00,B5,A5,B0,01,90,01,9B,5B,7D,00,2B,00,F0,B6,80,01,9B,1B,78,02,2B,03,D0,03,2B,00,F0,91,80,BA,E0,01,9B,1B,7E,0F,2B,34,D8,7A,4B,23,93,15,23,22,93,01,23,8D,F8,87,30,9D,F8,87,30,00,2B,10,D0,23,9B,20,93,22,9B,1F,93,20,9B,1E,93,1F,9B,1D,93,01,22,1D,9B,02,FA,03,F3,1A,46,1E,9B,9A,61,00,BF,10,E0,23,9B,1C,93,22,9B,1B,93,1C,9B,1A,93,1B,9B,19,93,01,22,19,9B,02,FA,03,F3,1A,46,1A,9B,5A,61,00,BF,00,BF,00,BF,01,9B,1B,7E,01,33,DA,B2,01,9B,1A,76,81,E0,01,9B,9B,7D,5A,1C,D1,B2,01,9A,91,75,1F,2B,4A,D8,01,9B,1A,7E,01,9B,DB,7D,9A,42,44,D3,01,9B,5B,7E,01,9A,06,33,9B,00,13,44,5A,68,01,9B,9B,7D,C3,F1,20,03,22,FA,03,F3,DB,B2,03,F0,01,03,DA,B2,51,4B,1A,70,50,4B,1A,78,4E,4B,18,93,15,23,17,93,13,46,8D,F8,5B,30,9D,F8,5B,30,00,2B,10,D0,18,9B,15,93,17,9B,14,93,15,9B,13,93,14,9B,12,93,01,22,12,9B,02,FA,03,F3,1A,46,13,9B,9A,61,00,BF,10,E0,18,9B,11,93,17,9B,10,93,11,9B,0F,93,10,9B,0E,93,01,22,0E,9B,02,FA,03,F3,1A,46,0F,9B,5A,61,00,BF,00,BF,00,BF,00,BF,2E,E0,01,9B,03,22,1A,70,2A,E0,01,9B,1B,79,00,2B,02,D0,FF,F7,FE,FC,0E,E0,01,9B,5B,7E,01,33,DA,B2,01,9B,5A,76,01,9B,00,22,9A,75,01,9B,00,22,1A,76,01,9B,02,22,1A,70,01,9B,5B,7E,03,2B,0F,D9,01,9B,01,22,1A,75,0B,E0,01,9B,1B,7D,00,2B,08,D0,01,9B,93,F8,2C,30,1B,B2,18,46,FF,F7,9F,FC,00,E0,00,BF,01,9B,5A,7D,1E,4B,0D,93,14,23,0C,93,13,46,8D,F8,2F,30,9D,F8,2F,30,00,2B,10,D0,0D,9B,0A,93,0C,9B,09,93,0A,9B,08,93,09,9B,07,93,01,22,07,9B,02,FA,03,F3,1A,46,08,9B,9A,61,00,BF,10,E0,0D,9B,06,93,0C,9B,05,93,06,9B,04,93,05,9B,03,93,01,22,03,9B,02,FA,03,F3,1A,46,04,9B,5A,61,00,BF,00,BF,00,BF,01,9B,5B,7D,00,2B,0C,BF,01,23,00,23,DB,B2,1A,46,01,9B,5A,75,00,BF,25,B0,5D,F8,04,FB,00,BF,00,80,00,41,44,00,00,20,00,B5,83,B0,01,90,01,9B,02,22,1A,70,01,9B,6D,22,83,F8,2C,20,01,9B,00,22,1A,75,01,9B,0A,22,DA,75,01,9B,01,22,5A,75,01,9B,00,22,1A,76,01,21,1A,20,FF,F7,FE,FA,1A,20,FF,F7,19,FB,2D,20,FF,F7,2A,FB,0E,4A,13,68,6F,F3,83,03,13,60,0C,4B,4F,F6,FF,72,9A,83,0A,4B,01,22,5A,72,08,4A,13,68,43,F0,02,03,13,60,00,BF,06,4B,1B,69,C3,F3,40,03,DB,B2,00,2B,F8,D1,00,BF,00,BF,03,B0,5D,F8,04,FB,00,A0,01,41,00,38,00,40,08,B5,08,4B,9B,7A,DB,B2,03,F0,01,03,01,2B,07,D1,05,4B,1B,68,18,46,FF,F7,A3,FE,02,4B,01,22,9A,72,00,BF,08,BD,00,A0,01,41,04,00,00,20,00,B5,97,B0,6B,46,00,21,0A,46,1A,80,0A,46,9A,70,0F,23,8D,F8,00,30,00,23,8D,F8,02,30,40,4B,07,93,06,23,06,93,6B,46,05,93,07,9B,04,93,06,9B,03,93,04,9B,02,93,03,9B,01,93,01,22,01,9B,02,FA,03,F3,1A,46,02,9B,5A,61,00,BF,00,BF,05,9A,06,99,07,98,00,F0,E0,F9,00,BF,32,4B,0E,93,07,23,0D,93,6B,46,0C,93,0E,9B,0B,93,0D,9B,0A,93,0B,9B,09,93,0A,9B,08,93,01,22,08,9B,02,FA,03,F3,1A,46,09,9B,9A,61,00,BF,00,BF,0C,9A,0D,99,0E,98,00,F0,C3,F9,00,BF,6B,46,1A,46,14,21,22,48,00,F0,BC,F9,6B,46,1A,46,15,21,1F,48,00,F0,B6,F9,1E,4B,15,93,03,23,14,93,6B,46,13,93,15,9B,12,93,14,9B,11,93,12,9B,10,93,11,9B,0F,93,01,22,0F,9B,02,FA,03,F3,1A,46,10,9B,5A,61,00,BF,00,BF,13,9A,14,99,15,98,00,F0,9A,F9,00,BF,0E,23,8D,F8,00,30,6B,46,1A,46,02,21,0C,48,00,F0,90,F9,6B,46,1A,46,05,21,09,48,00,F0,8A,F9,6B,46,1A,46,08,21,06,48,00,F0,84,F9,6B,46,1A,46,18,21,03,48,00,F0,7E,F9,00,BF,17,B0,5D,F8,04,FB,00,80,00,41,80,80,00,41,00,B5,89,B0,04,23,8D,F8,14,30,00,23,8D,F8,18,30,00,23,AD,F8,16,30,05,AB,19,46,03,20,FF,F7,70,F9,03,20,FF,F7,D7,F9,05,AB,19,46,00,20,FF,F7,68,F9,00,20,FF,F7,CF,F9,4D,4B,00,22,1A,77,4C,4B,43,22,C3,F8,80,20,49,4B,4B,4A,9A,62,00,BF,47,4B,93,F8,2C,30,DB,B2,03,F0,10,03,00,2B,F7,D1,43,4B,00,22,83,F8,20,20,00,BF,41,4B,93,F8,2C,30,DB,B2,03,F0,04,03,00,2B,F7,D1,3D,4B,1B,7F,DB,B2,3B,4A,43,F0,02,03,DB,B2,13,77,00,BF,38,4B,93,F8,2C,30,DB,B2,03,F0,02,03,00,2B,F7,D1,34,4B,34,4A,5B,6A,53,62,00,BF,32,4B,93,F8,2C,30,C3,F3,C0,03,DB,B2,00,2B,F7,D1,2E,4B,98,22,83,F8,20,20,00,BF,2B,4B,1B,69,C3,F3,00,23,DB,B2,00,2B,F8,D0,06,23,8D,F8,14,30,00,23,8D,F8,18,30,30,23,AD,F8,16,30,05,AB,19,46,02,20,FF,F7,0D,F9,02,20,FF,F7,74,F9,02,21,01,20,FF,F7,B2,F9,01,20,FF,F7,CD,F9,78,23,03,93,00,23,02,93,00,23,04,93,00,23,01,93,01,AB,18,46,FF,F7,43,FA,07,23,8D,F8,14,30,00,23,8D,F8,18,30,03,23,AD,F8,16,30,05,AB,19,46,01,20,FF,F7,E9,F8,01,20,FF,F7,50,F9,07,23,8D,F8,14,30,00,23,8D,F8,18,30,00,23,AD,F8,16,30,0A,4B,1B,6A,09,4A,43,F4,00,73,13,62,05,AB,19,46,00,20,FF,F7,D2,F8,00,20,FF,F7,39,F9,00,BF,09,B0,5D,F8,04,FB,00,BF,00,10,00,40,00,1C,00,40,00,00,01,04,82,B0,01,90,01,9B,00,22,83,F8,86,22,01,9B,00,22,83,F8,85,22,01,9B,00,22,83,F8,84,22,00,BF,02,B0,70,47,00,B5,83,B0,01,90,01,98,FE,F7,1D,FE,01,98,FF,F7,E6,FF,00,BF,03,B0,5D,F8,04,FB,00,B5,91,B0,00,23,01,93,00,F0,76,F8,01,F0,42,FC,03,46,FE,2B,06,D0,00,F0,F1,FA,03,46,00,2B,01,D1,00,F0,EF,FA,31,4B,1B,68,18,46,FE,F7,B3,FF,01,F0,9B,FB,01,AB,18,46,00,F0,9B,FA,03,46,00,2B,F1,D0,2A,4B,1B,68,18,46,FE,F7,CA,FF,29,4B,1B,78,01,33,DA,B2,27,4B,1A,70,26,4B,1B,78,64,2B,E2,D1,25,4B,0F,93,03,23,0E,93,0F,9B,0D,93,0E,9B,0C,93,0D,9B,0B,93,0C,9B,0A,93,0B,9B,1B,6A,01,21,0A,9A,01,FA,02,F2,13,40,01,21,0A,9A,01,FA,02,F2,93,42,0C,BF,01,23,00,23,DB,B2,00,BF,00,2B,10,D0,0F,9B,09,93,0E,9B,08,93,09,9B,07,93,08,9B,06,93,01,22,06,9B,02,FA,03,F3,1A,46,07,9B,5A,61,00,BF,10,E0,0F,9B,05,93,0E,9B,04,93,05,9B,03,93,04,9B,02,93,01,22,02,9B,02,FA,03,F3,1A,46,03,9B,9A,61,00,BF,00,BF,00,BF,03,4B,00,22,1A,70,9C,E7,00,BF,38,37,00,00,B0,05,00,20,00,80,00,41,08,B5,FF,F7,19,F8,FF,F7,1D,F8,01,F0,CD,FB,00,F0,4D,F9,00,20,00,F0,21,F9,07,4B,1B,68,18,46,FF,F7,AD,FD,01,F0,ED,F9,05,4B,1B,68,18,46,FF,F7,5F,FF,01,F0,80,FA,00,BF,08,BD,04,00,00,20,38,37,00,00,86,B0,03,90,02,91,01,92,01,9B,1B,78,10,2B,06,D1,03,9A,02,9B,13,44,40,33,00,22,1A,70,FA,E0,01,9B,1B,78,0E,2B,43,D1,03,9A,02,9B,13,44,40,33,02,22,1A,70,01,22,02,9B,02,FA,03,F3,1A,46,03,9B,5A,60,01,9B,9B,78,01,2B,16,D1,03,9A,02,9B,13,44,40,33,1B,78,DB,B2,43,F0,04,03,D9,B2,03,9A,02,9B,13,44,40,33,0A,46,1A,70,01,22,02,9B,02,FA,03,F3,1A,46,03,9B,9A,61,CE,E0,01,9B,9B,78,02,2B,40,F0,CA,80,03,9A,02,9B,13,44,40,33,1B,78,DB,B2,43,F0,04,03,D9,B2,03,9A,02,9B,13,44,40,33,0A,46,1A,70,01,22,02,9B,02,FA,03,F3,1A,46,03,9B,5A,61,B2,E0,01,9B,1B,78,0F,2B,20,D1,03,9A,02,9B,13,44,40,33,02,22,1A,70,01,9B,5B,78,00,2B,0E,D0,03,9A,02,9B,13,44,40,33,1B,78,DB,B2,43,F0,40,03,D9,B2,03,9A,02,9B,13,44,40,33,0A,46,1A,70,01,22,02,9B,02,FA,03,F3,1A,46,03,9B,9A,60,8D,E0,02,9B,5B,08,8D,F8,17,30,02,9B,DB,B2,03,F0,01,03,DB,B2,9B,00,8D,F8,16,30,03,9A,02,9B,13,44,40,33,03,22,1A,70,01,9B,5B,78,00,2B,0E,D0,03,9A,02,9B,13,44,40,33,1B,78,DB,B2,43,F0,40,03,D9,B2,03,9A,02,9B,13,44,40,33,0A,46,1A,70,9D,F8,17,30,03,9A,13,44,93,F8,30,30,DB,B2,5A,B2,9D,F8,16,30,0F,21,01,FA,03,F3,5B,B2,DB,43,5B,B2,13,40,5A,B2,9D,F8,17,30,D1,B2,03,9A,13,44,0A,46,83,F8,30,20,9D,F8,17,30,03,9A,13,44,93,F8,30,30,DB,B2,5A,B2,01,9B,1B,78,19,46,9D,F8,16,30,01,FA,03,F3,5B,B2,13,43,5A,B2,9D,F8,17,30,D1,B2,03,9A,13,44,0A,46,83,F8,30,20,01,9B,9B,78,01,2B,16,D1,03,9A,02,9B,13,44,40,33,1B,78,DB,B2,43,F0,04,03,D9,B2,03,9A,02,9B,13,44,40,33,0A,46,1A,70,01,22,02,9B,02,FA,03,F3,1A,46,03,9B,9A,61,19,E0,01,9B,9B,78,02,2B,15,D1,03,9A,02,9B,13,44,40,33,1B,78,DB,B2,43,F0,04,03,D9,B2,03,9A,02,9B,13,44,40,33,0A,46,1A,70,01,22,02,9B,02,FA,03,F3,1A,46,03,9B,5A,61,00,BF,06,B0,70,47,00,B5,83,B0,03,46,8D,F8,07,30,24,20,FE,F7,D3,FF,FF,F7,DF,FC,00,BF,03,B0,5D,F8,04,FB,00,00,82,B0,03,46,AD,F8,06,30,BD,F9,06,30,00,2B,0C,DB,BD,F8,06,30,03,F0,1F,02,05,49,BD,F9,06,30,5B,09,01,20,00,FA,02,F2,41,F8,23,20,00,BF,02,B0,70,47,00,E1,00,E0,08,B5,24,49,4F,F0,00,02,4F,F0,00,03,C1,E9,00,23,01,21,09,20,FE,F7,74,FF,09,20,FE,F7,8F,FF,0E,20,FE,F7,A0,FF,1C,4A,13,68,6F,F3,83,03,13,60,1A,4B,4F,F6,FF,72,9A,83,18,4B,01,22,5A,72,6B,20,FF,F7,C5,FF,15,4A,13,68,43,F0,02,03,13,60,00,BF,12,4B,1B,69,C3,F3,40,03,DB,B2,00,2B,F8,D1,0F,20,FE,F7,81,FF,0E,4A,13,68,6F,F3,83,03,13,60,0B,4B,4F,F6,FF,72,9A,83,09,4A,13,68,43,F0,02,03,13,60,00,BF,06,4B,1B,69,C3,F3,40,03,DB,B2,00,2B,F8,D1,00,BF,00,BF,08,BD,B8,05,00,20,00,38,00,40,00,3C,00,40,00,B5,85,B0,01,90,00,F0,C7,F8,02,46,01,9B,13,44,03,93,00,BF,00,F0,C0,F8,02,46,03,9B,93,42,F9,D8,00,BF,00,BF,05,B0,5D,F8,04,FB,00,00,84,B0,01,90,01,9B,00,2B,72,D0,01,9B,40,F2,65,62,93,42,6F,D8,39,4A,53,79,04,21,61,F3,47,13,53,71,00,BF,36,4B,5B,79,C3,F3,42,13,DB,B2,00,2B,F8,D1,32,4B,9B,8A,9B,B2,AD,F8,0A,30,BD,F8,0A,30,AD,F8,0E,30,01,9B,9B,B2,1A,46,92,00,13,44,DB,00,9A,B2,BD,F8,0E,30,13,44,AD,F8,0C,30,BD,F8,0C,20,BD,F8,0E,30,9A,42,35,D2,12,E0,24,4A,53,79,04,21,61,F3,47,13,53,71,00,BF,21,4B,5B,79,C3,F3,42,13,DB,B2,00,2B,F8,D1,1D,4B,9B,8A,9B,B2,AD,F8,0A,30,BD,F8,0A,30,9B,B2,BD,F8,0C,20,9A,42,E5,D8,BD,F8,0A,30,9B,B2,BD,F8,0E,20,9A,42,DE,D9,24,E0,13,4A,53,79,04,21,61,F3,47,13,53,71,00,BF,10,4B,5B,79,C3,F3,42,13,DB,B2,00,2B,F8,D1,0C,4B,9B,8A,9B,B2,AD,F8,0A,30,BD,F8,0A,30,9B,B2,BD,F8,0E,20,9A,42,0A,D8,BD,F8,0A,30,9B,B2,BD,F8,0C,20,9A,42,DE,D8,02,E0,00,BF,00,E0,00,BF,04,B0,70,47,00,BF,00,3C,00,40,00,B5,85,B0,01,90,00,F0,31,F8,02,90,01,9B,1B,68,02,9A,9A,42,03,D1,00,23,8D,F8,0F,30,02,E0,01,23,8D,F8,0F,30,01,9B,02,9A,1A,60,9D,F8,0F,30,18,46,05,B0,5D,F8,04,FB,00,00,0A,4B,9B,7A,DB,B2,03,F0,01,03,01,2B,0C,D1,08,4B,D3,E9,00,23,12,F5,80,30,43,F1,00,01,04,4B,C3,E9,00,01,02,4B,01,22,9A,72,00,BF,70,47,00,38,00,40,B8,05,00,20,01,4B,1B,68,18,46,70,47,B4,05,00,20,03,4B,1B,68,01,33,02,4A,13,60,00,BF,70,47,00,BF,B4,05,00,20,00,23,18,46,70,47,00,BF,70,47,00,00,00,B5,85,B0,00,93,03,46,8D,F8,07,30,0B,46,8D,F8,06,30,13,46,AD,F8,04,30,01,23,03,93,09,4B,18,68,BD,F8,04,30,9D,F8,06,20,9D,F8,07,10,FF,F7,CE,F9,03,46,1A,46,00,9B,1A,80,03,9B,18,46,05,B0,5D,F8,04,FB,00,BF,04,00,00,20,10,B5,84,B0,04,46,08,46,11,46,1A,46,23,46,8D,F8,0F,30,03,46,8D,F8,0E,30,0B,46,AD,F8,0C,30,13,46,AD,F8,0A,30,08,4B,18,68,BD,F8,0C,40,9D,F8,0E,20,9D,F8,0F,10,BD,F8,0A,30,00,93,23,46,FF,F7,66,F9,01,23,18,46,04,B0,10,BD,04,00,00,20,00,B5,85,B0,03,46,8D,F8,07,30,0B,46,8D,F8,06,30,13,46,8D,F8,05,30,00,23,AD,F8,0E,30,9D,F8,05,30,01,2B,1B,D1,9D,F8,07,00,4F,F4,00,43,4F,F4,10,62,03,21,FF,F7,BF,FF,9D,F8,07,00,4F,F4,00,73,4F,F6,07,22,03,21,FF,F7,B6,FF,9D,F8,07,00,40,F2,42,53,4F,F6,23,42,03,21,FF,F7,AD,FF,9B,E1,9D,F8,06,30,01,2B,40,F0,AF,80,9D,F8,07,00,4F,F4,78,73,4F,F6,03,42,03,21,FF,F7,9E,FF,9D,F8,07,00,00,23,4F,F6,04,42,03,21,FF,F7,96,FF,9D,F8,07,00,40,F2,E1,33,4F,F6,03,42,03,21,FF,F7,8D,FF,9D,F8,07,00,00,23,4F,F6,04,42,03,21,FF,F7,85,FF,9D,F8,07,00,4F,F4,84,63,4F,F6,03,42,03,21,FF,F7,7C,FF,9D,F8,07,00,00,23,4F,F6,04,42,03,21,FF,F7,74,FF,9D,F8,07,00,40,F2,21,43,4F,F6,03,42,03,21,FF,F7,6B,FF,9D,F8,07,00,00,23,4F,F6,04,42,03,21,FF,F7,63,FF,0D,F1,0E,03,9D,F8,07,00,4F,F4,10,62,03,21,FF,F7,36,FF,BD,F8,0E,30,6F,EA,43,43,6F,EA,53,43,9B,B2,AD,F8,0E,30,BD,F8,0E,30,9D,F8,07,00,4F,F4,10,62,03,21,FF,F7,48,FF,01,20,FF,F7,3F,FE,9D,F8,07,00,4F,F4,78,73,4F,F6,03,42,03,21,FF,F7,3C,FF,9D,F8,07,00,99,23,4F,F6,04,42,03,21,FF,F7,34,FF,9D,F8,07,00,40,F2,E1,33,4F,F6,03,42,03,21,FF,F7,2B,FF,9D,F8,07,00,09,23,4F,F6,04,42,03,21,FF,F7,23,FF,9D,F8,07,00,4F,F4,84,63,4F,F6,03,42,03,21,FF,F7,1A,FF,9D,F8,07,00,CC,23,4F,F6,04,42,03,21,FF,F7,12,FF,9D,F8,07,00,40,F2,21,43,4F,F6,03,42,03,21,FF,F7,09,FF,9D,F8,07,00,0C,23,4F,F6,04,42,03,21,FF,F7,01,FF,9D,F8,07,00,0C,23,4F,F6,E4,72,03,21,FF,F7,F9,FE,E7,E0,9D,F8,07,00,03,23,4F,F6,A1,52,03,21,FF,F7,F0,FE,9D,F8,07,00,4F,F4,80,43,4F,F4,10,62,01,21,FF,F7,E7,FE,9D,F8,07,00,40,F2,0F,73,4F,F6,E4,72,03,21,FF,F7,DE,FE,9D,F8,07,00,4F,F4,02,73,4F,F6,03,42,03,21,FF,F7,D5,FE,9D,F8,07,00,00,23,4F,F6,04,42,03,21,FF,F7,CD,FE,9D,F8,07,00,40,F2,21,43,4F,F6,03,42,03,21,FF,F7,C4,FE,9D,F8,07,00,00,23,4F,F6,04,42,03,21,FF,F7,BC,FE,9D,F8,07,00,4F,F4,84,63,4F,F6,03,42,03,21,FF,F7,B3,FE,9D,F8,07,00,00,23,4F,F6,04,42,03,21,FF,F7,AB,FE,9D,F8,07,00,40,F2,E1,33,4F,F6,03,42,03,21,FF,F7,A2,FE,9D,F8,07,00,00,23,4F,F6,04,42,03,21,FF,F7,9A,FE,9D,F8,07,00,4F,F4,78,73,4F,F6,03,42,03,21,FF,F7,91,FE,9D,F8,07,00,00,23,4F,F6,04,42,03,21,FF,F7,89,FE,9D,F8,07,00,4F,F4,00,43,4F,F4,10,62,03,21,FF,F7,80,FE,02,20,FF,F7,77,FD,9D,F8,07,00,4F,F4,02,73,4F,F6,03,42,03,21,FF,F7,74,FE,9D,F8,07,00,03,23,4F,F6,04,42,03,21,FF,F7,6C,FE,9D,F8,07,00,4F,F4,78,73,4F,F6,03,42,03,21,FF,F7,63,FE,9D,F8,07,00,99,23,4F,F6,04,42,03,21,FF,F7,5B,FE,9D,F8,07,00,40,F2,E1,33,4F,F6,03,42,03,21,FF,F7,52,FE,9D,F8,07,00,09,23,4F,F6,04,42,03,21,FF,F7,4A,FE,9D,F8,07,00,4F,F4,84,63,4F,F6,03,42,03,21,FF,F7,41,FE,9D,F8,07,00,CC,23,4F,F6,04,42,03,21,FF,F7,39,FE,9D,F8,07,00,40,F2,21,43,4F,F6,03,42,03,21,FF,F7,30,FE,9D,F8,07,00,0C,23,4F,F6,04,42,03,21,FF,F7,28,FE,9D,F8,07,00,00,23,4F,F4,10,62,01,21,FF,F7,20,FE,9D,F8,07,00,00,23,4F,F6,A1,52,03,21,FF,F7,18,FE,9D,F8,07,00,0C,23,4F,F6,E4,72,03,21,FF,F7,10,FE,00,BF,05,B0,5D,F8,04,FB,00,B5,85,B0,03,46,0A,46,8D,F8,07,30,13,46,8D,F8,06,30,00,23,AD,F8,0E,30,0D,F1,0E,03,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,D3,FD,9D,F8,06,30,00,2B,07,D0,BD,F8,0E,30,43,F4,80,43,9B,B2,AD,F8,0E,30,06,E0,BD,F8,0E,30,23,F4,80,43,9B,B2,AD,F8,0E,30,BD,F8,0E,30,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,DB,FD,00,BF,05,B0,5D,F8,04,FB,00,B5,85,B0,03,46,0A,46,8D,F8,07,30,13,46,8D,F8,06,30,00,23,AD,F8,0E,30,0D,F1,0E,03,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,9E,FD,BD,F8,0E,30,23,F0,0F,03,9B,B2,AD,F8,0E,30,9D,F8,06,30,01,2B,06,D0,BD,F8,0E,30,43,F0,01,03,9B,B2,AD,F8,0E,30,BD,F8,0E,30,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,A7,FD,00,BF,05,B0,5D,F8,04,FB,10,B5,82,B0,04,46,08,46,11,46,1A,46,23,46,8D,F8,07,30,03,46,8D,F8,06,30,0B,46,8D,F8,05,30,13,46,8D,F8,04,30,9D,F8,06,30,03,2B,36,D1,9D,F8,04,30,01,2B,19,D1,9D,F8,07,00,01,23,4F,F6,B8,52,03,21,FF,F7,81,FD,9D,F8,07,00,14,23,4F,F6,3D,52,03,21,FF,F7,79,FD,9D,F8,07,00,40,F2,B2,63,40,F6,02,12,01,21,FF,F7,70,FD,21,E0,9D,F8,07,00,00,23,4F,F6,B8,52,03,21,FF,F7,67,FD,9D,F8,07,00,00,23,4F,F6,3D,52,03,21,FF,F7,5F,FD,9D,F8,07,00,02,23,40,F6,02,12,01,21,FF,F7,57,FD,08,E0,9D,F8,07,00,40,F2,B2,63,40,F6,02,12,01,21,FF,F7,4D,FD,00,BF,02,B0,10,BD,10,B5,8E,B0,04,46,08,46,11,46,1A,46,23,46,8D,F8,07,30,03,46,8D,F8,06,30,0B,46,8D,F8,05,30,13,46,8D,F8,04,30,9F,4B,07,93,07,23,06,93,07,9B,05,93,06,9B,04,93,01,22,04,9B,02,FA,03,F3,1A,46,05,9B,5A,61,00,BF,00,BF,64,20,FF,F7,1E,FC,95,4B,0B,93,07,23,0A,93,0B,9B,09,93,0A,9B,08,93,01,22,08,9B,02,FA,03,F3,1A,46,09,9B,9A,61,00,BF,00,BF,64,20,FF,F7,0A,FC,0D,F1,0E,03,9D,F8,07,00,02,22,01,21,FF,F7,E4,FC,BD,F8,0E,30,1B,04,0D,93,0D,F1,0E,03,9D,F8,07,00,03,22,01,21,FF,F7,D8,FC,BD,F8,0E,30,1A,46,0D,9B,13,43,0D,93,0D,9B,DB,B2,03,F0,0F,03,8D,F8,33,30,0D,F1,0E,03,9D,F8,07,00,00,22,01,21,FF,F7,C4,FC,9D,F8,06,30,00,2B,14,D0,BD,F8,0E,30,23,F4,00,63,9B,B2,AD,F8,0E,30,BD,F8,0E,30,9D,F8,07,00,00,22,01,21,FF,F7,D5,FC,9D,F8,33,30,01,2B,40,F0,D3,81,10,E0,BD,F8,0E,30,43,F4,00,63,9B,B2,AD,F8,0E,30,BD,F8,0E,30,9D,F8,07,00,00,22,01,21,FF,F7,C0,FC,00,F0,0F,BC,9D,F8,04,30,01,2B,40,F0,C3,80,9D,F8,07,00,40,F2,02,23,4F,F6,07,22,03,21,FF,F7,B0,FC,9D,F8,07,00,00,23,4F,F4,00,72,07,21,FF,F7,A8,FC,0D,F1,0E,03,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,7B,FC,BD,F8,0E,30,23,F0,0F,03,9B,B2,AD,F8,0E,30,BD,F8,0E,30,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,8F,FC,9D,F8,07,00,4F,F4,00,43,4F,F4,00,42,03,21,FF,F7,86,FC,9D,F8,07,00,4F,F4,00,73,4F,F4,01,42,03,21,FF,F7,7D,FC,9D,F8,07,00,02,23,4F,F6,1E,22,03,21,FF,F7,75,FC,9D,F8,07,00,42,F2,02,43,4F,F6,5C,62,03,21,FF,F7,6C,FC,9D,F8,07,00,1F,23,4F,F6,12,22,03,21,FF,F7,64,FC,9D,F8,07,00,49,F6,05,63,4F,F6,0C,22,03,21,FF,F7,5B,FC,9D,F8,07,00,46,F6,62,03,4F,F6,DD,32,03,21,FF,F7,52,FC,9D,F8,07,00,47,F2,6E,33,4F,F6,DE,32,03,21,FF,F7,49,FC,9D,F8,07,00,47,F6,79,73,4F,F6,DF,32,03,21,FF,F7,40,FC,9D,F8,07,00,48,F6,85,23,4F,F6,E0,32,03,21,FF,F7,37,FC,9D,F8,07,00,49,F2,90,73,4F,F6,E1,32,03,21,FF,F7,2E,FC,9D,F8,07,00,4A,F2,9D,33,4F,F6,E3,32,03,21,FF,F7,25,FC,9D,F8,07,00,4B,F2,AA,03,4F,F6,E4,32,03,21,FF,F7,1C,FC,9D,F8,07,00,B8,23,4F,F6,E5,32,03,21,FF,F7,14,FC,9D,F8,07,00,40,F6,0A,53,4F,F6,FD,32,03,21,FF,F7,0B,FC,9D,F8,07,00,40,F6,06,13,4F,F6,FE,32,03,21,FF,F7,02,FC,9D,F8,07,00,11,23,48,F2,16,02,03,21,FF,F7,FA,FB,1E,E3,00,BF,00,80,00,41,9D,F8,07,00,40,F2,B6,63,4F,F6,E4,72,03,21,FF,F7,ED,FB,9D,F8,07,00,00,23,4F,F4,00,72,07,21,FF,F7,E5,FB,0D,F1,0E,03,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,B8,FB,BD,F8,0E,30,1B,B2,23,F0,0F,03,1B,B2,43,F0,01,03,1B,B2,9B,B2,AD,F8,0E,30,BD,F8,0E,30,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,C7,FB,9D,F8,07,00,44,F2,2F,03,4F,F6,DE,72,03,21,FF,F7,BE,FB,9D,F8,07,00,64,23,48,F2,32,02,07,21,FF,F7,B6,FB,9D,F8,07,00,40,F6,01,23,48,F2,31,02,07,21,FF,F7,AD,FB,9D,F8,07,00,40,F6,01,43,48,F2,31,02,07,21,FF,F7,A4,FB,9D,F8,07,00,00,23,4F,F6,0F,62,03,21,FF,F7,9C,FB,9D,F8,07,00,00,23,48,F2,0C,02,03,21,FF,F7,94,FB,9D,F8,07,00,43,F6,3D,43,4F,F6,2A,62,03,21,FF,F7,8B,FB,9D,F8,07,00,4F,F4,E0,73,4F,F4,7C,42,03,21,FF,F7,82,FB,9D,F8,07,00,40,F2,25,43,4F,F6,17,42,03,21,FF,F7,79,FB,9D,F8,07,00,45,F2,70,43,4F,F6,94,42,03,21,FF,F7,70,FB,9D,F8,07,00,55,23,4F,F6,95,42,03,21,FF,F7,68,FB,9D,F8,07,00,40,F6,D8,03,4F,F6,19,42,03,21,FF,F7,5F,FB,9D,F8,07,00,4F,F4,88,73,4F,F6,1A,42,03,21,FF,F7,56,FB,9D,F8,07,00,4F,F4,21,63,4F,F6,1B,42,03,21,FF,F7,4D,FB,9D,F8,07,00,42,F2,25,73,4F,F6,3A,42,03,21,FF,F7,44,FB,9D,F8,07,00,42,F2,27,63,4F,F6,61,42,03,21,FF,F7,3B,FB,9D,F8,07,00,41,F2,12,63,4F,F6,3B,42,03,21,FF,F7,32,FB,9D,F8,07,00,41,F6,12,43,4F,F6,62,42,03,21,FF,F7,29,FB,9D,F8,07,00,46,F2,67,33,4F,F6,9D,42,03,21,FF,F7,20,FB,9D,F8,07,00,48,F2,60,03,4F,F6,9E,42,03,21,FF,F7,17,FB,9D,F8,07,00,4F,F4,E4,73,4F,F4,7C,42,03,21,FF,F7,0E,FB,9D,F8,07,00,00,23,4F,F4,00,42,03,21,FF,F7,06,FB,9D,F8,07,00,11,23,48,F2,16,02,03,21,FF,F7,FE,FA,22,E2,9D,F8,33,30,03,2B,40,F0,1E,82,9D,F8,04,30,01,2B,40,F0,DB,80,9D,F8,07,00,00,23,4F,F4,00,42,03,21,FF,F7,EB,FA,9D,F8,07,00,11,23,48,F2,16,02,03,21,FF,F7,E3,FA,9D,F8,07,00,40,F2,02,23,4F,F6,07,22,03,21,FF,F7,DA,FA,9D,F8,07,00,00,23,4F,F4,00,72,07,21,FF,F7,D2,FA,0D,F1,0E,03,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,A5,FA,BD,F8,0E,30,23,F0,0F,03,9B,B2,AD,F8,0E,30,BD,F8,0E,30,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,B9,FA,05,20,FF,F7,B0,F9,9D,F8,07,00,00,23,4F,F4,00,42,03,21,FF,F7,AE,FA,9D,F8,07,00,4F,F4,00,73,4F,F4,01,42,03,21,FF,F7,A5,FA,9D,F8,07,00,02,23,4F,F6,1E,22,03,21,FF,F7,9D,FA,9D,F8,07,00,42,F2,02,43,4F,F6,5C,62,03,21,FF,F7,94,FA,9D,F8,07,00,1F,23,4F,F6,12,22,03,21,FF,F7,8C,FA,9D,F8,07,00,49,F6,05,63,4F,F6,0C,22,03,21,FF,F7,83,FA,9D,F8,07,00,46,F6,62,03,4F,F6,DD,32,03,21,FF,F7,7A,FA,9D,F8,07,00,47,F2,6E,33,4F,F6,DE,32,03,21,FF,F7,71,FA,9D,F8,07,00,47,F6,79,73,4F,F6,DF,32,03,21,FF,F7,68,FA,9D,F8,07,00,48,F6,85,23,4F,F6,E0,32,03,21,FF,F7,5F,FA,9D,F8,07,00,49,F2,90,73,4F,F6,E1,32,03,21,FF,F7,56,FA,9D,F8,07,00,4A,F2,9D,33,4F,F6,E3,32,03,21,FF,F7,4D,FA,9D,F8,07,00,4B,F2,AA,03,4F,F6,E4,32,03,21,FF,F7,44,FA,9D,F8,07,00,B8,23,4F,F6,E5,32,03,21,FF,F7,3C,FA,9D,F8,07,00,40,F6,0A,53,4F,F6,FD,32,03,21,FF,F7,33,FA,9D,F8,07,00,40,F6,06,13,4F,F6,FE,32,03,21,FF,F7,2A,FA,9D,F8,07,00,11,23,48,F2,16,02,03,21,FF,F7,22,FA,9D,F8,07,00,4F,F4,00,63,48,F2,1D,02,03,21,FF,F7,19,FA,3D,E1,9D,F8,07,00,4F,F4,80,43,4F,F4,10,62,01,21,FF,F7,0F,FA,9D,F8,07,00,40,F2,B5,73,4F,F6,E4,72,03,21,FF,F7,06,FA,9D,F8,07,00,40,F2,B6,63,4F,F6,E4,72,03,21,FF,F7,FD,F9,9D,F8,07,00,00,23,4F,F4,00,72,07,21,FF,F7,F5,F9,0D,F1,0E,03,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,C8,F9,BD,F8,0E,30,1B,B2,23,F0,0F,03,1B,B2,43,F0,01,03,1B,B2,9B,B2,AD,F8,0E,30,BD,F8,0E,30,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,D7,F9,05,20,FF,F7,CE,F8,9D,F8,07,00,44,F2,2F,03,4F,F6,DE,72,03,21,FF,F7,CB,F9,9D,F8,07,00,64,23,48,F2,32,02,07,21,FF,F7,C3,F9,9D,F8,07,00,40,F6,01,23,48,F2,31,02,07,21,FF,F7,BA,F9,9D,F8,07,00,40,F6,01,43,48,F2,31,02,07,21,FF,F7,B1,F9,9D,F8,07,00,00,23,4F,F6,0F,62,03,21,FF,F7,A9,F9,9D,F8,07,00,00,23,48,F2,0C,02,03,21,FF,F7,A1,F9,9D,F8,07,00,43,F6,3D,43,4F,F6,2A,62,03,21,FF,F7,98,F9,9D,F8,07,00,4F,F4,00,63,48,F2,1D,02,03,21,FF,F7,8F,F9,9D,F8,07,00,4F,F4,E0,73,4F,F4,7C,42,03,21,FF,F7,86,F9,9D,F8,07,00,40,F2,25,43,4F,F6,17,42,03,21,FF,F7,7D,F9,9D,F8,07,00,45,F2,70,43,4F,F6,94,42,03,21,FF,F7,74,F9,9D,F8,07,00,55,23,4F,F6,95,42,03,21,FF,F7,6C,F9,9D,F8,07,00,40,F6,D8,03,4F,F6,19,42,03,21,FF,F7,63,F9,9D,F8,07,00,4F,F4,88,73,4F,F6,1A,42,03,21,FF,F7,5A,F9,9D,F8,07,00,4F,F4,21,63,4F,F6,1B,42,03,21,FF,F7,51,F9,9D,F8,07,00,42,F2,25,73,4F,F6,3A,42,03,21,FF,F7,48,F9,9D,F8,07,00,42,F2,27,63,4F,F6,61,42,03,21,FF,F7,3F,F9,9D,F8,07,00,41,F2,12,63,4F,F6,3B,42,03,21,FF,F7,36,F9,9D,F8,07,00,41,F6,12,43,4F,F6,62,42,03,21,FF,F7,2D,F9,9D,F8,07,00,46,F2,67,33,4F,F6,9D,42,03,21,FF,F7,24,F9,9D,F8,07,00,48,F2,60,03,4F,F6,9E,42,03,21,FF,F7,1B,F9,9D,F8,07,00,4F,F4,E4,73,4F,F4,7C,42,03,21,FF,F7,12,F9,9D,F8,07,00,00,23,4F,F4,00,42,03,21,FF,F7,0A,F9,9D,F8,07,00,11,23,03,22,03,21,FF,F7,03,F9,9D,F8,07,00,4F,F4,C0,53,4F,F6,A3,52,03,21,FF,F7,FA,F8,9D,F8,07,00,C0,23,4F,F6,02,62,03,21,FF,F7,F2,F8,9D,F8,07,00,10,23,4F,F6,DB,72,03,21,FF,F7,EA,F8,9D,F8,07,00,20,23,4F,F6,F3,72,03,21,FF,F7,E2,F8,9D,F8,07,00,A6,23,4F,F6,40,62,03,21,FF,F7,DA,F8,9D,F8,05,30,01,2B,06,D1,9D,F8,07,30,01,21,18,46,FF,F7,C4,FA,05,E0,9D,F8,07,30,00,21,18,46,FF,F7,BD,FA,9D,F8,04,20,9D,F8,07,30,11,46,18,46,FF,F7,EA,FA,9D,F8,04,20,9D,F8,33,10,9D,F8,07,00,00,23,FF,F7,15,FB,9D,F8,04,20,9D,F8,33,10,9D,F8,07,30,18,46,FF,F7,D5,F8,0E,B0,10,BD,00,BF,08,B5,02,23,01,22,01,21,00,20,FF,F7,5B,FB,00,BF,08,BD,00,00,82,B0,03,46,AD,F8,06,30,BD,F9,06,30,00,2B,0C,DB,BD,F8,06,30,03,F0,1F,02,05,49,BD,F9,06,30,5B,09,01,20,00,FA,02,F2,41,F8,23,20,00,BF,02,B0,70,47,00,E1,00,E0,84,B0,02,92,01,93,03,46,8D,F8,0F,30,0B,46,8D,F8,0E,30,9D,F8,0F,30,5B,08,DB,B2,50,2B,06,D1,9D,F8,0E,30,0A,4A,D2,5C,02,9B,1A,70,0C,E0,9D,F8,0F,30,5B,08,DB,B2,56,2B,06,D1,9D,F8,0E,30,04,4A,D3,5C,DA,B2,02,9B,1A,70,00,BF,04,B0,70,47,C0,05,00,20,C4,07,00,20,82,B0,00,93,03,46,8D,F8,07,30,0B,46,8D,F8,06,30,13,46,8D,F8,05,30,9D,F8,07,30,5B,08,DB,B2,56,2B,0B,D1,9D,F8,06,30,06,49,9D,F8,05,20,CA,54,05,4B,1B,78,01,33,DA,B2,03,4B,1A,70,00,BF,02,B0,70,47,C4,07,00,20,D0,07,00,20,82,B0,03,46,0A,46,8D,F8,07,30,13,46,8D,F8,06,30,9D,F8,07,30,5B,08,DB,B2,56,2B,0E,D1,0A,4B,1B,78,02,2B,05,D8,09,4A,13,7A,43,F0,04,03,13,72,04,E0,06,4A,13,7A,43,F0,20,03,13,72,03,4B,00,22,1A,70,00,BF,02,B0,70,47,00,BF,D0,07,00,20,C4,07,00,20,00,B5,83,B0,3C,4B,1B,68,3C,4A,C3,F8,A0,22,3A,4B,1B,68,3B,4A,C3,F8,A4,22,37,4B,1B,68,39,4A,C3,F8,A8,22,35,4B,1B,68,50,22,83,F8,AE,22,32,4B,1B,68,56,22,83,F8,AF,22,34,4B,03,22,1A,70,32,4B,04,22,5A,70,31,4B,80,22,9A,70,08,22,00,21,2F,48,00,F0,0F,FB,2D,4B,00,22,DA,72,2B,4B,01,22,1A,73,2A,4B,00,22,1A,74,28,4B,00,22,5A,74,27,4B,00,22,DA,73,25,4B,00,22,9A,73,24,4B,0A,22,9A,74,11,22,24,49,24,48,00,F0,1F,F9,03,22,00,21,23,48,00,F0,1A,F9,11,22,22,49,22,48,00,F0,15,F9,04,22,21,49,22,48,00,F0,10,F9,07,22,21,49,21,48,00,F0,0B,F9,20,22,FF,21,20,48,00,F0,DC,FA,1F,4B,00,22,1A,70,1E,4B,00,22,5A,70,1C,4B,00,22,9A,70,1B,4B,00,22,DA,70,19,4B,00,22,1A,71,08,4B,1B,68,B3,F9,92,32,AD,F8,06,30,BD,F9,06,30,18,46,FF,F7,FA,FE,00,BF,00,BF,03,B0,5D,F8,04,FB,00,BF,38,37,00,00,71,2F,00,00,C5,2F,00,00,0D,30,00,00,C0,05,00,20,C3,05,00,20,40,37,00,00,D4,05,00,20,E5,05,00,20,54,37,00,00,E8,05,00,20,68,37,00,00,F8,05,00,20,6C,37,00,00,16,06,00,20,22,06,00,20,C4,07,00,20,00,B5,87,B0,47,4B,9B,68,C3,F3,40,13,DB,B2,00,2B,3E,D0,44,4B,1B,78,8D,F8,17,30,42,4B,5B,78,DB,B2,9B,B2,1B,02,9A,B2,3F,4B,9B,78,DB,B2,9B,B2,13,44,AD,F8,14,30,3B,4B,DB,78,DB,B2,9B,B2,1B,02,9A,B2,38,4B,1B,79,DB,B2,9B,B2,13,44,AD,F8,12,30,35,4A,13,7A,43,F0,40,03,13,72,32,4A,13,7A,6F,F3,45,13,13,72,31,4B,18,68,BD,F8,14,10,9D,F8,17,20,BD,F8,12,30,00,93,0B,46,00,21,FE,F7,BC,F8,29,4A,13,7A,6F,F3,86,13,13,72,27,4A,13,7A,43,F0,80,03,13,72,24,4B,9B,68,C3,F3,80,03,DB,B2,00,2B,3D,D0,21,4B,1B,78,8D,F8,11,30,1F,4B,5B,78,DB,B2,9B,B2,1B,02,9A,B2,1C,4B,9B,78,DB,B2,9B,B2,13,44,AD,F8,0E,30,18,4A,13,7A,43,F0,08,03,13,72,17,4B,18,68,BD,F8,0E,30,9D,F8,11,20,00,21,FE,F7,C8,F8,03,46,AD,F8,0C,30,10,4A,13,7A,43,F0,08,03,13,72,0D,4A,13,7A,6F,F3,82,03,13,72,0B,4B,00,22,DA,70,BD,F8,0C,30,DA,B2,08,4B,1A,71,07,4A,13,7A,6F,F3,C3,03,13,72,04,4A,13,7A,43,F0,10,03,13,72,00,BF,07,B0,5D,F8,04,FB,00,BF,C4,07,00,20,04,00,00,20,01,4B,1B,78,18,46,70,47,D1,07,00,20,08,B5,49,20,FD,F7,30,FD,0C,4A,13,68,43,F0,01,03,13,60,00,BF,09,4B,1B,68,C3,F3,00,03,DB,B2,00,2B,F8,D1,06,4A,13,68,43,F4,00,63,13,60,00,BF,04,4B,03,22,83,F8,32,20,00,BF,08,BD,00,BF,00,24,00,42,D4,07,00,20,00,00,00,00,00,00,00,00,00,00,00,00,00,2A,08,BF,70,47,84,46,01,F0,03,03,43,EA,8C,03,03,F0,0F,03,0F,F2,18,0C,0C,EB,83,03,84,46,D3,F8,00,F0,00,BF,AF,F3,00,80,AF,F3,00,80,AF,F3,00,80,BF,33,00,00,67,35,00,00,53,35,00,00,13,36,00,00,21,36,00,00,9F,33,00,00,75,35,00,00,3D,34,00,00,4B,34,00,00,F7,35,00,00,AD,33,00,00,83,35,00,00,91,35,00,00,45,35,00,00,05,36,00,00,91,33,00,00,11,F8,01,3B,0C,F8,01,3B,01,3A,10,D1,70,47,11,F8,01,3B,0C,F8,01,3B,01,3A,08,BF,70,47,02,2A,F6,D3,31,F8,02,3B,2C,F8,02,3B,02,3A,08,BF,70,47,20,3A,09,D3,2D,E9,F0,07,B1,E8,F8,07,AC,E8,F8,07,20,3A,F9,D2,BD,E8,F0,07,20,32,08,BF,70,47,4F,EA,92,03,C3,F1,07,03,4F,EA,C3,03,9F,44,00,BF,51,F8,04,3B,4C,F8,04,3B,51,F8,04,3B,4C,F8,04,3B,51,F8,04,3B,4C,F8,04,3B,51,F8,04,3B,4C,F8,04,3B,51,F8,04,3B,4C,F8,04,3B,51,F8,04,3B,4C,F8,04,3B,51,F8,04,3B,4C,F8,04,3B,D2,07,24,BF,31,F8,02,3B,2C,F8,02,3B,44,BF,11,F8,01,3B,0C,F8,01,3B,70,47,11,F8,01,3B,0C,F8,01,3B,01,3A,08,BF,70,47,20,3A,2B,D3,2D,E9,F0,07,B1,E8,F8,07,2C,F8,02,3B,4F,EA,13,43,43,EA,04,43,4F,EA,14,44,44,EA,05,44,4F,EA,15,45,45,EA,06,45,4F,EA,16,46,46,EA,07,46,4F,EA,17,47,47,EA,08,47,4F,EA,18,48,48,EA,09,48,4F,EA,19,49,49,EA,0A,49,AC,E8,F8,03,4F,EA,1A,4A,2C,F8,02,AB,20,3A,D7,D2,BD,E8,F0,07,20,32,08,BF,70,47,4F,EA,52,03,C3,F1,0F,03,4F,EA,C3,03,9F,44,00,BF,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,12,F0,01,0F,1C,BF,11,F8,01,3B,0C,F8,01,3B,70,47,11,F8,01,3B,0C,F8,01,3B,01,3A,08,BF,70,47,02,2A,F6,D3,31,F8,02,3B,2C,F8,02,3B,02,3A,7F,F4,73,AF,70,47,11,F8,01,3B,0C,F8,01,3B,01,3A,08,BF,70,47,11,F8,01,3B,0C,F8,01,3B,01,3A,08,BF,70,47,11,F8,01,3B,0C,F8,01,3B,01,3A,08,BF,70,47,20,3A,77,D3,2D,E9,F0,07,B1,E8,F8,07,0C,F8,01,3B,4F,EA,13,23,43,EA,04,63,4F,EA,14,24,44,EA,05,64,4F,EA,15,25,45,EA,06,65,4F,EA,16,26,46,EA,07,66,4F,EA,17,27,47,EA,08,67,4F,EA,18,28,48,EA,09,68,4F,EA,19,29,49,EA,0A,69,AC,E8,F8,03,4F,EA,1A,2A,2C,F8,02,AB,4F,EA,1A,4A,0C,F8,01,AB,20,3A,D3,D2,BD,E8,F0,07,46,E0,11,F8,01,3B,0C,F8,01,3B,01,3A,08,BF,70,47,11,F8,01,3B,0C,F8,01,3B,01,3A,08,BF,70,47,11,F8,01,3B,0C,F8,01,3B,01,3A,08,BF,70,47,20,3A,2F,D3,2D,E9,F0,07,B1,E8,F8,07,0C,F8,01,3B,4F,EA,13,23,2C,F8,02,3B,4F,EA,13,43,43,EA,04,23,4F,EA,14,64,44,EA,05,24,4F,EA,15,65,45,EA,06,25,4F,EA,16,66,46,EA,07,26,4F,EA,17,67,47,EA,08,27,4F,EA,18,68,48,EA,09,28,4F,EA,19,69,49,EA,0A,29,AC,E8,F8,03,4F,EA,1A,6A,0C,F8,01,AB,20,3A,D3,D2,BD,E8,F0,07,20,32,08,BF,70,47,04,3A,0F,D3,51,F8,04,3B,0C,F8,01,3B,4F,EA,13,23,2C,F8,02,3B,4F,EA,13,43,0C,F8,01,3B,08,BF,70,47,04,3A,EF,D2,D2,07,21,BF,31,F8,02,3B,0C,F8,01,3B,1B,0A,0C,F8,01,3B,44,BF,0B,78,8C,F8,00,30,70,47,00,BF,84,46,00,2A,2D,D0,10,F0,03,0F,04,D0,00,F8,01,1B,01,3A,26,D0,F7,E7,C9,B2,41,EA,01,21,41,EA,01,41,20,2A,12,D3,A2,F1,20,02,2D,E9,F0,03,0B,46,0C,46,0D,46,0E,46,0F,46,88,46,89,46,A0,E8,FA,03,20,3A,FB,D2,BD,E8,F0,03,20,32,0B,D0,04,2A,05,D3,40,F8,04,1B,04,3A,05,D0,04,2A,F9,D2,00,F8,01,1B,01,3A,FB,D1,60,46,70,47,00,00,75,02,00,00,48,00,00,20,FC,02,00,20,49,6E,74,72,65,70,69,64,43,53,20,20,20,20,20,20,00,00,00,00,31,30,30,30,42,41,53,45,2D,54,31,20,53,46,50,20,00,00,00,00,30,2E,31,00,32,30,30,35,31,32,00,00,00,6C,DC,02,0C,00,00,20,32,30,30,35,31,32,00,00,00,6C,DC,02,0C,00,00,20,32,30,30,35,31,32,00,00,00,6C,DC,02,0C,00,00,20,32,30,30,35,31,32,00,00,00,6C,DC,02,0C,00,00,20 + net115 + 128 + 1 + False + + + + + out36 + + + Set SFP Module ICS Bootloader I2C3 + out36 + 01C + 01 + net115 + 0 + 1 + 1 + False + + + + + out5 + + + Set SFP Module ICS Main App I2C3 + out5 + 057 + 21 + net115 + 0 + 1 + 1 + False + + + + + out6 + + + Set SFP Module ICS Erase I2C3 + out6 + 057 + 20 + net115 + 0 + 1 + 1 + False + + + + + out8 + + + Set SFP Module ICS Flash Init I2C3 + out8 + 057 + 17 + net115 + 0 + 1 + 1 + False + + + + + out12 + + + Set SFP Module ICS Flash Start I2C3 + out12 + 057 + 18 + net115 + 0 + 1 + 1 + False + + + + + out11 + + + Set SFP Module ICS Reset Bootloader I2C3 + out11 + 057 + 15 + net115 + 0 + 1 + 1 + False + + + + + out14 + + + Set SFP Module ICS Get/Clear Error I2C3 + out14 + 057 + 28 + net115 + 0 + 1 + 1 + False + + + + + out16 + + + 2112 PHY Request ID1 Reg I2C3 + out16 + 40 + L,21,00,02 + net115 + 0 + 3 + 1 + False + + + + + out7 + + + 2112 PHY Request ID2 Reg I2C3 + out7 + 40 + L,21,00,03 + net115 + 0 + 3 + 1 + False + + + + + out18 + + + 2112 PHY Read Reg (2 Bytes) I2C3 + out18 + 40 + 00 + 2B + net115 + 2 + 0 + 1 + False + + + MainAppReadReg + sig0 + 1 + {Raw Value}|0,1,0,16 + 255 + 0 + 43 + True + 16 + 4 + + + + + + + out15 + + + Get SFP Module ICS Phy Fw Vers I2C3 + out15 + 01C + 08 + D5 + net115 + 2 + 1 + 1 + False + + + FwVersionMajor + sig0 + 1 + {Raw Value}|0,1,0,8 + 255 + 0 + 254 + True + 8 + 4 + + + FwVersionMinor + sig1 + 1 + {Raw Value}|0,1,8,8 + 255 + 0 + 0 + 233 + True + 8 + 8 + 4 + + + + + + + out26 + + + Read SFP MSA I2C3 + out26 + 050 + 00 + 03 + 04 + AF + 00 + 00 + 00 + L,00,00,00,00,00,00,0A,00,00,00,00,00,0A,00,49,6E,74,72,65,70,69,64,43,53,20,20,20,20,20,20,00,00,FC,70,53,46,50,2D,4D,56,32,32,32,31,4D,2D,42,31,20,20,41,20,20,20,00,00,00,EC,00,02,00,00,53,32,30,30,30,31,20,20,20,20,20,20,20,20,20,20,32,32,31,30,31,34,41,46,00,00,00,00,56,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,AA + net115 + 128 + 1 + 1 + False + + + SFP_MSA(1B:20B) + sig2 + 1 + {Raw Value}|0,1,0,160 + 65535 + 0 + 0 + True + 160 + 4 + + + SFP_MSA_VENDOR_NAME_ICS + sig3 + 1 + {Raw Value}|0,1,160,16 + 65535 + 0 + 18798 + True + 160 + 16 + 4 + + + SFP_MSA_VENDOR_NAME_ICS2 + sig12 + 1 + {Raw Value}|0,1,176,16 + 65535 + 0 + 29810 + True + 176 + 16 + 4 + + + SFP_MSA_VENDOR_NAME_ICS3 + sig13 + 1 + {Raw Value}|0,1,192,16 + 65535 + 0 + 25968 + True + 192 + 16 + 4 + + + SFP_MSA_VENDOR_NAME_ICS4 + sig14 + 1 + {Raw Value}|0,1,208,16 + 65535 + 0 + 26980 + True + 208 + 16 + 4 + + + SFP_MSA_VENDOR_NAME_ICS5 + sig15 + 1 + {Raw Value}|0,1,224,16 + 65535 + 0 + 17235 + True + 224 + 16 + 4 + + + SFP_MSA_VENDOR_NAME_RESERVED + sig11 + 1 + {Raw Value}|0,1,240,48 + 281474976710655 + 0 + 35322350018592 + True + 240 + 48 + 4 + + + SFP_MSA(37B:64B) + sig4 + 1 + {Raw Value}|0,1,288,224 + 4194303 + 0 + 0 + True + 288 + 224 + 4 + + + SFP_MSA(65B:68B) + sig5 + 1 + {Raw Value}|0,1,512,32 + 4294967295 + 0 + 0 + True + 512 + 32 + 4 + + + SFP_MSA_SN_UPPER(69B:70B) + sig16 + 1 + {Raw Value}|0,1,544,16 + 65535 + 0 + 21298 + True + 544 + 16 + 4 + + + SFP_MSA(71B:96B) + sig17 + 1 + {Raw Value}|0,1,560,208 + 65535 + 0 + 77435533476864213443218424136197467502545128901830480224059460 + True + 560 + 208 + 4 + + + SFP_MSA_VENDOR_SPEC_MDIO_ADDR + sig6 + 1 + {Raw Value}|0,1,768,8 + 255 + 0 + 86 + True + 768 + 8 + 4 + + + SFP_MSA_VENDOR_SPEC_SETTINGS + sig7 + 1 + {Raw Value}|0,1,776,8 + 255 + 0 + 254 + True + 776 + 8 + 4 + + + SFP_MSA_VENDOR_SPEC_RESERVED + sig8 + 1 + {Raw Value}|0,1,784,224 + 4194303 + 0 + -9223372036854775808 + True + 784 + 224 + 4 + + + SFP_MSA_VENDOR_SPEC_BL_FLAG + sig9 + 1 + {Raw Value}|0,1,1008,8 + 255 + 0 + 255 + True + 1008 + 8 + 4 + + + SFP_MSA_VENDOR_SPEC_OVERRIDE_FLAGS + sig10 + 1 + {Raw Value}|0,1,1016,8 + 255 + 0 + 251 + True + 1016 + 8 + 4 + + + + + + + out23 + + + Read SFP MSA I2C2 + out23 + 050 + 00 + 03 + 04 + AF + 00 + 00 + 00 + L,00,00,00,00,00,00,0A,00,00,00,00,00,0A,00,00,00,00,00,00,00,00,00,00,00,20,20,20,20,20,20,00,00,FC,70,53,46,50,2D,4D,56,32,31,31,32,2D,41,32,20,20,20,42,20,20,20,00,00,00,EC,00,02,00,00,53,31,30,30,30,31,20,20,20,20,20,20,20,20,20,20,32,32,31,30,31,34,41,46,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 + net114 + 128 + 1 + 1 + False + + + SFP_MSA(1B:20B) + sig2 + 1 + {Raw Value}|0,1,0,160 + 65535 + 0 + 17231419943303699108428733689618054238869391872 + True + 160 + 4 + + + SFP_MSA_VENDOR_NAME_ICS + sig3 + 1 + {Raw Value}|0,1,160,16 + 65535 + 0 + 18798 + True + 160 + 16 + 4 + + + SFP_MSA_VENDOR_NAME_ICS2 + sig12 + 1 + {Raw Value}|0,1,176,16 + 65535 + 0 + 29810 + True + 176 + 16 + 4 + + + SFP_MSA_VENDOR_NAME_ICS3 + sig13 + 1 + {Raw Value}|0,1,192,16 + 65535 + 0 + 25968 + True + 192 + 16 + 4 + + + SFP_MSA_VENDOR_NAME_ICS4 + sig14 + 1 + {Raw Value}|0,1,208,16 + 65535 + 0 + 26980 + True + 208 + 16 + 4 + + + SFP_MSA_VENDOR_NAME_ICS5 + sig15 + 1 + {Raw Value}|0,1,224,16 + 65535 + 0 + 17235 + True + 224 + 16 + 4 + + + SFP_MSA_VENDOR_NAME_RESERVED + sig11 + 1 + {Raw Value}|0,1,240,48 + 281474976710655 + 0 + 35322350018592 + True + 240 + 48 + 4 + + + SFP_MSA(37B:64B) + sig14 + 1 + {Raw Value}|0,1,288,224 + 4194303 + 0 + 405653464436372881491534628925721847044747819351996017647026216 + True + 288 + 224 + 4 + + + SFP_MSA(65B:68B) + sig15 + 1 + {Raw Value}|0,1,512,32 + 4294967295 + 0 + 131072 + True + 512 + 32 + 4 + + + SFP_MSA_SN_UPPER(69B:70B) + sig16 + 1 + {Raw Value}|0,1,544,16 + 65535 + 0 + 21298 + True + 544 + 16 + 4 + + + SFP_MSA(71B:96B) + sig17 + 1 + {Raw Value}|0,1,560,208 + 65535 + 0 + 77435509340059444805468904992231789885175486906689305832325191 + True + 560 + 208 + 4 + + + SFP_MSA_VENDOR_SPEC_MDIO_ADDR + sig6 + 1 + {Raw Value}|0,1,768,8 + 255 + 0 + 255 + True + 768 + 8 + 4 + + + SFP_MSA_VENDOR_SPEC_SETTINGS + sig7 + 1 + {Raw Value}|0,1,776,8 + 255 + 0 + 223 + True + 776 + 8 + 4 + + + SFP_MSA_VENDOR_SPEC_RESERVED + sig8 + 1 + {Raw Value}|0,1,784,224 + 4194303 + 0 + 3544952311223693312 + True + 784 + 224 + 4 + + + SFP_MSA_VENDOR_SPEC_BL_FLAG + sig9 + 1 + {Raw Value}|0,1,1008,8 + 255 + 0 + 170 + True + 1008 + 8 + 4 + + + SFP_MSA_VENDOR_SPEC_OVERRIDE_FLAGS + sig10 + 1 + {Raw Value}|0,1,1016,8 + 255 + 0 + 251 + True + 1016 + 8 + 4 + + + + + + + out19 + + + SFP Check Status I2C2 + out19 + 057 + 00 + net114 + 1 + 1 + 1 + False + + + StatusReg + sig9 + 1 + {Raw Value}|0,0,0,8 + 0 + 255 + 0 + False + 0 + True + 8 + False + 4 + + + + + + + out21 + + + SFP Send Firmware 16 I2C2 + out21 + 057 + 14 + L,36,3E,13,72,5E,C5,72,80,11,5D,B7,BD,68,AA,0D,D3,1D,01,FE,3C,FC,F7,A7,34,0D,46,D0,99,13,B7,9E,F8,79,0A,C9,FC,05,FA,AF,3D,AA,F2,FE,F1,B2,CC,88,D2,CD,F4,EE,A2,12,10,36,46,B3,BA,39,03,A6,00,7E,48,FB,68,9B,45,96,77,AB,9B,78,7B,1F,ED,97,6A,60,49,AC,64,BE,81,8D,11,48,3A,3D,B1,6A,96,E2,42,15,8D,77,EB,B7,4B,5C,FC,4D,D3,69,F7,99,76,23,3D,A2,79,D3,99,06,06,0F,B7,05,0D,71,E6,C8,D3,A1,F9,23,73,91,26,D8,38,ED,7F,6A,0D,BD,8D,5A,C8,99,37,6F,5F,75,E9,F6,47,E1,A4,EE,AB,AE,75,47,7A,73,09,B3,6B,F0,0C,B2,EF,74,9D,03,AA,06,40,FC,BC,44,A9,CF,47,C8,42,63,C8,00,0F,89,58,C6,AF,3D,6A,0E,8D,5C,F7,A1,3C,BE,60,6C,82,F6,BB,97,AC,09,9F,FE,92,7A,39,3A,D5,E5,80,28,13,FB,1C,D8,2E,64,59,D5,77,C3,EF,45,9A,17,9E,EA,EE,6D,DC,21,E0,77,19,D8,41,09,1A,2F,64,B5,B8,B4,8D,E9,5C,21,3A,F2,3F,58,B5,78,4B,7B,74,18,5E,FC,F0,2F,E5,77,14,89,0E,8B,F9,13,2D,A3,E8,7C,A0,5F,1C,9F,F8,D5,00,18,D7,B8,D5,91,D2,5E,86,C1,7C,C7,6F,59,DC,4D,50,40,00,3B,D6,32,F6,51,69,C7,CA,DD,20,EA,D8,C1,7E,28,7B,DA,B2,74,9C,BC,38,14,CF,40,CD,F5,DD,0F,59,F9,40,A4,90,9A,DE,E9,FF,C3,8F,28,EB,A3,8F,50,61,18,6C,7A,A2,68,AA,74,69,D8,8E,D2,E2,39,83,A0,BA,AC,56,7C,34,35,B2,A1,F1,BA,3F,77,A3,30,C6,3A,6E,40,87,C9,A6,28,65,AD,49,F4,FF,24,F2,AB,A1,D5,04,1B,3D,55,A2,D7,C8,0E,31,F9,5F,85,54,38,07,3C,A5,7A,6E,B8,60,8F,14,1B,3D,13,49,BD,00,F7,9A,EE,69,A2,FB,9E,D4,80,4C,C7,57,5D,15,9E,C4,2D,2B,90,3D,CB,FC,A3,D2,2C,14,80,00,32,58,8D,9A,05,2A,55,CC,19,17,DB,4E,EF,13,8F,13,CE,1E,94,C5,37,B4,BF,90,16,6D,8A,79,92,A6,65,A9,97,2D,5E,EB,1E,44,B2,3C,5D,66,F8,8C,3C,36,F9,2B,30,FB,BA,17,7A,34,6F,D1,DE,04,74,9C,22,C9,04,C0,0C,B1,00,F1,04,00,00,F3,04,00,00,F5,04,00,00,F7,04,00,00,23,04,00,00,F9,04,00,00,FB,04,00,00,FD,04,00,00,FF,04,00,00,23,04,00,00,01,05,00,00,03,05,00,00,02,4B,03,4A,1A,60,00,BF,70,47,00,BF,00,00,00,20,00,6C,DC,02,02,4B,03,4A,1A,60,00,BF,70,47,00,BF,00,00,00,20,00,6C,DC,02,34,49,35,48,0A,1A,02,D0,07,22,91,43,8D,46,33,49,33,48,0A,1A,06,D0,07,22,91,43,81,F3,09,88,02,22,82,F3,14,88,2F,48,30,49,30,4A,00,F0,42,F8,30,48,30,49,31,4A,00,F0,3D,F8,30,48,31,49,31,4A,00,F0,38,F8,31,48,31,49,32,4A,00,F0,33,F8,31,48,32,49,32,4A,00,F0,2E,F8,32,48,32,49,33,4A,00,F0,29,F8,32,48,33,49,33,4A,00,F0,24,F8,33,48,33,49,00,22,00,F0,2A,F8,32,48,33,49,00,22,00,F0,25,F8,32,48,32,49,09,1A,08,29,02,DB,00,22,02,60,41,60,1F,48,1F,49,88,42,05,D0,02,68,04,30,03,B4,90,47,03,BC,F7,E7,00,20,86,46,EC,46,00,20,00,21,28,4A,90,47,FE,E7,88,42,07,D0,52,1A,05,D0,03,78,01,30,0B,70,01,31,01,3A,F9,D1,70,47,88,42,02,D0,02,70,01,30,FA,E7,70,47,08,0A,00,20,08,09,00,20,08,0A,00,20,08,0A,00,20,74,37,00,00,00,00,00,20,08,00,00,20,04,05,00,00,04,05,00,00,32,37,00,00,74,37,00,00,00,00,00,20,00,00,00,20,34,37,00,00,34,37,00,00,38,37,00,00,34,37,00,00,34,37,00,00,34,37,00,00,38,37,00,00,38,37,00,00,73,37,00,00,7C,37,00,00,08,08,00,20,08,08,00,20,08,00,00,20,08,08,00,20,08,08,00,20,08,08,00,20,08,08,00,20,08,09,00,20,31,1A,00,00,09,48,20,F0,07,00,85,46,08,48,80,47,08,48,09,49,01,60,09,48,01,68,41,F4,70,01,01,60,BF,F3,4F,8F,BF,F3,6F,8F,FF,F7,42,BF,00,00,03,20,61,02,00,00,08,ED,00,E0,00,00,00,00,88,ED,00,E0,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,FE,E7,82,B0,03,46,AD,F8,06,30,BD,F9,06,30,00,2B,0C,DB,BD,F8,06,30,03,F0,1F,02,05,49,BD,F9,06,30,5B,09,01,20,00,FA,02,F2,41,F8,23,20,00,BF,02,B0,70,47,00,E1,00,E0,82,B0,03,46,AD,F8,06,30,BD,F9,06,30,00,2B,13,DB,BD,F8,06,30,03,F0,1F,02,09,49,BD,F9,06,30,5B,09,01,20,00,FA,02,F2,20,33,41,F8,23,20,BF,F3,4F,8F,00,BF,BF,F3,6F,8F,00,BF,00,BF,02,B0,70,47,00,BF,00,E1,00,E0,82,B0,03,46,AD,F8,06,30,BD,F9,06,30,00,2B,0D,DB,BD,F8,06,30,03,F0,1F,02,06,49,BD,F9,06,30,5B,09,01,20,00,FA,02,F2,40,33,41,F8,23,20,00,BF,02,B0,70,47,00,BF,00,E1,00,E0,00,B5,85,B0,01,90,23,4B,1B,68,01,9A,9A,42,27,D1,01,9B,21,4A,1A,60,01,9B,33,22,A3,F8,92,22,05,21,08,20,00,F0,7D,FB,08,20,00,F0,98,FB,4F,F4,00,50,00,F0,DE,FB,00,23,8D,F8,0D,30,00,23,8D,F8,0E,30,03,23,8D,F8,0C,30,03,AB,1A,46,00,21,13,48,01,F0,B1,FA,03,AB,1A,46,01,21,10,48,01,F0,AB,FA,14,E0,0F,4B,1B,68,01,9A,9A,42,0F,D1,01,9B,0D,4A,1A,60,01,9B,02,22,A3,F8,92,22,00,23,8D,F8,09,30,00,23,8D,F8,0A,30,03,23,8D,F8,08,30,00,BF,05,B0,5D,F8,04,FB,00,BF,38,37,00,00,00,34,00,40,00,80,00,41,3C,37,00,00,00,40,01,41,00,B5,83,B0,01,90,01,98,FF,F7,A6,FF,02,21,03,20,00,F0,32,FB,03,20,00,F0,4D,FB,01,9B,1B,68,1D,4A,1A,60,01,9B,1B,68,4F,F4,01,42,5A,60,01,9B,1B,68,AC,22,5A,62,01,9B,1A,68,53,6A,50,21,61,F3,5A,43,53,62,01,9B,1A,68,53,6A,43,F0,01,03,53,62,00,BF,01,9B,1B,68,DB,69,C3,F3,80,03,DB,B2,00,2B,F7,D1,01,9B,1B,68,87,22,9A,75,01,9B,1B,68,1A,68,01,9B,1B,68,42,F0,02,02,1A,60,00,BF,01,9B,1B,68,DB,69,C3,F3,40,03,DB,B2,00,2B,F7,D1,00,BF,00,BF,03,B0,5D,F8,04,FB,10,00,00,08,10,B5,84,B0,01,90,01,9B,1B,68,1B,7E,C3,F3,40,03,DB,B2,00,2B,35,D0,01,9B,1B,68,5B,8B,C3,F3,C0,03,DB,B2,00,2B,06,D1,01,9B,1B,68,9B,6A,DA,B2,01,9B,83,F8,B1,22,01,9A,92,F8,9C,32,43,F0,01,03,82,F8,9C,32,01,9B,4F,F4,FA,72,A3,F8,AC,22,01,9B,01,22,83,F8,B3,22,01,9B,1B,68,02,22,1A,76,01,9B,1A,68,53,68,6F,F3,92,43,53,60,01,9B,1B,68,5B,8B,9B,B2,01,9A,12,68,43,F4,20,63,43,F0,03,03,9B,B2,53,83,E7,E0,01,9B,1B,68,5B,8B,C3,F3,C0,03,DB,B2,00,2B,7C,D1,01,9B,1B,68,1B,7E,C3,F3,80,03,DB,B2,00,2B,74,D0,01,9B,93,F8,9C,32,03,F0,01,03,DB,B2,00,2B,2F,D0,01,9A,92,F8,9C,32,6F,F3,00,03,82,F8,9C,32,01,9A,92,F8,9C,32,43,F0,02,03,82,F8,9C,32,01,9A,92,F8,9C,32,43,F0,04,03,82,F8,9C,32,01,9B,1B,68,9B,6A,DA,B2,01,9B,83,F8,B0,22,01,9B,1A,68,53,68,6F,F3,92,43,53,60,01,9B,1A,68,53,68,43,F4,40,33,53,60,01,9B,93,F8,B0,32,DA,B2,01,9B,83,F8,B2,22,9F,E0,01,9B,B3,F8,9C,32,03,F0,02,03,00,2B,33,D0,01,9A,92,F8,9C,32,6F,F3,82,03,82,F8,9C,32,01,9B,D3,F8,A4,42,01,9B,93,F8,B1,32,D8,B2,01,9B,93,F8,B2,32,D9,B2,01,9B,1B,68,9B,6A,DA,B2,5F,4B,A0,47,5E,4B,19,78,01,9B,1A,68,0B,46,03,F0,01,03,D9,B2,53,68,61,F3,92,43,53,60,01,9B,1A,68,53,68,43,F4,40,33,53,60,01,9B,93,F8,B2,32,DB,B2,01,33,DA,B2,01,9B,83,F8,B2,22,64,E0,00,BF,62,E0,01,9B,1B,68,1B,7E,C3,F3,80,03,DB,B2,00,2B,5A,D0,01,9B,93,F8,9C,32,03,F0,04,03,DB,B2,00,2B,14,D0,01,9A,92,F8,9C,32,6F,F3,82,03,82,F8,9C,32,01,9A,92,F8,9C,32,43,F0,02,03,82,F8,9C,32,01,9B,93,F8,B0,32,DA,B2,01,9B,83,F8,B2,22,01,9B,93,F8,9C,32,03,F0,02,03,DB,B2,00,2B,35,D0,01,9B,D3,F8,A0,42,01,9B,93,F8,B1,32,D8,B2,01,9B,93,F8,B2,32,D9,B2,0D,F1,0F,02,32,4B,A0,47,9D,F8,0F,20,01,9B,1B,68,9A,62,2F,4B,19,78,01,9B,1A,68,0B,46,03,F0,01,03,D9,B2,53,68,61,F3,92,43,53,60,01,9B,1A,68,53,68,43,F4,40,33,53,60,01,9B,93,F8,B2,32,DB,B2,01,33,DA,B2,01,9B,83,F8,B2,22,01,9A,92,F8,9C,32,43,F0,10,03,82,F8,9C,32,01,9B,1B,68,1B,7E,C3,F3,C0,13,DB,B2,00,2B,05,D0,01,9B,1A,68,53,68,43,F4,40,33,53,60,01,9B,1B,68,1B,7E,C3,F3,00,03,DB,B2,00,2B,23,D0,01,9B,1B,68,01,22,1A,76,01,9B,D3,F8,A8,32,01,9A,92,F8,B1,22,D2,B2,00,21,10,46,98,47,01,9A,92,F8,9C,32,6F,F3,41,03,82,F8,9C,32,01,9B,00,22,A3,F8,AC,22,01,9B,00,22,83,F8,B3,22,01,9A,92,F8,9C,32,6F,F3,45,13,82,F8,9C,32,00,BF,04,B0,10,BD,08,00,00,20,00,B5,83,B0,01,90,01,9B,1B,68,1B,7E,C3,F3,40,03,DA,B2,01,9B,1B,68,1B,7E,C3,F3,00,03,DB,B2,13,43,DA,B2,01,9B,1B,68,1B,7E,C3,F3,80,03,DB,B2,13,43,DB,B2,00,2B,05,D0,01,9B,B3,F9,92,32,18,46,FF,F7,BB,FD,00,BF,03,B0,5D,F8,04,FB,00,B5,85,B0,01,90,01,9A,92,F8,9C,32,6F,F3,C3,03,82,F8,9C,32,01,9B,B3,F9,92,32,AD,F8,0E,30,BD,F9,0E,30,18,46,FF,F7,81,FD,00,BF,01,9B,B3,F8,AC,32,9B,B2,01,3B,9B,B2,01,9A,19,46,A2,F8,AC,12,00,2B,10,D1,01,9B,93,F8,B3,32,01,9B,B3,F8,AC,32,9B,B2,00,2B,0A,D1,01,9A,92,F8,9C,32,43,F0,08,03,82,F8,9C,32,02,E0,01,9B,93,F8,B3,32,01,9B,B3,F9,92,32,AD,F8,0C,30,BD,F9,0C,30,18,46,FF,F7,3C,FD,00,BF,01,9B,93,F8,9C,32,03,F0,08,03,DB,B2,00,2B,09,D0,01,9B,D3,F8,A8,32,01,9A,92,F8,B1,22,D2,B2,01,21,10,46,98,47,00,BF,05,B0,5D,F8,04,FB,00,00,08,B5,03,4B,1B,68,18,46,FF,F7,16,FE,00,BF,08,BD,38,37,00,00,82,B0,03,46,00,91,AD,F8,06,30,BD,F9,06,30,00,2B,0A,DB,00,9B,DA,B2,0C,49,BD,F9,06,30,52,01,D2,B2,0B,44,83,F8,00,23,0B,E0,00,9B,DA,B2,07,49,BD,F8,06,30,03,F0,0F,03,04,3B,52,01,D2,B2,0B,44,1A,76,00,BF,02,B0,70,47,00,BF,00,E1,00,E0,00,ED,00,E0,00,B5,83,B0,01,90,01,9B,01,3B,B3,F1,80,7F,01,D3,01,23,0F,E0,09,4A,01,9B,01,3B,53,60,07,21,4F,F0,FF,30,FF,F7,C5,FF,05,4B,00,22,9A,60,03,4B,07,22,1A,60,00,23,18,46,03,B0,5D,F8,04,FB,10,E0,00,E0,08,B5,00,F0,8B,FE,00,BF,08,BD,00,00,08,B5,02,48,FF,F7,D6,FF,00,BF,08,BD,C0,D4,01,00,00,B5,85,B0,03,46,00,91,8D,F8,07,30,30,4A,9D,F8,07,30,08,33,52,F8,23,30,03,93,00,9B,1B,78,03,F0,0F,03,DA,B2,9D,F8,0C,30,62,F3,03,03,8D,F8,0C,30,00,9B,5B,88,AD,F8,0E,30,00,9B,1B,79,03,F0,01,03,DA,B2,9D,F8,0D,30,62,F3,04,13,8D,F8,0D,30,00,9B,5B,79,03,F0,01,03,DA,B2,9D,F8,0D,30,62,F3,C3,03,8D,F8,0D,30,00,9B,9B,79,03,F0,01,03,DA,B2,9D,F8,0D,30,62,F3,41,03,8D,F8,0D,30,00,9B,DB,79,03,F0,01,03,DA,B2,9D,F8,0D,30,62,F3,45,13,8D,F8,0D,30,00,9B,1B,7A,03,F0,01,03,DA,B2,9D,F8,0D,30,62,F3,82,03,8D,F8,0D,30,0A,49,9D,F8,07,30,03,9A,08,33,41,F8,23,20,00,BF,9D,F8,07,30,18,46,00,F0,2E,F8,03,46,00,2B,F7,D1,00,BF,00,BF,05,B0,5D,F8,04,FB,00,1C,00,40,00,B5,83,B0,03,46,8D,F8,07,30,0E,4A,9D,F8,07,30,08,33,52,F8,23,20,0B,49,9D,F8,07,30,42,F4,80,72,08,33,41,F8,23,20,00,BF,9D,F8,07,30,18,46,00,F0,0B,F8,03,46,00,2B,F7,D1,00,BF,00,BF,03,B0,5D,F8,04,FB,00,BF,00,1C,00,40,82,B0,03,46,8D,F8,07,30,0B,4B,5B,68,9D,F8,07,20,02,32,01,21,01,FA,02,F2,13,40,9D,F8,07,20,02,32,01,21,01,FA,02,F2,93,42,0C,BF,01,23,00,23,DB,B2,18,46,02,B0,70,47,00,BF,00,1C,00,40,82,B0,03,46,0A,46,8D,F8,07,30,13,46,8D,F8,06,30,09,49,9D,F8,07,30,9D,F8,06,20,02,F0,0F,02,D0,B2,03,F1,20,02,51,F8,22,30,60,F3,03,03,41,F8,22,30,00,BF,02,B0,70,47,00,BF,00,1C,00,40,82,B0,03,46,8D,F8,07,30,06,49,9D,F8,07,30,03,F1,20,02,51,F8,22,30,43,F0,40,03,41,F8,22,30,00,BF,02,B0,70,47,00,1C,00,40,00,B5,83,B0,01,90,01,9B,1F,2B,07,D8,01,22,01,9B,02,FA,03,F3,18,46,00,F0,29,F8,22,E0,01,9B,3F,2B,08,D8,01,9B,20,3B,01,22,02,FA,03,F3,18,46,00,F0,2B,F8,16,E0,01,9B,5F,2B,08,D8,01,9B,40,3B,01,22,02,FA,03,F3,18,46,00,F0,2D,F8,0A,E0,01,9B,7F,2B,07,D8,01,9B,60,3B,01,22,02,FA,03,F3,18,46,00,F0,2F,F8,00,BF,03,B0,5D,F8,04,FB,00,00,82,B0,01,90,04,4B,5A,69,03,49,01,9B,13,43,4B,61,00,BF,02,B0,70,47,00,BF,00,08,00,40,82,B0,01,90,04,4B,9A,69,03,49,01,9B,13,43,8B,61,00,BF,02,B0,70,47,00,BF,00,08,00,40,82,B0,01,90,04,4B,DA,69,03,49,01,9B,13,43,CB,61,00,BF,02,B0,70,47,00,BF,00,08,00,40,82,B0,01,90,04,4B,1A,6A,03,49,01,9B,13,43,0B,62,00,BF,02,B0,70,47,00,BF,00,08,00,40,84,B0,01,90,4E,49,01,9B,1A,68,13,46,9B,00,13,44,9B,00,0B,44,03,F1,30,02,13,78,6F,F3,41,03,13,70,47,49,01,9B,1A,68,13,46,9B,00,13,44,9B,00,0B,44,38,33,1B,68,02,93,01,9B,5B,68,03,F0,07,03,DA,B2,9D,F8,08,30,62,F3,47,13,8D,F8,08,30,01,9B,DB,68,5B,08,9B,B2,01,3B,9B,B2,C3,F3,0A,03,9A,B2,BD,F8,0A,30,62,F3,0A,03,AD,F8,0A,30,35,48,01,9B,1A,68,02,99,13,46,9B,00,13,44,9B,00,03,44,38,33,19,60,BF,F3,4F,8F,00,BF,2E,49,01,9B,1A,68,13,46,9B,00,13,44,9B,00,0B,44,34,33,1B,68,03,93,9D,F8,0E,30,6F,F3,04,03,8D,F8,0E,30,01,9B,9B,68,9B,B2,01,3B,9B,B2,C3,F3,0C,03,9A,B2,BD,F8,0C,30,62,F3,0C,03,AD,F8,0C,30,1E,48,01,9B,1A,68,03,99,13,46,9B,00,13,44,9B,00,03,44,34,33,19,60,00,BF,18,49,01,9B,1A,68,13,46,9B,00,13,44,9B,00,0B,44,38,33,5B,68,C3,F3,80,03,DB,B2,00,2B,F0,D1,11,49,01,9B,1A,68,13,46,9B,00,13,44,9B,00,0B,44,03,F1,30,02,13,78,43,F0,02,03,13,70,00,BF,09,49,01,9B,1A,68,13,46,9B,00,13,44,9B,00,0B,44,38,33,5B,68,C3,F3,40,03,DB,B2,00,2B,F0,D1,00,BF,00,BF,04,B0,70,47,00,BF,00,10,00,40,82,B0,03,46,AD,F8,06,30,BD,F9,06,30,00,2B,13,DB,BD,F8,06,30,03,F0,1F,02,09,49,BD,F9,06,30,5B,09,01,20,00,FA,02,F2,20,33,41,F8,23,20,BF,F3,4F,8F,00,BF,BF,F3,6F,8F,00,BF,00,BF,02,B0,70,47,00,BF,00,E1,00,E0,00,B5,83,B0,01,AB,00,21,0A,46,1A,80,0A,46,9A,70,0F,23,8D,F8,04,30,00,23,8D,F8,06,30,01,AB,1A,46,15,21,03,48,00,F0,D2,FD,00,BF,03,B0,5D,F8,04,FB,00,80,00,41,00,B5,83,B0,01,AB,00,21,0A,46,1A,80,0A,46,9A,70,0E,23,8D,F8,04,30,01,23,8D,F8,06,30,01,AB,1A,46,15,21,03,48,00,F0,B8,FD,00,BF,03,B0,5D,F8,04,FB,00,80,00,41,00,B5,97,B0,01,90,0B,46,8D,F8,03,30,2D,4B,0D,93,15,23,0C,93,9D,F8,03,30,8D,F8,2F,30,9D,F8,2F,30,00,2B,10,D0,0D,9B,0A,93,0C,9B,09,93,0A,9B,08,93,09,9B,07,93,01,22,07,9B,02,FA,03,F3,1A,46,08,9B,9A,61,00,BF,10,E0,0D,9B,06,93,0C,9B,05,93,06,9B,04,93,05,9B,03,93,01,22,03,9B,02,FA,03,F3,1A,46,04,9B,5A,61,00,BF,00,BF,00,BF,02,20,00,F0,16,FF,14,4B,11,93,14,23,10,93,11,9B,0F,93,10,9B,0E,93,01,22,0E,9B,02,FA,03,F3,1A,46,0F,9B,9A,61,00,BF,00,BF,02,20,00,F0,02,FF,0A,4B,15,93,14,23,14,93,15,9B,13,93,14,9B,12,93,01,22,12,9B,02,FA,03,F3,1A,46,13,9B,5A,61,00,BF,00,BF,00,BF,17,B0,5D,F8,04,FB,00,BF,00,80,00,41,00,B5,8F,B0,01,90,02,20,00,F0,E4,FE,21,4B,05,93,14,23,04,93,05,9B,03,93,04,9B,02,93,01,22,02,9B,02,FA,03,F3,1A,46,03,9B,9A,61,00,BF,00,BF,02,20,00,F0,D0,FE,17,4B,09,93,14,23,08,93,09,9B,07,93,08,9B,06,93,01,22,06,9B,02,FA,03,F3,1A,46,07,9B,5A,61,00,BF,00,BF,0F,4B,0D,93,15,23,0C,93,0D,9B,0B,93,0C,9B,0A,93,0B,9B,1B,6A,01,21,0A,9A,01,FA,02,F2,13,40,01,21,0A,9A,01,FA,02,F2,93,42,0C,BF,01,23,00,23,DB,B2,00,BF,DB,B2,18,46,0F,B0,5D,F8,04,FB,00,BF,00,80,00,41,00,B5,87,B0,01,90,08,46,11,46,1A,46,03,46,8D,F8,03,30,0B,46,8D,F8,02,30,13,46,AD,F8,00,30,FF,F7,0B,FF,00,23,05,93,06,E0,01,21,01,98,FF,F7,38,FF,05,9B,01,33,05,93,05,9B,0F,2B,F5,DD,00,21,01,98,FF,F7,2E,FF,01,21,01,98,FF,F7,2A,FF,00,21,01,98,FF,F7,26,FF,01,21,01,98,FF,F7,22,FF,04,23,04,93,0F,E0,9D,F8,03,20,04,9B,42,FA,03,F3,DB,B2,03,F0,01,03,DB,B2,19,46,01,98,FF,F7,12,FF,04,9B,01,3B,04,93,04,9B,00,2B,EC,DA,04,23,03,93,0F,E0,9D,F8,02,20,03,9B,42,FA,03,F3,DB,B2,03,F0,01,03,DB,B2,19,46,01,98,FF,F7,FC,FE,03,9B,01,3B,03,93,03,9B,00,2B,EC,DA,01,21,01,98,FF,F7,F2,FE,00,21,01,98,FF,F7,EE,FE,0F,23,02,93,0F,E0,BD,F8,00,20,02,9B,42,FA,03,F3,DB,B2,03,F0,01,03,DB,B2,19,46,01,98,FF,F7,DE,FE,02,9B,01,3B,02,93,02,9B,00,2B,EC,DA,FF,F7,BC,FE,01,98,FF,F7,37,FF,00,23,18,46,07,B0,5D,F8,04,FB,00,B5,8B,B0,01,90,0B,46,8D,F8,03,30,13,46,8D,F8,02,30,00,23,8D,F8,0F,30,00,23,AD,F8,26,30,FF,F7,89,FE,00,23,08,93,06,E0,01,21,01,98,FF,F7,B6,FE,08,9B,01,33,08,93,08,9B,0F,2B,F5,DD,00,21,01,98,FF,F7,AC,FE,01,21,01,98,FF,F7,A8,FE,01,21,01,98,FF,F7,A4,FE,00,21,01,98,FF,F7,A0,FE,04,23,07,93,0F,E0,9D,F8,03,20,07,9B,42,FA,03,F3,DB,B2,03,F0,01,03,DB,B2,19,46,01,98,FF,F7,90,FE,07,9B,01,3B,07,93,07,9B,00,2B,EC,DA,04,23,06,93,0F,E0,9D,F8,02,20,06,9B,42,FA,03,F3,DB,B2,03,F0,01,03,DB,B2,19,46,01,98,FF,F7,7A,FE,06,9B,01,3B,06,93,06,9B,00,2B,EC,DA,FF,F7,58,FE,01,98,FF,F7,D3,FE,03,46,00,2B,0E,D0,0F,23,05,93,05,E0,01,98,FF,F7,CA,FE,05,9B,01,3B,05,93,05,9B,00,2B,F6,DA,4F,F6,FF,73,1C,E0,0F,23,04,93,11,E0,BD,F8,26,30,5B,00,AD,F8,26,30,01,98,FF,F7,B6,FE,03,46,9A,B2,BD,F8,26,30,13,43,AD,F8,26,30,04,9B,01,3B,04,93,04,9B,00,2B,EA,DA,01,98,FF,F7,A6,FE,BD,F8,26,30,18,46,0B,B0,5D,F8,04,FB,00,B5,83,B0,01,90,08,46,11,46,1A,46,03,46,8D,F8,03,30,0B,46,8D,F8,02,30,13,46,AD,F8,00,30,9D,F8,02,30,9B,B2,9D,F8,03,10,0D,22,01,98,FF,F7,D4,FE,BD,F8,00,30,9D,F8,03,10,0E,22,01,98,FF,F7,CC,FE,9D,F8,02,30,1B,B2,6F,EA,43,43,6F,EA,53,43,1B,B2,9B,B2,9D,F8,03,10,0D,22,01,98,FF,F7,BD,FE,BD,F8,10,30,9D,F8,03,10,0E,22,01,98,FF,F7,B5,FE,00,BF,18,46,03,B0,5D,F8,04,FB,00,B5,85,B0,01,90,08,46,11,46,1A,46,03,46,8D,F8,03,30,0B,46,8D,F8,02,30,13,46,AD,F8,00,30,00,23,AD,F8,0E,30,9D,F8,02,30,9B,B2,9D,F8,03,10,0D,22,01,98,FF,F7,95,FE,BD,F8,00,30,9D,F8,03,10,0E,22,01,98,FF,F7,8D,FE,9D,F8,02,30,1B,B2,6F,EA,43,43,6F,EA,53,43,1B,B2,9B,B2,9D,F8,03,10,0D,22,01,98,FF,F7,7E,FE,9D,F8,03,30,0E,22,19,46,01,98,FF,F7,F9,FE,03,46,AD,F8,0E,30,BD,F8,0E,30,18,46,05,B0,5D,F8,04,FB,00,B5,A5,B0,01,90,01,9B,5B,7D,00,2B,00,F0,B6,80,01,9B,1B,78,02,2B,03,D0,03,2B,00,F0,91,80,BA,E0,01,9B,1B,7E,0F,2B,34,D8,7A,4B,23,93,15,23,22,93,01,23,8D,F8,87,30,9D,F8,87,30,00,2B,10,D0,23,9B,20,93,22,9B,1F,93,20,9B,1E,93,1F,9B,1D,93,01,22,1D,9B,02,FA,03,F3,1A,46,1E,9B,9A,61,00,BF,10,E0,23,9B,1C,93,22,9B,1B,93,1C,9B,1A,93,1B,9B,19,93,01,22,19,9B,02,FA,03,F3,1A,46,1A,9B,5A,61,00,BF,00,BF,00,BF,01,9B,1B,7E,01,33,DA,B2,01,9B,1A,76,81,E0,01,9B,9B,7D,5A,1C,D1,B2,01,9A,91,75,1F,2B,4A,D8,01,9B,1A,7E,01,9B,DB,7D,9A,42,44,D3,01,9B,5B,7E,01,9A,06,33,9B,00,13,44,5A,68,01,9B,9B,7D,C3,F1,20,03,22,FA,03,F3,DB,B2,03,F0,01,03,DA,B2,51,4B,1A,70,50,4B,1A,78,4E,4B,18,93,15,23,17,93,13,46,8D,F8,5B,30,9D,F8,5B,30,00,2B,10,D0,18,9B,15,93,17,9B,14,93,15,9B,13,93,14,9B,12,93,01,22,12,9B,02,FA,03,F3,1A,46,13,9B,9A,61,00,BF,10,E0,18,9B,11,93,17,9B,10,93,11,9B,0F,93,10,9B,0E,93,01,22,0E,9B,02,FA,03,F3,1A,46,0F,9B,5A,61,00,BF,00,BF,00,BF,00,BF,2E,E0,01,9B,03,22,1A,70,2A,E0,01,9B,1B,79,00,2B,02,D0,FF,F7,FE,FC,0E,E0,01,9B,5B,7E,01,33,DA,B2,01,9B,5A,76,01,9B,00,22,9A,75,01,9B,00,22,1A,76,01,9B,02,22,1A,70,01,9B,5B,7E,03,2B,0F,D9,01,9B,01,22,1A,75,0B,E0,01,9B,1B,7D,00,2B,08,D0,01,9B,93,F8,2C,30,1B,B2,18,46,FF,F7,9F,FC,00,E0,00,BF,01,9B,5A,7D,1E,4B,0D,93,14,23,0C,93,13,46,8D,F8,2F,30,9D,F8,2F,30,00,2B,10,D0,0D,9B,0A,93,0C,9B,09,93,0A,9B,08,93,09,9B,07,93,01,22,07,9B,02,FA,03,F3,1A,46,08,9B,9A,61,00,BF,10,E0,0D,9B,06,93,0C,9B,05,93,06,9B,04,93,05,9B,03,93,01,22,03,9B,02,FA,03,F3,1A,46,04,9B,5A,61,00,BF,00,BF,00,BF,01,9B,5B,7D,00,2B,0C,BF,01,23,00,23,DB,B2,1A,46,01,9B,5A,75,00,BF,25,B0,5D,F8,04,FB,00,BF,00,80,00,41,44,00,00,20,00,B5,83,B0,01,90,01,9B,02,22,1A,70,01,9B,6D,22,83,F8,2C,20,01,9B,00,22,1A,75,01,9B,0A,22,DA,75,01,9B,01,22,5A,75,01,9B,00,22,1A,76,01,21,1A,20,FF,F7,FE,FA,1A,20,FF,F7,19,FB,2D,20,FF,F7,2A,FB,0E,4A,13,68,6F,F3,83,03,13,60,0C,4B,4F,F6,FF,72,9A,83,0A,4B,01,22,5A,72,08,4A,13,68,43,F0,02,03,13,60,00,BF,06,4B,1B,69,C3,F3,40,03,DB,B2,00,2B,F8,D1,00,BF,00,BF,03,B0,5D,F8,04,FB,00,A0,01,41,00,38,00,40,08,B5,08,4B,9B,7A,DB,B2,03,F0,01,03,01,2B,07,D1,05,4B,1B,68,18,46,FF,F7,A3,FE,02,4B,01,22,9A,72,00,BF,08,BD,00,A0,01,41,04,00,00,20,00,B5,97,B0,6B,46,00,21,0A,46,1A,80,0A,46,9A,70,0F,23,8D,F8,00,30,00,23,8D,F8,02,30,40,4B,07,93,06,23,06,93,6B,46,05,93,07,9B,04,93,06,9B,03,93,04,9B,02,93,03,9B,01,93,01,22,01,9B,02,FA,03,F3,1A,46,02,9B,5A,61,00,BF,00,BF,05,9A,06,99,07,98,00,F0,E0,F9,00,BF,32,4B,0E,93,07,23,0D,93,6B,46,0C,93,0E,9B,0B,93,0D,9B,0A,93,0B,9B,09,93,0A,9B,08,93,01,22,08,9B,02,FA,03,F3,1A,46,09,9B,9A,61,00,BF,00,BF,0C,9A,0D,99,0E,98,00,F0,C3,F9,00,BF,6B,46,1A,46,14,21,22,48,00,F0,BC,F9,6B,46,1A,46,15,21,1F,48,00,F0,B6,F9,1E,4B,15,93,03,23,14,93,6B,46,13,93,15,9B,12,93,14,9B,11,93,12,9B,10,93,11,9B,0F,93,01,22,0F,9B,02,FA,03,F3,1A,46,10,9B,5A,61,00,BF,00,BF,13,9A,14,99,15,98,00,F0,9A,F9,00,BF,0E,23,8D,F8,00,30,6B,46,1A,46,02,21,0C,48,00,F0,90,F9,6B,46,1A,46,05,21,09,48,00,F0,8A,F9,6B,46,1A,46,08,21,06,48,00,F0,84,F9,6B,46,1A,46,18,21,03,48,00,F0,7E,F9,00,BF,17,B0,5D,F8,04,FB,00,80,00,41,80,80,00,41,00,B5,89,B0,04,23,8D,F8,14,30,00,23,8D,F8,18,30,00,23,AD,F8,16,30,05,AB,19,46,03,20,FF,F7,70,F9,03,20,FF,F7,D7,F9,05,AB,19,46,00,20,FF,F7,68,F9,00,20,FF,F7,CF,F9,4D,4B,00,22,1A,77,4C,4B,43,22,C3,F8,80,20,49,4B,4B,4A,9A,62,00,BF,47,4B,93,F8,2C,30,DB,B2,03,F0,10,03,00,2B,F7,D1,43,4B,00,22,83,F8,20,20,00,BF,41,4B,93,F8,2C,30,DB,B2,03,F0,04,03,00,2B,F7,D1,3D,4B,1B,7F,DB,B2,3B,4A,43,F0,02,03,DB,B2,13,77,00,BF,38,4B,93,F8,2C,30,DB,B2,03,F0,02,03,00,2B,F7,D1,34,4B,34,4A,5B,6A,53,62,00,BF,32,4B,93,F8,2C,30,C3,F3,C0,03,DB,B2,00,2B,F7,D1,2E,4B,98,22,83,F8,20,20,00,BF,2B,4B,1B,69,C3,F3,00,23,DB,B2,00,2B,F8,D0,06,23,8D,F8,14,30,00,23,8D,F8,18,30,30,23,AD,F8,16,30,05,AB,19,46,02,20,FF,F7,0D,F9,02,20,FF,F7,74,F9,02,21,01,20,FF,F7,B2,F9,01,20,FF,F7,CD,F9,78,23,03,93,00,23,02,93,00,23,04,93,00,23,01,93,01,AB,18,46,FF,F7,43,FA,07,23,8D,F8,14,30,00,23,8D,F8,18,30,03,23,AD,F8,16,30,05,AB,19,46,01,20,FF,F7,E9,F8,01,20,FF,F7,50,F9,07,23,8D,F8,14,30,00,23,8D,F8,18,30,00,23,AD,F8,16,30,0A,4B,1B,6A,09,4A,43,F4,00,73,13,62,05,AB,19,46,00,20,FF,F7,D2,F8,00,20,FF,F7,39,F9,00,BF,09,B0,5D,F8,04,FB,00,BF,00,10,00,40,00,1C,00,40,00,00,01,04,82,B0,01,90,01,9B,00,22,83,F8,86,22,01,9B,00,22,83,F8,85,22,01,9B,00,22,83,F8,84,22,00,BF,02,B0,70,47,00,B5,83,B0,01,90,01,98,FE,F7,1D,FE,01,98,FF,F7,E6,FF,00,BF,03,B0,5D,F8,04,FB,00,B5,91,B0,00,23,01,93,00,F0,76,F8,01,F0,42,FC,03,46,FE,2B,06,D0,00,F0,F1,FA,03,46,00,2B,01,D1,00,F0,EF,FA,31,4B,1B,68,18,46,FE,F7,B3,FF,01,F0,9B,FB,01,AB,18,46,00,F0,9B,FA,03,46,00,2B,F1,D0,2A,4B,1B,68,18,46,FE,F7,CA,FF,29,4B,1B,78,01,33,DA,B2,27,4B,1A,70,26,4B,1B,78,64,2B,E2,D1,25,4B,0F,93,03,23,0E,93,0F,9B,0D,93,0E,9B,0C,93,0D,9B,0B,93,0C,9B,0A,93,0B,9B,1B,6A,01,21,0A,9A,01,FA,02,F2,13,40,01,21,0A,9A,01,FA,02,F2,93,42,0C,BF,01,23,00,23,DB,B2,00,BF,00,2B,10,D0,0F,9B,09,93,0E,9B,08,93,09,9B,07,93,08,9B,06,93,01,22,06,9B,02,FA,03,F3,1A,46,07,9B,5A,61,00,BF,10,E0,0F,9B,05,93,0E,9B,04,93,05,9B,03,93,04,9B,02,93,01,22,02,9B,02,FA,03,F3,1A,46,03,9B,9A,61,00,BF,00,BF,00,BF,03,4B,00,22,1A,70,9C,E7,00,BF,38,37,00,00,B0,05,00,20,00,80,00,41,08,B5,FF,F7,19,F8,FF,F7,1D,F8,01,F0,CD,FB,00,F0,4D,F9,00,20,00,F0,21,F9,07,4B,1B,68,18,46,FF,F7,AD,FD,01,F0,ED,F9,05,4B,1B,68,18,46,FF,F7,5F,FF,01,F0,80,FA,00,BF,08,BD,04,00,00,20,38,37,00,00,86,B0,03,90,02,91,01,92,01,9B,1B,78,10,2B,06,D1,03,9A,02,9B,13,44,40,33,00,22,1A,70,FA,E0,01,9B,1B,78,0E,2B,43,D1,03,9A,02,9B,13,44,40,33,02,22,1A,70,01,22,02,9B,02,FA,03,F3,1A,46,03,9B,5A,60,01,9B,9B,78,01,2B,16,D1,03,9A,02,9B,13,44,40,33,1B,78,DB,B2,43,F0,04,03,D9,B2,03,9A,02,9B,13,44,40,33,0A,46,1A,70,01,22,02,9B,02,FA,03,F3,1A,46,03,9B,9A,61,CE,E0,01,9B,9B,78,02,2B,40,F0,CA,80,03,9A,02,9B,13,44,40,33,1B,78,DB,B2,43,F0,04,03,D9,B2,03,9A,02,9B,13,44,40,33,0A,46,1A,70,01,22,02,9B,02,FA,03,F3,1A,46,03,9B,5A,61,B2,E0,01,9B,1B,78,0F,2B,20,D1,03,9A,02,9B,13,44,40,33,02,22,1A,70,01,9B,5B,78,00,2B,0E,D0,03,9A,02,9B,13,44,40,33,1B,78,DB,B2,43,F0,40,03,D9,B2,03,9A,02,9B,13,44,40,33,0A,46,1A,70,01,22,02,9B,02,FA,03,F3,1A,46,03,9B,9A,60,8D,E0,02,9B,5B,08,8D,F8,17,30,02,9B,DB,B2,03,F0,01,03,DB,B2,9B,00,8D,F8,16,30,03,9A,02,9B,13,44,40,33,03,22,1A,70,01,9B,5B,78,00,2B,0E,D0,03,9A,02,9B,13,44,40,33,1B,78,DB,B2,43,F0,40,03,D9,B2,03,9A,02,9B,13,44,40,33,0A,46,1A,70,9D,F8,17,30,03,9A,13,44,93,F8,30,30,DB,B2,5A,B2,9D,F8,16,30,0F,21,01,FA,03,F3,5B,B2,DB,43,5B,B2,13,40,5A,B2,9D,F8,17,30,D1,B2,03,9A,13,44,0A,46,83,F8,30,20,9D,F8,17,30,03,9A,13,44,93,F8,30,30,DB,B2,5A,B2,01,9B,1B,78,19,46,9D,F8,16,30,01,FA,03,F3,5B,B2,13,43,5A,B2,9D,F8,17,30,D1,B2,03,9A,13,44,0A,46,83,F8,30,20,01,9B,9B,78,01,2B,16,D1,03,9A,02,9B,13,44,40,33,1B,78,DB,B2,43,F0,04,03,D9,B2,03,9A,02,9B,13,44,40,33,0A,46,1A,70,01,22,02,9B,02,FA,03,F3,1A,46,03,9B,9A,61,19,E0,01,9B,9B,78,02,2B,15,D1,03,9A,02,9B,13,44,40,33,1B,78,DB,B2,43,F0,04,03,D9,B2,03,9A,02,9B,13,44,40,33,0A,46,1A,70,01,22,02,9B,02,FA,03,F3,1A,46,03,9B,5A,61,00,BF,06,B0,70,47,00,B5,83,B0,03,46,8D,F8,07,30,24,20,FE,F7,D3,FF,FF,F7,DF,FC,00,BF,03,B0,5D,F8,04,FB,00,00,82,B0,03,46,AD,F8,06,30,BD,F9,06,30,00,2B,0C,DB,BD,F8,06,30,03,F0,1F,02,05,49,BD,F9,06,30,5B,09,01,20,00,FA,02,F2,41,F8,23,20,00,BF,02,B0,70,47,00,E1,00,E0,08,B5,24,49,4F,F0,00,02,4F,F0,00,03,C1,E9,00,23,01,21,09,20,FE,F7,74,FF,09,20,FE,F7,8F,FF,0E,20,FE,F7,A0,FF,1C,4A,13,68,6F,F3,83,03,13,60,1A,4B,4F,F6,FF,72,9A,83,18,4B,01,22,5A,72,6B,20,FF,F7,C5,FF,15,4A,13,68,43,F0,02,03,13,60,00,BF,12,4B,1B,69,C3,F3,40,03,DB,B2,00,2B,F8,D1,0F,20,FE,F7,81,FF,0E,4A,13,68,6F,F3,83,03,13,60,0B,4B,4F,F6,FF,72,9A,83,09,4A,13,68,43,F0,02,03,13,60,00,BF,06,4B,1B,69,C3,F3,40,03,DB,B2,00,2B,F8,D1,00,BF,00,BF,08,BD,B8,05,00,20,00,38,00,40,00,3C,00,40,00,B5,85,B0,01,90,00,F0,C7,F8,02,46,01,9B,13,44,03,93,00,BF,00,F0,C0,F8,02,46,03,9B,93,42,F9,D8,00,BF,00,BF,05,B0,5D,F8,04,FB,00,00,84,B0,01,90,01,9B,00,2B,72,D0,01,9B,40,F2,65,62,93,42,6F,D8,39,4A,53,79,04,21,61,F3,47,13,53,71,00,BF,36,4B,5B,79,C3,F3,42,13,DB,B2,00,2B,F8,D1,32,4B,9B,8A,9B,B2,AD,F8,0A,30,BD,F8,0A,30,AD,F8,0E,30,01,9B,9B,B2,1A,46,92,00,13,44,DB,00,9A,B2,BD,F8,0E,30,13,44,AD,F8,0C,30,BD,F8,0C,20,BD,F8,0E,30,9A,42,35,D2,12,E0,24,4A,53,79,04,21,61,F3,47,13,53,71,00,BF,21,4B,5B,79,C3,F3,42,13,DB,B2,00,2B,F8,D1,1D,4B,9B,8A,9B,B2,AD,F8,0A,30,BD,F8,0A,30,9B,B2,BD,F8,0C,20,9A,42,E5,D8,BD,F8,0A,30,9B,B2,BD,F8,0E,20,9A,42,DE,D9,24,E0,13,4A,53,79,04,21,61,F3,47,13,53,71,00,BF,10,4B,5B,79,C3,F3,42,13,DB,B2,00,2B,F8,D1,0C,4B,9B,8A,9B,B2,AD,F8,0A,30,BD,F8,0A,30,9B,B2,BD,F8,0E,20,9A,42,0A,D8,BD,F8,0A,30,9B,B2,BD,F8,0C,20,9A,42,DE,D8,02,E0,00,BF,00,E0,00,BF,04,B0,70,47,00,BF,00,3C,00,40,00,B5,85,B0,01,90,00,F0,31,F8,02,90,01,9B,1B,68,02,9A,9A,42,03,D1,00,23,8D,F8,0F,30,02,E0,01,23,8D,F8,0F,30,01,9B,02,9A,1A,60,9D,F8,0F,30,18,46,05,B0,5D,F8,04,FB,00,00,0A,4B,9B,7A,DB,B2,03,F0,01,03,01,2B,0C,D1,08,4B,D3,E9,00,23,12,F5,80,30,43,F1,00,01,04,4B,C3,E9,00,01,02,4B,01,22,9A,72,00,BF,70,47,00,38,00,40,B8,05,00,20,01,4B,1B,68,18,46,70,47,B4,05,00,20,03,4B,1B,68,01,33,02,4A,13,60,00,BF,70,47,00,BF,B4,05,00,20,00,23,18,46,70,47,00,BF,70,47,00,00,00,B5,85,B0,00,93,03,46,8D,F8,07,30,0B,46,8D,F8,06,30,13,46,AD,F8,04,30,01,23,03,93,09,4B,18,68,BD,F8,04,30,9D,F8,06,20,9D,F8,07,10,FF,F7,CE,F9,03,46,1A,46,00,9B,1A,80,03,9B,18,46,05,B0,5D,F8,04,FB,00,BF,04,00,00,20,10,B5,84,B0,04,46,08,46,11,46,1A,46,23,46,8D,F8,0F,30,03,46,8D,F8,0E,30,0B,46,AD,F8,0C,30,13,46,AD,F8,0A,30,08,4B,18,68,BD,F8,0C,40,9D,F8,0E,20,9D,F8,0F,10,BD,F8,0A,30,00,93,23,46,FF,F7,66,F9,01,23,18,46,04,B0,10,BD,04,00,00,20,00,B5,85,B0,03,46,8D,F8,07,30,0B,46,8D,F8,06,30,13,46,8D,F8,05,30,00,23,AD,F8,0E,30,9D,F8,05,30,01,2B,1B,D1,9D,F8,07,00,4F,F4,00,43,4F,F4,10,62,03,21,FF,F7,BF,FF,9D,F8,07,00,4F,F4,00,73,4F,F6,07,22,03,21,FF,F7,B6,FF,9D,F8,07,00,40,F2,42,53,4F,F6,23,42,03,21,FF,F7,AD,FF,9B,E1,9D,F8,06,30,01,2B,40,F0,AF,80,9D,F8,07,00,4F,F4,78,73,4F,F6,03,42,03,21,FF,F7,9E,FF,9D,F8,07,00,00,23,4F,F6,04,42,03,21,FF,F7,96,FF,9D,F8,07,00,40,F2,E1,33,4F,F6,03,42,03,21,FF,F7,8D,FF,9D,F8,07,00,00,23,4F,F6,04,42,03,21,FF,F7,85,FF,9D,F8,07,00,4F,F4,84,63,4F,F6,03,42,03,21,FF,F7,7C,FF,9D,F8,07,00,00,23,4F,F6,04,42,03,21,FF,F7,74,FF,9D,F8,07,00,40,F2,21,43,4F,F6,03,42,03,21,FF,F7,6B,FF,9D,F8,07,00,00,23,4F,F6,04,42,03,21,FF,F7,63,FF,0D,F1,0E,03,9D,F8,07,00,4F,F4,10,62,03,21,FF,F7,36,FF,BD,F8,0E,30,6F,EA,43,43,6F,EA,53,43,9B,B2,AD,F8,0E,30,BD,F8,0E,30,9D,F8,07,00,4F,F4,10,62,03,21,FF,F7,48,FF,01,20,FF,F7,3F,FE,9D,F8,07,00,4F,F4,78,73,4F,F6,03,42,03,21,FF,F7,3C,FF,9D,F8,07,00,99,23,4F,F6,04,42,03,21,FF,F7,34,FF,9D,F8,07,00,40,F2,E1,33,4F,F6,03,42,03,21,FF,F7,2B,FF,9D,F8,07,00,09,23,4F,F6,04,42,03,21,FF,F7,23,FF,9D,F8,07,00,4F,F4,84,63,4F,F6,03,42,03,21,FF,F7,1A,FF,9D,F8,07,00,CC,23,4F,F6,04,42,03,21,FF,F7,12,FF,9D,F8,07,00,40,F2,21,43,4F,F6,03,42,03,21,FF,F7,09,FF,9D,F8,07,00,0C,23,4F,F6,04,42,03,21,FF,F7,01,FF,9D,F8,07,00,0C,23,4F,F6,E4,72,03,21,FF,F7,F9,FE,E7,E0,9D,F8,07,00,03,23,4F,F6,A1,52,03,21,FF,F7,F0,FE,9D,F8,07,00,4F,F4,80,43,4F,F4,10,62,01,21,FF,F7,E7,FE,9D,F8,07,00,40,F2,0F,73,4F,F6,E4,72,03,21,FF,F7,DE,FE,9D,F8,07,00,4F,F4,02,73,4F,F6,03,42,03,21,FF,F7,D5,FE,9D,F8,07,00,00,23,4F,F6,04,42,03,21,FF,F7,CD,FE,9D,F8,07,00,40,F2,21,43,4F,F6,03,42,03,21,FF,F7,C4,FE,9D,F8,07,00,00,23,4F,F6,04,42,03,21,FF,F7,BC,FE,9D,F8,07,00,4F,F4,84,63,4F,F6,03,42,03,21,FF,F7,B3,FE,9D,F8,07,00,00,23,4F,F6,04,42,03,21,FF,F7,AB,FE,9D,F8,07,00,40,F2,E1,33,4F,F6,03,42,03,21,FF,F7,A2,FE,9D,F8,07,00,00,23,4F,F6,04,42,03,21,FF,F7,9A,FE,9D,F8,07,00,4F,F4,78,73,4F,F6,03,42,03,21,FF,F7,91,FE,9D,F8,07,00,00,23,4F,F6,04,42,03,21,FF,F7,89,FE,9D,F8,07,00,4F,F4,00,43,4F,F4,10,62,03,21,FF,F7,80,FE,02,20,FF,F7,77,FD,9D,F8,07,00,4F,F4,02,73,4F,F6,03,42,03,21,FF,F7,74,FE,9D,F8,07,00,03,23,4F,F6,04,42,03,21,FF,F7,6C,FE,9D,F8,07,00,4F,F4,78,73,4F,F6,03,42,03,21,FF,F7,63,FE,9D,F8,07,00,99,23,4F,F6,04,42,03,21,FF,F7,5B,FE,9D,F8,07,00,40,F2,E1,33,4F,F6,03,42,03,21,FF,F7,52,FE,9D,F8,07,00,09,23,4F,F6,04,42,03,21,FF,F7,4A,FE,9D,F8,07,00,4F,F4,84,63,4F,F6,03,42,03,21,FF,F7,41,FE,9D,F8,07,00,CC,23,4F,F6,04,42,03,21,FF,F7,39,FE,9D,F8,07,00,40,F2,21,43,4F,F6,03,42,03,21,FF,F7,30,FE,9D,F8,07,00,0C,23,4F,F6,04,42,03,21,FF,F7,28,FE,9D,F8,07,00,00,23,4F,F4,10,62,01,21,FF,F7,20,FE,9D,F8,07,00,00,23,4F,F6,A1,52,03,21,FF,F7,18,FE,9D,F8,07,00,0C,23,4F,F6,E4,72,03,21,FF,F7,10,FE,00,BF,05,B0,5D,F8,04,FB,00,B5,85,B0,03,46,0A,46,8D,F8,07,30,13,46,8D,F8,06,30,00,23,AD,F8,0E,30,0D,F1,0E,03,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,D3,FD,9D,F8,06,30,00,2B,07,D0,BD,F8,0E,30,43,F4,80,43,9B,B2,AD,F8,0E,30,06,E0,BD,F8,0E,30,23,F4,80,43,9B,B2,AD,F8,0E,30,BD,F8,0E,30,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,DB,FD,00,BF,05,B0,5D,F8,04,FB,00,B5,85,B0,03,46,0A,46,8D,F8,07,30,13,46,8D,F8,06,30,00,23,AD,F8,0E,30,0D,F1,0E,03,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,9E,FD,BD,F8,0E,30,23,F0,0F,03,9B,B2,AD,F8,0E,30,9D,F8,06,30,01,2B,06,D0,BD,F8,0E,30,43,F0,01,03,9B,B2,AD,F8,0E,30,BD,F8,0E,30,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,A7,FD,00,BF,05,B0,5D,F8,04,FB,10,B5,82,B0,04,46,08,46,11,46,1A,46,23,46,8D,F8,07,30,03,46,8D,F8,06,30,0B,46,8D,F8,05,30,13,46,8D,F8,04,30,9D,F8,06,30,03,2B,36,D1,9D,F8,04,30,01,2B,19,D1,9D,F8,07,00,01,23,4F,F6,B8,52,03,21,FF,F7,81,FD,9D,F8,07,00,14,23,4F,F6,3D,52,03,21,FF,F7,79,FD,9D,F8,07,00,40,F2,B2,63,40,F6,02,12,01,21,FF,F7,70,FD,21,E0,9D,F8,07,00,00,23,4F,F6,B8,52,03,21,FF,F7,67,FD,9D,F8,07,00,00,23,4F,F6,3D,52,03,21,FF,F7,5F,FD,9D,F8,07,00,02,23,40,F6,02,12,01,21,FF,F7,57,FD,08,E0,9D,F8,07,00,40,F2,B2,63,40,F6,02,12,01,21,FF,F7,4D,FD,00,BF,02,B0,10,BD,10,B5,8E,B0,04,46,08,46,11,46,1A,46,23,46,8D,F8,07,30,03,46,8D,F8,06,30,0B,46,8D,F8,05,30,13,46,8D,F8,04,30,9F,4B,07,93,07,23,06,93,07,9B,05,93,06,9B,04,93,01,22,04,9B,02,FA,03,F3,1A,46,05,9B,5A,61,00,BF,00,BF,64,20,FF,F7,1E,FC,95,4B,0B,93,07,23,0A,93,0B,9B,09,93,0A,9B,08,93,01,22,08,9B,02,FA,03,F3,1A,46,09,9B,9A,61,00,BF,00,BF,64,20,FF,F7,0A,FC,0D,F1,0E,03,9D,F8,07,00,02,22,01,21,FF,F7,E4,FC,BD,F8,0E,30,1B,04,0D,93,0D,F1,0E,03,9D,F8,07,00,03,22,01,21,FF,F7,D8,FC,BD,F8,0E,30,1A,46,0D,9B,13,43,0D,93,0D,9B,DB,B2,03,F0,0F,03,8D,F8,33,30,0D,F1,0E,03,9D,F8,07,00,00,22,01,21,FF,F7,C4,FC,9D,F8,06,30,00,2B,14,D0,BD,F8,0E,30,23,F4,00,63,9B,B2,AD,F8,0E,30,BD,F8,0E,30,9D,F8,07,00,00,22,01,21,FF,F7,D5,FC,9D,F8,33,30,01,2B,40,F0,D3,81,10,E0,BD,F8,0E,30,43,F4,00,63,9B,B2,AD,F8,0E,30,BD,F8,0E,30,9D,F8,07,00,00,22,01,21,FF,F7,C0,FC,00,F0,0F,BC,9D,F8,04,30,01,2B,40,F0,C3,80,9D,F8,07,00,40,F2,02,23,4F,F6,07,22,03,21,FF,F7,B0,FC,9D,F8,07,00,00,23,4F,F4,00,72,07,21,FF,F7,A8,FC,0D,F1,0E,03,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,7B,FC,BD,F8,0E,30,23,F0,0F,03,9B,B2,AD,F8,0E,30,BD,F8,0E,30,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,8F,FC,9D,F8,07,00,4F,F4,00,43,4F,F4,00,42,03,21,FF,F7,86,FC,9D,F8,07,00,4F,F4,00,73,4F,F4,01,42,03,21,FF,F7,7D,FC,9D,F8,07,00,02,23,4F,F6,1E,22,03,21,FF,F7,75,FC,9D,F8,07,00,42,F2,02,43,4F,F6,5C,62,03,21,FF,F7,6C,FC,9D,F8,07,00,1F,23,4F,F6,12,22,03,21,FF,F7,64,FC,9D,F8,07,00,49,F6,05,63,4F,F6,0C,22,03,21,FF,F7,5B,FC,9D,F8,07,00,46,F6,62,03,4F,F6,DD,32,03,21,FF,F7,52,FC,9D,F8,07,00,47,F2,6E,33,4F,F6,DE,32,03,21,FF,F7,49,FC,9D,F8,07,00,47,F6,79,73,4F,F6,DF,32,03,21,FF,F7,40,FC,9D,F8,07,00,48,F6,85,23,4F,F6,E0,32,03,21,FF,F7,37,FC,9D,F8,07,00,49,F2,90,73,4F,F6,E1,32,03,21,FF,F7,2E,FC,9D,F8,07,00,4A,F2,9D,33,4F,F6,E3,32,03,21,FF,F7,25,FC,9D,F8,07,00,4B,F2,AA,03,4F,F6,E4,32,03,21,FF,F7,1C,FC,9D,F8,07,00,B8,23,4F,F6,E5,32,03,21,FF,F7,14,FC,9D,F8,07,00,40,F6,0A,53,4F,F6,FD,32,03,21,FF,F7,0B,FC,9D,F8,07,00,40,F6,06,13,4F,F6,FE,32,03,21,FF,F7,02,FC,9D,F8,07,00,11,23,48,F2,16,02,03,21,FF,F7,FA,FB,1E,E3,00,BF,00,80,00,41,9D,F8,07,00,40,F2,B6,63,4F,F6,E4,72,03,21,FF,F7,ED,FB,9D,F8,07,00,00,23,4F,F4,00,72,07,21,FF,F7,E5,FB,0D,F1,0E,03,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,B8,FB,BD,F8,0E,30,1B,B2,23,F0,0F,03,1B,B2,43,F0,01,03,1B,B2,9B,B2,AD,F8,0E,30,BD,F8,0E,30,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,C7,FB,9D,F8,07,00,44,F2,2F,03,4F,F6,DE,72,03,21,FF,F7,BE,FB,9D,F8,07,00,64,23,48,F2,32,02,07,21,FF,F7,B6,FB,9D,F8,07,00,40,F6,01,23,48,F2,31,02,07,21,FF,F7,AD,FB,9D,F8,07,00,40,F6,01,43,48,F2,31,02,07,21,FF,F7,A4,FB,9D,F8,07,00,00,23,4F,F6,0F,62,03,21,FF,F7,9C,FB,9D,F8,07,00,00,23,48,F2,0C,02,03,21,FF,F7,94,FB,9D,F8,07,00,43,F6,3D,43,4F,F6,2A,62,03,21,FF,F7,8B,FB,9D,F8,07,00,4F,F4,E0,73,4F,F4,7C,42,03,21,FF,F7,82,FB,9D,F8,07,00,40,F2,25,43,4F,F6,17,42,03,21,FF,F7,79,FB,9D,F8,07,00,45,F2,70,43,4F,F6,94,42,03,21,FF,F7,70,FB,9D,F8,07,00,55,23,4F,F6,95,42,03,21,FF,F7,68,FB,9D,F8,07,00,40,F6,D8,03,4F,F6,19,42,03,21,FF,F7,5F,FB,9D,F8,07,00,4F,F4,88,73,4F,F6,1A,42,03,21,FF,F7,56,FB,9D,F8,07,00,4F,F4,21,63,4F,F6,1B,42,03,21,FF,F7,4D,FB,9D,F8,07,00,42,F2,25,73,4F,F6,3A,42,03,21,FF,F7,44,FB,9D,F8,07,00,42,F2,27,63,4F,F6,61,42,03,21,FF,F7,3B,FB,9D,F8,07,00,41,F2,12,63,4F,F6,3B,42,03,21,FF,F7,32,FB,9D,F8,07,00,41,F6,12,43,4F,F6,62,42,03,21,FF,F7,29,FB,9D,F8,07,00,46,F2,67,33,4F,F6,9D,42,03,21,FF,F7,20,FB,9D,F8,07,00,48,F2,60,03,4F,F6,9E,42,03,21,FF,F7,17,FB,9D,F8,07,00,4F,F4,E4,73,4F,F4,7C,42,03,21,FF,F7,0E,FB,9D,F8,07,00,00,23,4F,F4,00,42,03,21,FF,F7,06,FB,9D,F8,07,00,11,23,48,F2,16,02,03,21,FF,F7,FE,FA,22,E2,9D,F8,33,30,03,2B,40,F0,1E,82,9D,F8,04,30,01,2B,40,F0,DB,80,9D,F8,07,00,00,23,4F,F4,00,42,03,21,FF,F7,EB,FA,9D,F8,07,00,11,23,48,F2,16,02,03,21,FF,F7,E3,FA,9D,F8,07,00,40,F2,02,23,4F,F6,07,22,03,21,FF,F7,DA,FA,9D,F8,07,00,00,23,4F,F4,00,72,07,21,FF,F7,D2,FA,0D,F1,0E,03,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,A5,FA,BD,F8,0E,30,23,F0,0F,03,9B,B2,AD,F8,0E,30,BD,F8,0E,30,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,B9,FA,05,20,FF,F7,B0,F9,9D,F8,07,00,00,23,4F,F4,00,42,03,21,FF,F7,AE,FA,9D,F8,07,00,4F,F4,00,73,4F,F4,01,42,03,21,FF,F7,A5,FA,9D,F8,07,00,02,23,4F,F6,1E,22,03,21,FF,F7,9D,FA,9D,F8,07,00,42,F2,02,43,4F,F6,5C,62,03,21,FF,F7,94,FA,9D,F8,07,00,1F,23,4F,F6,12,22,03,21,FF,F7,8C,FA,9D,F8,07,00,49,F6,05,63,4F,F6,0C,22,03,21,FF,F7,83,FA,9D,F8,07,00,46,F6,62,03,4F,F6,DD,32,03,21,FF,F7,7A,FA,9D,F8,07,00,47,F2,6E,33,4F,F6,DE,32,03,21,FF,F7,71,FA,9D,F8,07,00,47,F6,79,73,4F,F6,DF,32,03,21,FF,F7,68,FA,9D,F8,07,00,48,F6,85,23,4F,F6,E0,32,03,21,FF,F7,5F,FA,9D,F8,07,00,49,F2,90,73,4F,F6,E1,32,03,21,FF,F7,56,FA,9D,F8,07,00,4A,F2,9D,33,4F,F6,E3,32,03,21,FF,F7,4D,FA,9D,F8,07,00,4B,F2,AA,03,4F,F6,E4,32,03,21,FF,F7,44,FA,9D,F8,07,00,B8,23,4F,F6,E5,32,03,21,FF,F7,3C,FA,9D,F8,07,00,40,F6,0A,53,4F,F6,FD,32,03,21,FF,F7,33,FA,9D,F8,07,00,40,F6,06,13,4F,F6,FE,32,03,21,FF,F7,2A,FA,9D,F8,07,00,11,23,48,F2,16,02,03,21,FF,F7,22,FA,9D,F8,07,00,4F,F4,00,63,48,F2,1D,02,03,21,FF,F7,19,FA,3D,E1,9D,F8,07,00,4F,F4,80,43,4F,F4,10,62,01,21,FF,F7,0F,FA,9D,F8,07,00,40,F2,B5,73,4F,F6,E4,72,03,21,FF,F7,06,FA,9D,F8,07,00,40,F2,B6,63,4F,F6,E4,72,03,21,FF,F7,FD,F9,9D,F8,07,00,00,23,4F,F4,00,72,07,21,FF,F7,F5,F9,0D,F1,0E,03,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,C8,F9,BD,F8,0E,30,1B,B2,23,F0,0F,03,1B,B2,43,F0,01,03,1B,B2,9B,B2,AD,F8,0E,30,BD,F8,0E,30,9D,F8,07,00,40,F6,34,02,01,21,FF,F7,D7,F9,05,20,FF,F7,CE,F8,9D,F8,07,00,44,F2,2F,03,4F,F6,DE,72,03,21,FF,F7,CB,F9,9D,F8,07,00,64,23,48,F2,32,02,07,21,FF,F7,C3,F9,9D,F8,07,00,40,F6,01,23,48,F2,31,02,07,21,FF,F7,BA,F9,9D,F8,07,00,40,F6,01,43,48,F2,31,02,07,21,FF,F7,B1,F9,9D,F8,07,00,00,23,4F,F6,0F,62,03,21,FF,F7,A9,F9,9D,F8,07,00,00,23,48,F2,0C,02,03,21,FF,F7,A1,F9,9D,F8,07,00,43,F6,3D,43,4F,F6,2A,62,03,21,FF,F7,98,F9,9D,F8,07,00,4F,F4,00,63,48,F2,1D,02,03,21,FF,F7,8F,F9,9D,F8,07,00,4F,F4,E0,73,4F,F4,7C,42,03,21,FF,F7,86,F9,9D,F8,07,00,40,F2,25,43,4F,F6,17,42,03,21,FF,F7,7D,F9,9D,F8,07,00,45,F2,70,43,4F,F6,94,42,03,21,FF,F7,74,F9,9D,F8,07,00,55,23,4F,F6,95,42,03,21,FF,F7,6C,F9,9D,F8,07,00,40,F6,D8,03,4F,F6,19,42,03,21,FF,F7,63,F9,9D,F8,07,00,4F,F4,88,73,4F,F6,1A,42,03,21,FF,F7,5A,F9,9D,F8,07,00,4F,F4,21,63,4F,F6,1B,42,03,21,FF,F7,51,F9,9D,F8,07,00,42,F2,25,73,4F,F6,3A,42,03,21,FF,F7,48,F9,9D,F8,07,00,42,F2,27,63,4F,F6,61,42,03,21,FF,F7,3F,F9,9D,F8,07,00,41,F2,12,63,4F,F6,3B,42,03,21,FF,F7,36,F9,9D,F8,07,00,41,F6,12,43,4F,F6,62,42,03,21,FF,F7,2D,F9,9D,F8,07,00,46,F2,67,33,4F,F6,9D,42,03,21,FF,F7,24,F9,9D,F8,07,00,48,F2,60,03,4F,F6,9E,42,03,21,FF,F7,1B,F9,9D,F8,07,00,4F,F4,E4,73,4F,F4,7C,42,03,21,FF,F7,12,F9,9D,F8,07,00,00,23,4F,F4,00,42,03,21,FF,F7,0A,F9,9D,F8,07,00,11,23,03,22,03,21,FF,F7,03,F9,9D,F8,07,00,4F,F4,C0,53,4F,F6,A3,52,03,21,FF,F7,FA,F8,9D,F8,07,00,C0,23,4F,F6,02,62,03,21,FF,F7,F2,F8,9D,F8,07,00,10,23,4F,F6,DB,72,03,21,FF,F7,EA,F8,9D,F8,07,00,20,23,4F,F6,F3,72,03,21,FF,F7,E2,F8,9D,F8,07,00,A6,23,4F,F6,40,62,03,21,FF,F7,DA,F8,9D,F8,05,30,01,2B,06,D1,9D,F8,07,30,01,21,18,46,FF,F7,C4,FA,05,E0,9D,F8,07,30,00,21,18,46,FF,F7,BD,FA,9D,F8,04,20,9D,F8,07,30,11,46,18,46,FF,F7,EA,FA,9D,F8,04,20,9D,F8,33,10,9D,F8,07,00,00,23,FF,F7,15,FB,9D,F8,04,20,9D,F8,33,10,9D,F8,07,30,18,46,FF,F7,D5,F8,0E,B0,10,BD,00,BF,08,B5,02,23,01,22,01,21,00,20,FF,F7,5B,FB,00,BF,08,BD,00,00,82,B0,03,46,AD,F8,06,30,BD,F9,06,30,00,2B,0C,DB,BD,F8,06,30,03,F0,1F,02,05,49,BD,F9,06,30,5B,09,01,20,00,FA,02,F2,41,F8,23,20,00,BF,02,B0,70,47,00,E1,00,E0,84,B0,02,92,01,93,03,46,8D,F8,0F,30,0B,46,8D,F8,0E,30,9D,F8,0F,30,5B,08,DB,B2,50,2B,06,D1,9D,F8,0E,30,0A,4A,D2,5C,02,9B,1A,70,0C,E0,9D,F8,0F,30,5B,08,DB,B2,56,2B,06,D1,9D,F8,0E,30,04,4A,D3,5C,DA,B2,02,9B,1A,70,00,BF,04,B0,70,47,C0,05,00,20,C4,07,00,20,82,B0,00,93,03,46,8D,F8,07,30,0B,46,8D,F8,06,30,13,46,8D,F8,05,30,9D,F8,07,30,5B,08,DB,B2,56,2B,0B,D1,9D,F8,06,30,06,49,9D,F8,05,20,CA,54,05,4B,1B,78,01,33,DA,B2,03,4B,1A,70,00,BF,02,B0,70,47,C4,07,00,20,D0,07,00,20,82,B0,03,46,0A,46,8D,F8,07,30,13,46,8D,F8,06,30,9D,F8,07,30,5B,08,DB,B2,56,2B,0E,D1,0A,4B,1B,78,02,2B,05,D8,09,4A,13,7A,43,F0,04,03,13,72,04,E0,06,4A,13,7A,43,F0,20,03,13,72,03,4B,00,22,1A,70,00,BF,02,B0,70,47,00,BF,D0,07,00,20,C4,07,00,20,00,B5,83,B0,3C,4B,1B,68,3C,4A,C3,F8,A0,22,3A,4B,1B,68,3B,4A,C3,F8,A4,22,37,4B,1B,68,39,4A,C3,F8,A8,22,35,4B,1B,68,50,22,83,F8,AE,22,32,4B,1B,68,56,22,83,F8,AF,22,34,4B,03,22,1A,70,32,4B,04,22,5A,70,31,4B,80,22,9A,70,08,22,00,21,2F,48,00,F0,0F,FB,2D,4B,00,22,DA,72,2B,4B,01,22,1A,73,2A,4B,00,22,1A,74,28,4B,00,22,5A,74,27,4B,00,22,DA,73,25,4B,00,22,9A,73,24,4B,0A,22,9A,74,11,22,24,49,24,48,00,F0,1F,F9,03,22,00,21,23,48,00,F0,1A,F9,11,22,22,49,22,48,00,F0,15,F9,04,22,21,49,22,48,00,F0,10,F9,07,22,21,49,21,48,00,F0,0B,F9,20,22,FF,21,20,48,00,F0,DC,FA,1F,4B,00,22,1A,70,1E,4B,00,22,5A,70,1C,4B,00,22,9A,70,1B,4B,00,22,DA,70,19,4B,00,22,1A,71,08,4B,1B,68,B3,F9,92,32,AD,F8,06,30,BD,F9,06,30,18,46,FF,F7,FA,FE,00,BF,00,BF,03,B0,5D,F8,04,FB,00,BF,38,37,00,00,71,2F,00,00,C5,2F,00,00,0D,30,00,00,C0,05,00,20,C3,05,00,20,40,37,00,00,D4,05,00,20,E5,05,00,20,54,37,00,00,E8,05,00,20,68,37,00,00,F8,05,00,20,6C,37,00,00,16,06,00,20,22,06,00,20,C4,07,00,20,00,B5,87,B0,47,4B,9B,68,C3,F3,40,13,DB,B2,00,2B,3E,D0,44,4B,1B,78,8D,F8,17,30,42,4B,5B,78,DB,B2,9B,B2,1B,02,9A,B2,3F,4B,9B,78,DB,B2,9B,B2,13,44,AD,F8,14,30,3B,4B,DB,78,DB,B2,9B,B2,1B,02,9A,B2,38,4B,1B,79,DB,B2,9B,B2,13,44,AD,F8,12,30,35,4A,13,7A,43,F0,40,03,13,72,32,4A,13,7A,6F,F3,45,13,13,72,31,4B,18,68,BD,F8,14,10,9D,F8,17,20,BD,F8,12,30,00,93,0B,46,00,21,FE,F7,BC,F8,29,4A,13,7A,6F,F3,86,13,13,72,27,4A,13,7A,43,F0,80,03,13,72,24,4B,9B,68,C3,F3,80,03,DB,B2,00,2B,3D,D0,21,4B,1B,78,8D,F8,11,30,1F,4B,5B,78,DB,B2,9B,B2,1B,02,9A,B2,1C,4B,9B,78,DB,B2,9B,B2,13,44,AD,F8,0E,30,18,4A,13,7A,43,F0,08,03,13,72,17,4B,18,68,BD,F8,0E,30,9D,F8,11,20,00,21,FE,F7,C8,F8,03,46,AD,F8,0C,30,10,4A,13,7A,43,F0,08,03,13,72,0D,4A,13,7A,6F,F3,82,03,13,72,0B,4B,00,22,DA,70,BD,F8,0C,30,DA,B2,08,4B,1A,71,07,4A,13,7A,6F,F3,C3,03,13,72,04,4A,13,7A,43,F0,10,03,13,72,00,BF,07,B0,5D,F8,04,FB,00,BF,C4,07,00,20,04,00,00,20,01,4B,1B,78,18,46,70,47,D1,07,00,20,08,B5,49,20,FD,F7,30,FD,0C,4A,13,68,43,F0,01,03,13,60,00,BF,09,4B,1B,68,C3,F3,00,03,DB,B2,00,2B,F8,D1,06,4A,13,68,43,F4,00,63,13,60,00,BF,04,4B,03,22,83,F8,32,20,00,BF,08,BD,00,BF,00,24,00,42,D4,07,00,20,00,00,00,00,00,00,00,00,00,00,00,00,00,2A,08,BF,70,47,84,46,01,F0,03,03,43,EA,8C,03,03,F0,0F,03,0F,F2,18,0C,0C,EB,83,03,84,46,D3,F8,00,F0,00,BF,AF,F3,00,80,AF,F3,00,80,AF,F3,00,80,BF,33,00,00,67,35,00,00,53,35,00,00,13,36,00,00,21,36,00,00,9F,33,00,00,75,35,00,00,3D,34,00,00,4B,34,00,00,F7,35,00,00,AD,33,00,00,83,35,00,00,91,35,00,00,45,35,00,00,05,36,00,00,91,33,00,00,11,F8,01,3B,0C,F8,01,3B,01,3A,10,D1,70,47,11,F8,01,3B,0C,F8,01,3B,01,3A,08,BF,70,47,02,2A,F6,D3,31,F8,02,3B,2C,F8,02,3B,02,3A,08,BF,70,47,20,3A,09,D3,2D,E9,F0,07,B1,E8,F8,07,AC,E8,F8,07,20,3A,F9,D2,BD,E8,F0,07,20,32,08,BF,70,47,4F,EA,92,03,C3,F1,07,03,4F,EA,C3,03,9F,44,00,BF,51,F8,04,3B,4C,F8,04,3B,51,F8,04,3B,4C,F8,04,3B,51,F8,04,3B,4C,F8,04,3B,51,F8,04,3B,4C,F8,04,3B,51,F8,04,3B,4C,F8,04,3B,51,F8,04,3B,4C,F8,04,3B,51,F8,04,3B,4C,F8,04,3B,D2,07,24,BF,31,F8,02,3B,2C,F8,02,3B,44,BF,11,F8,01,3B,0C,F8,01,3B,70,47,11,F8,01,3B,0C,F8,01,3B,01,3A,08,BF,70,47,20,3A,2B,D3,2D,E9,F0,07,B1,E8,F8,07,2C,F8,02,3B,4F,EA,13,43,43,EA,04,43,4F,EA,14,44,44,EA,05,44,4F,EA,15,45,45,EA,06,45,4F,EA,16,46,46,EA,07,46,4F,EA,17,47,47,EA,08,47,4F,EA,18,48,48,EA,09,48,4F,EA,19,49,49,EA,0A,49,AC,E8,F8,03,4F,EA,1A,4A,2C,F8,02,AB,20,3A,D7,D2,BD,E8,F0,07,20,32,08,BF,70,47,4F,EA,52,03,C3,F1,0F,03,4F,EA,C3,03,9F,44,00,BF,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,31,F8,02,3B,2C,F8,02,3B,12,F0,01,0F,1C,BF,11,F8,01,3B,0C,F8,01,3B,70,47,11,F8,01,3B,0C,F8,01,3B,01,3A,08,BF,70,47,02,2A,F6,D3,31,F8,02,3B,2C,F8,02,3B,02,3A,7F,F4,73,AF,70,47,11,F8,01,3B,0C,F8,01,3B,01,3A,08,BF,70,47,11,F8,01,3B,0C,F8,01,3B,01,3A,08,BF,70,47,11,F8,01,3B,0C,F8,01,3B,01,3A,08,BF,70,47,20,3A,77,D3,2D,E9,F0,07,B1,E8,F8,07,0C,F8,01,3B,4F,EA,13,23,43,EA,04,63,4F,EA,14,24,44,EA,05,64,4F,EA,15,25,45,EA,06,65,4F,EA,16,26,46,EA,07,66,4F,EA,17,27,47,EA,08,67,4F,EA,18,28,48,EA,09,68,4F,EA,19,29,49,EA,0A,69,AC,E8,F8,03,4F,EA,1A,2A,2C,F8,02,AB,4F,EA,1A,4A,0C,F8,01,AB,20,3A,D3,D2,BD,E8,F0,07,46,E0,11,F8,01,3B,0C,F8,01,3B,01,3A,08,BF,70,47,11,F8,01,3B,0C,F8,01,3B,01,3A,08,BF,70,47,11,F8,01,3B,0C,F8,01,3B,01,3A,08,BF,70,47,20,3A,2F,D3,2D,E9,F0,07,B1,E8,F8,07,0C,F8,01,3B,4F,EA,13,23,2C,F8,02,3B,4F,EA,13,43,43,EA,04,23,4F,EA,14,64,44,EA,05,24,4F,EA,15,65,45,EA,06,25,4F,EA,16,66,46,EA,07,26,4F,EA,17,67,47,EA,08,27,4F,EA,18,68,48,EA,09,28,4F,EA,19,69,49,EA,0A,29,AC,E8,F8,03,4F,EA,1A,6A,0C,F8,01,AB,20,3A,D3,D2,BD,E8,F0,07,20,32,08,BF,70,47,04,3A,0F,D3,51,F8,04,3B,0C,F8,01,3B,4F,EA,13,23,2C,F8,02,3B,4F,EA,13,43,0C,F8,01,3B,08,BF,70,47,04,3A,EF,D2,D2,07,21,BF,31,F8,02,3B,0C,F8,01,3B,1B,0A,0C,F8,01,3B,44,BF,0B,78,8C,F8,00,30,70,47,00,BF,84,46,00,2A,2D,D0,10,F0,03,0F,04,D0,00,F8,01,1B,01,3A,26,D0,F7,E7,C9,B2,41,EA,01,21,41,EA,01,41,20,2A,12,D3,A2,F1,20,02,2D,E9,F0,03,0B,46,0C,46,0D,46,0E,46,0F,46,88,46,89,46,A0,E8,FA,03,20,3A,FB,D2,BD,E8,F0,03,20,32,0B,D0,04,2A,05,D3,40,F8,04,1B,04,3A,05,D0,04,2A,F9,D2,00,F8,01,1B,01,3A,FB,D1,60,46,70,47,00,00,75,02,00,00,48,00,00,20,FC,02,00,20,49,6E,74,72,65,70,69,64,43,53,20,20,20,20,20,20,00,00,00,00,31,30,30,30,42,41,53,45,2D,54,31,20,53,46,50,20,00,00,00,00,30,2E,31,00,32,30,30,35,31,32,00,00,00,6C,DC,02,0C,00,00,20,32,30,30,35,31,32,00,00,00,6C,DC,02,0C,00,00,20,32,30,30,35,31,32,00,00,00,6C,DC,02,0C,00,00,20,32,30,30,35,31,32,00,00,00,6C,DC,02,0C,00,00,20 + net114 + 128 + 1 + False + + + + + out24 + + + Set SFP Module ICS Bootloader I2C2 + out24 + 01C + 01 + net114 + 0 + 1 + 1 + False + + + + + out27 + + + Set SFP Module ICS Main App I2C2 + out27 + 057 + 21 + net114 + 0 + 1 + 1 + False + + + + + out29 + + + Set SFP Module ICS Erase I2C2 + out29 + 057 + 20 + net114 + 0 + 1 + 1 + False + + + + + out31 + + + Set SFP Module ICS Flash Init I2C2 + out31 + 057 + 17 + net114 + 0 + 1 + 1 + False + + + + + out33 + + + Set SFP Module ICS Flash Start I2C2 + out33 + 057 + 18 + net114 + 0 + 1 + 1 + False + + + + + out35 + + + Set SFP Module ICS Reset Bootloader I2C2 + out35 + 057 + 15 + net114 + 0 + 1 + 1 + False + + + + + out38 + + + Set SFP Module ICS Get/Clear Error I2C2 + out38 + 057 + 28 + net114 + 0 + 1 + 1 + False + + + + + out40 + + + 2112 PHY Request ID1 Reg I2C2 + out40 + 40 + L,21,00,02 + net114 + 0 + 3 + 1 + False + + + + + out42 + + + 2112 PHY Request ID2 Reg I2C2 + out42 + 40 + L,21,00,03 + net114 + 0 + 3 + 1 + False + + + + + out44 + + + 2112 PHY Read Reg (2 Bytes) I2C2 + out44 + 40 + 00 + 2B + net114 + 2 + 0 + 1 + False + + + MainAppReadReg + sig0 + 1 + {Raw Value}|0,1,0,16 + 255 + 0 + 43 + True + 16 + 4 + + + + + + + out46 + + + Get SFP Module ICS Phy Fw Vers I2C2 + out46 + 01C + 08 + 00 + net114 + 2 + 1 + 1 + False + + + FwVersionMajor + sig0 + 1 + {Raw Value}|0,1,0,8 + 255 + 0 + 1 + True + 8 + 4 + + + FwVersionMinor + sig1 + 1 + {Raw Value}|0,1,8,8 + 255 + 0 + 0 + 4 + True + 8 + 8 + 4 + + + + + + + + + Light Notification + tst1 + 8 + Capture File Function Block 2 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp3 + 6 + txt + + {greenLED (Value) :sig4-0} + 0 + True=1/False=0 + 0 + 1 + True + {greenLED (Value) :sig4-0} + {greenLED (Value) :sig4-0} + + + + stp6 + 6 + txt + + {redLED (Value) :sig5-0} + 0 + True=1/False=0 + 0 + 1 + True + {redLED (Value) :sig5-0} + {redLED (Value) :sig5-0} + + + + stp22 + 15 + 9 + 9 + txt + + SFP Flasher (Technica variant) (Is Running) + {SFP1 Module Flasher (Is Running) :tst8-0} or {SFP2 Module Flasher (Is Running) :tst6-0} + + + + stp1 + 6 + txt + + {greenLED (Value) :sig4-0} + 1 + True=1/False=0 + 0 + 1 + True + {greenLED (Value) :sig4-0} + {greenLED (Value) :sig4-0} + + + + stp2 + 2 + 250 + -1 + txt + + 250 + + + + stp1 + 6 + txt + + {greenLED (Value) :sig4-0} + 0 + True=1/False=0 + 0 + 1 + True + {greenLED (Value) :sig4-0} + {greenLED (Value) :sig4-0} + + + + stp2 + 2 + 250 + -1 + txt + + 250 + + + + stp20 + 18 + txt + + + + + NotificationMessage + tst4 + 8 + Capture File Function Block 2 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp22 + 15 + 4 + 6 + txt + + SFP Flasher (Technica variant) (Is Running) + {{SFP1 Module Flasher (Is Running) :tst8-0} or {SFP2 Module Flasher (Is Running) :tst6-0} + + + + stp138 + 6 + txt + + {NotifMessage (Value) :sig3-0} + Flasher running... +PLEASE DO NOT POWER OFF THE DEVICE + 0 + True + {NotifMessage (Value) :sig3-0} + {NotifMessage (Value) :sig3-0} + + + + stp25 + 17 + 6 + txt + + + stp138 + 6 + txt + + {NotifMessage (Value) :sig3-0} + Flasher idle + 0 + True + {NotifMessage (Value) :sig3-0} + {NotifMessage (Value) :sig3-0} + + + + stp20 + 18 + txt + + + + + Reset SFP Flasher + tst5 + 8 + Capture File Function Block 2 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp6 + 4 + 3 + 5 + tst8 + SFP1 Module Flasher + + + stp6 + 4 + 3 + 3 + tst6 + SFP2 Module Flasher + + + stp6 + 4 + 3 + 4 + tst7 + Start Flasher + + + stp7 + 1 + 7 + out11 + Set SFP Module ICS Reset Bootloader I2C3 + + + stp8 + 8 + txt + + + + + SFP2 Module Flasher + tst6 + 8 + Capture File Function Block 1 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + True + {\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}} +\viewkind4\uc1\pard\lang1033\f0\fs16\par +} + + out1 + 1 + + + stp0 + 4 + 0 + 0 + tst1 + Light Notification + + + stp0 + 4 + 0 + tst4 + NotificationMessage + + + stp12 + 6 + txt + + {Index (Value) :sig7-0} + 0 + {Index (Value) :sig7-0} + {Index (Value) :sig7-0} + + + + stp50 + 6 + txt + + {MaxLen (Value) :sig11-0} + 128 + {MaxLen (Value) :sig11-0} + {MaxLen (Value) :sig11-0} + + + + stp84 + 6 + txt + + {MaxLen_index (Value) :sig14-0} + 0 + {MaxLen_index (Value) :sig14-0} + {MaxLen_index (Value) :sig14-0} + + + + stp105 + 6 + txt + + {IEF_BLOCK_SIZE (Value) :sig12-0} + 2048 + {IEF_BLOCK_SIZE (Value) :sig12-0} + {IEF_BLOCK_SIZE (Value) :sig12-0} + + + + stp105 + 6 + txt + + {ief_block_index (Value) :sig13-0} + 0 + {ief_block_index (Value) :sig13-0} + {ief_block_index (Value) :sig13-0} + + + + stp85 + 6 + txt + + {ChunkSize (Value) :sig15-0} + 0 + {ChunkSize (Value) :sig15-0} + {ChunkSize (Value) :sig15-0} + + + + stp96 + 6 + txt + + {EndOfBin (Value) :sig16-0} + 0 + {EndOfBin (Value) :sig16-0} + {EndOfBin (Value) :sig16-0} + + + + stp11 + 6 + txt + + {FwMajor (Value) :sig19-0} + 0 + 0 + 255 + {FwMajor (Value) :sig19-0} + {FwMajor (Value) :sig19-0} + + + + stp11 + 6 + txt + + {FwMinor (Value) :sig20-0} + 0 + 0 + 255 + {FwMinor (Value) :sig20-0} + {FwMinor (Value) :sig20-0} + + + + stp11 + 6 + txt + + {Length (Value) :sig8-0} + {MaxLen (Value) :sig11-0} + {Length (Value) :sig8-0} + {Length (Value) :sig8-0} + + + + stp29 + 6 + Please insert size of file here. I have no idea how to detect file size by Load Message Data. Could remake it into CCode + txt + + {File Size (Value) :sig10-0} + 499712 + {File Size (Value) :sig10-0} + {File Size (Value) :sig10-0} + + + + stp130 + 19 + 10 + 0 + txt + + + stp26 + 1 + 2 + out36 + Send sfp module to the bootloader app + Set SFP Module ICS Bootloader I2C3 + + + stp88 + 2 + 2000 + -1 + txt + + 2000 + + + + stp99 + 6 + txt + + {StatusReg (Value) :out9-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out9-sig9-0} + {StatusReg (Value) :out9-sig9-0} + + + + stp61 + 1 + 0 + out9 + Poll status register for bootloader presence + SFP Check Status I2C3 + + + stp88 + 2 + 50 + -1 + txt + + 50 + + + + stp69 + 5 + 123 + If bootloaderReady flag asserted, continue + txt + + StatusReg (Value) + {StatusReg (Value) :out9-sig9-0}=0 + 0 + 255 + + + + stp69 + 5 + 25 + If bootloaderReady flag asserted, continue + txt + + StatusReg (Value) + bit5({StatusReg (Value) :out9-sig9-0})=1 + 0 + 255 + + + + stp66 + 20 + 13 + 0 + txt + + + stp76 + 5 + 108 + If appError bit asserted, reset script + txt + + StatusReg (Value) + bit1({StatusReg (Value) :out9-sig9-0}) = 1 + + + + stp114 + 14 + txt + + + stp99 + 6 + txt + + {StatusReg (Value) :out9-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out9-sig9-0} + {StatusReg (Value) :out9-sig9-0} + + + + stp53 + 1 + 4 + out6 + Erase Main App space + Set SFP Module ICS Erase I2C3 + + + stp61 + 19 + 10 + 0 + out9 + SFP Check Status + + + stp88 + 2 + 100 + -1 + Arbitrary delay + txt + + 100 + + + + stp99 + 6 + txt + + {StatusReg (Value) :out9-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out9-sig9-0} + {StatusReg (Value) :out9-sig9-0} + + + + stp61 + 1 + 0 + out9 + Poll status register for erase finish + SFP Check Status I2C3 + + + stp88 + 2 + 200 + -1 + txt + + 200 + + + + stp69 + 5 + 123 + If bootloaderReady flag asserted, continue + txt + + StatusReg (Value) + {StatusReg (Value) :out9-sig9-0}=0 + 0 + 255 + + + + stp76 + 5 + 37 + If eraseInProgress flag is deasserted, continue + txt + + StatusReg (Value) + bit2({StatusReg (Value) :out9-sig9-0}) = 0 + + + + stp70 + 20 + 26 + 0 + txt + + + stp76 + 5 + 108 + If appError bit asserted, reset script + txt + + StatusReg (Value) + bit1({StatusReg (Value) :out9-sig9-0}) = 1 + + + + stp104 + 14 + txt + + + stp99 + 6 + txt + + {StatusReg (Value) :out9-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out9-sig9-0} + {StatusReg (Value) :out9-sig9-0} + + + + stp53 + 1 + 5 + out8 + Init flashing process (clear buffer, init variables, etc) + Set SFP Module ICS Flash Init I2C3 + + + stp61 + 19 + 10 + 0 + out9 + SFP Check Status + + + stp88 + 2 + 50 + -1 + Arbitrary delay + txt + + 50 + + + + stp99 + 6 + txt + + {StatusReg (Value) :out9-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out9-sig9-0} + {StatusReg (Value) :out9-sig9-0} + + + + stp61 + 1 + 0 + out9 + Poll status register + SFP Check Status I2C3 + + + stp88 + 2 + 100 + -1 + txt + + 100 + + + + stp69 + 5 + 123 + If bootloaderReady flag asserted, continue + txt + + StatusReg (Value) + {StatusReg (Value) :out9-sig9-0}=0 + 0 + 255 + + + + stp76 + 5 + 49 + If flashReady flag asserted, continue + txt + + StatusReg (Value) + bit6({StatusReg (Value) :out9-sig9-0}) = 1 + + + + stp70 + 20 + 38 + 0 + txt + + + stp76 + 5 + 108 + If appError bit asserted, reset script + txt + + StatusReg (Value) + bit1({StatusReg (Value) :out9-sig9-0}) = 1 + + + + stp89 + 14 + txt + + + stp30 + 15 + 95 + 106 + Check to see if we are done flashing + txt + + address (Value) + ({File Size (Value) :sig10-0} - ({ief_block_index (Value) :sig13-0}*{IEF_BLOCK_SIZE (Value) :sig12-0})) > 0 + 0 + 4294967295 + + + + stp92 + 14 + txt + + + stp83 + 19 + 16 + 0 + txt + + + stp99 + 6 + txt + + {StatusReg (Value) :out9-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out9-sig9-0} + {StatusReg (Value) :out9-sig9-0} + + + + stp86 + 6 + txt + + {ChunkSize (Value) :sig15-0} + {File Size (Value) :sig10-0} - ({ief_block_index (Value) :sig13-0}*{IEF_BLOCK_SIZE (Value) :sig12-0}) - ({MaxLen_index (Value) :sig14-0}*{MaxLen (Value) :sig11-0}) + {ChunkSize (Value) :sig15-0} + {ChunkSize (Value) :sig15-0} + + + + stp108 + 15 + 57 + 59 + Check if we have at least 1 128B chunk remaining in the binary to send + txt + + MaxLen (Value) + {ChunkSize (Value) :sig15-0} < {MaxLen (Value) :sig11-0} + + + + stp56 + 6 + Set Load Message Data Length to some size < 128B + txt + + {Length (Value) :sig8-0} + {ChunkSize (Value) :sig15-0} + {Length (Value) :sig8-0} + {Length (Value) :sig8-0} + + + + stp97 + 6 + txt + + {EndOfBin (Value) :sig16-0} + 1 + {EndOfBin (Value) :sig16-0} + {EndOfBin (Value) :sig16-0} + + + + stp75 + 17 + 59 + txt + + + stp56 + 6 + Set Load Message Data Length to 128B + txt + + {Length (Value) :sig8-0} + {MaxLen (Value) :sig11-0} + {Length (Value) :sig8-0} + {Length (Value) :sig8-0} + + + + stp79 + 18 + txt + + + stp155 + 15 + 62 + 66 + SFP-MV2112 + txt + + SFP_MSA_SN_UPPER(69B:70B) (Value) + {SFP_MSA_SN_UPPER(69B:70B) (Value) :out26-sig16-0}=0x5331 + 0 + 65535 + + + + stp40 + 24 + 3 + out10,sig7,sig8,65537, + Load sfp_module.msgbin chunk to Message + 4 + sfp_mv2112_a2_mchip + + + stp156 + 16 + 64 + 66 + SFP-MV2221 + txt + + SFP_MSA_SN_UPPER(69B:70B) (Value) + {SFP_MSA_SN_UPPER(69B:70B) (Value) :out26-sig16-0}=0x5332 + 0 + 65535 + + + + stp40 + 24 + 3 + out10,sig7,sig8,65537, + Load sfp_module.msgbin chunk to Message + 4 + sfp_mv2221m_b1_mchip + + + stp161 + 17 + 66 + txt + + + stp162 + 8 + txt + + + stp160 + 18 + txt + + + stp73 + 6 + Set SFP Send Firmware message length + txt + + {SFP Send Firmware 16 I2C3 (Message Length) :out10-17} + {Length (Value) :sig8-0} + {SFP Send Firmware 16 I2C3 (Message Length) :out10-17} + {SFP Send Firmware 16 I2C3 (Message Length) :out10-17} + + + + stp10 + 1 + out10 + Send firmware binary bytes to the device to be flashed + SFP Send Firmware 16 I2C3 + + + stp98 + 2 + 10 + -1 + arbitrary delay + txt + + 10 + + + + stp99 + 6 + txt + + {StatusReg (Value) :out9-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out9-sig9-0} + {StatusReg (Value) :out9-sig9-0} + + + + stp61 + 1 + 0 + out9 + Poll status register + SFP Check Status I2C3 + + + stp88 + 2 + 75 + -1 + txt + + 75 + + + + stp69 + 5 + 123 + If bootloaderReady flag asserted, continue + txt + + StatusReg (Value) + {StatusReg (Value) :out9-sig9-0}=0 + 0 + 255 + + + + stp76 + 5 + 108 + If appError bit asserted, reset script + txt + + StatusReg (Value) + bit1({StatusReg (Value) :out9-sig9-0}) = 1 + + + + stp18 + 6 + Increment Index for next Load Message Data + txt + + {Index (Value) :sig7-0} + {Index (Value) :sig7-0} + 128 + {Index (Value) :sig7-0} + {Index (Value) :sig7-0} + + + + stp90 + 6 + Increment chunk index + txt + + {MaxLen_index (Value) :sig14-0} + {MaxLen_index (Value) :sig14-0} + 1 + {MaxLen_index (Value) :sig14-0} + {MaxLen_index (Value) :sig14-0} + + + + stp87 + 5 + 80 + If Length /= 128, reached the final chunk of the binary, lets exit + txt + + EndOfBin (Value) + {EndOfBin (Value) :sig16-0} = 1 + + + + stp109 + 20 + 50 + 0 + txt + + + stp91 + 14 + txt + + + stp99 + 6 + txt + + {StatusReg (Value) :out9-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out9-sig9-0} + {StatusReg (Value) :out9-sig9-0} + + + + stp111 + 6 + Reset chunk index + txt + + {MaxLen_index (Value) :sig14-0} + 0 + {MaxLen_index (Value) :sig14-0} + {MaxLen_index (Value) :sig14-0} + + + + stp53 + 1 + 6 + out12 + Start flashing process + Set SFP Module ICS Flash Start I2C3 + + + stp61 + 19 + 20 + 0 + out9 + SFP Check Status + + + stp88 + 2 + 10 + -1 + Arbitrary delay + txt + + 10 + + + + stp99 + 6 + txt + + {StatusReg (Value) :out9-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out9-sig9-0} + {StatusReg (Value) :out9-sig9-0} + + + + stp61 + 1 + 0 + out9 + Poll status register + SFP Check Status I2C3 + + + stp88 + 2 + 0 + -1 + txt + + 95 + + + + stp69 + 5 + 123 + If bootloaderReady flag asserted, continue + txt + + StatusReg (Value) + {StatusReg (Value) :out9-sig9-0}=0 + 0 + 255 + + + + stp76 + 5 + 92 + If flashInProgress flag is deasserted, continue + txt + + StatusReg (Value) + bit3({StatusReg (Value) :out9-sig9-0}) = 0 and bit5({StatusReg (Value) :out9-sig9-0}) = 1 + + + + stp70 + 20 + 82 + 0 + txt + + + stp76 + 5 + 108 + If appError bit asserted, reset script + txt + + StatusReg (Value) + bit1({StatusReg (Value) :out9-sig9-0}) = 1 + + + + stp112 + 6 + Increment ief_block_index + txt + + {ief_block_index (Value) :sig13-0} + {ief_block_index (Value) :sig13-0} + 1 + {ief_block_index (Value) :sig13-0} + {ief_block_index (Value) :sig13-0} + + + + stp124 + 49 + txt + + + stp126 + 14 + txt + + + stp122 + 17 + 106 + Done flashing - lets jump to main app + txt + + + stp51 + 2 + 1000 + -1 + txt + + 1000 + + + + stp99 + 6 + txt + + {StatusReg (Value) :out9-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out9-sig9-0} + {StatusReg (Value) :out9-sig9-0} + + + + stp67 + 1 + 3 + out5 + Reset into main app + Set SFP Module ICS Main App I2C3 + + + stp121 + 2 + 3000 + -1 + txt + + 3000 + + + + stp99 + 6 + txt + + {MainAppReadReg (Value) :out18-sig0-0} + 0 + 0 + 255 + {MainAppReadReg (Value) :out18-sig0-0} + {MainAppReadReg (Value) :out18-sig0-0} + + + + stp61 + 1 + 9 + out16 + Poll status register + 2112 PHY Request ID1 Reg I2C3 + + + stp132 + 1 + 11 + out18 + 2112 PHY Read Reg (2 Bytes) I2C3 + + + stp119 + 2 + 3000 + -1 + txt + + 3000 + + + + stp69 + 5 + 113 + If were in Main app, end flashing; otherwise, restart + txt + + StatusReg (Value) + {MainAppReadReg (Value) :out18-sig0-0} = 43 + 0 + 255 + + + + stp94 + 14 + txt + + + stp93 + 18 + txt + + + stp131 + 14 + txt + + + stp12 + 6 + txt + + {ErrorNotifMessage (Value) :sig17-0} + Some went wrong during flashing....retrying... + 0 + True + {ErrorNotifMessage (Value) :sig17-0} + {ErrorNotifMessage (Value) :sig17-0} + + + + stp127 + 1 + 8 + out14 + clear error + Set SFP Module ICS Get/Clear Error I2C3 + + + stp128 + 2 + 1000 + -1 + txt + + 1000 + + + + stp129 + 3 + txt + + + stp136 + 14 + txt + + + stp11 + 6 + txt + + {FwVersionMinor (Value) :out15-sig1-0} + 0 + 0 + 255 + {FwVersionMinor (Value) :out15-sig1-0} + {FwVersionMinor (Value) :out15-sig1-0} + + + + stp11 + 6 + txt + + {FwVersionMajor (Value) :out15-sig0-0} + 0 + 0 + 255 + {FwVersionMajor (Value) :out15-sig0-0} + {FwVersionMajor (Value) :out15-sig0-0} + + + + stp125 + 1 + 12 + out15 + Read/Fill fw version + Get SFP Module ICS Phy Fw Vers I2C3 + + + stp128 + 2 + 500 + -1 + txt + + 500 + + + + stp11 + 6 + txt + + {FwMajor (Value) :sig19-0} + {FwVersionMajor (Value) :out15-sig0-0} + 0 + 255 + {FwMajor (Value) :sig19-0} + {FwMajor (Value) :sig19-0} + + + + stp11 + 6 + txt + + {FwMinor (Value) :sig20-0} + {FwVersionMinor (Value) :out15-sig1-0} + 0 + 255 + {FwMinor (Value) :sig20-0} + {FwMinor (Value) :sig20-0} + + + + stp12 + 6 + txt + + {ErrorNotifMessage (Value) :sig17-0} + Flashing Successful + 0 + True + {ErrorNotifMessage (Value) :sig17-0} + {ErrorNotifMessage (Value) :sig17-0} + + + + stp46 + 4 + 3 + 0 + tst1 + Light Notification + + + stp137 + 8 + txt + + + stp6 + 6 + txt + + {redLED (Value) :sig5-0} + 1 + True=1/False=0 + 0 + 1 + True + {redLED (Value) :sig5-0} + {redLED (Value) :sig5-0} + + + + stp12 + 6 + txt + + {ErrorNotifMessage (Value) :sig17-0} + Flashing aborted because of a fatal issue. +Please make sure a supported ICS SFP module is properly +seated and retry. + 0 + True + {ErrorNotifMessage (Value) :sig17-0} + {ErrorNotifMessage (Value) :sig17-0} + + + + stp137 + 8 + txt + + + stp150 + 14 + txt + + + + + Start Flasher + tst7 + 8 + Capture File Function Block 8 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA(1B:20B) (Value) :out26-sig2-0} + 0 + 0 + 340282366920938463463374607431768211455 + {SFP_MSA(1B:20B) (Value) :out26-sig2-0} + {SFP_MSA(1B:20B) (Value) :out26-sig2-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA(37B:64B) (Value) :out26-sig4-0} + 0 + 0 + 4194303 + {SFP_MSA(37B:64B) (Value) :out26-sig4-0} + {SFP_MSA(37B:64B) (Value) :out26-sig4-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA(65B:68B) (Value) :out26-sig5-0} + 0 + 0 + 33554431 + {SFP_MSA(65B:68B) (Value) :out26-sig5-0} + {SFP_MSA(65B:68B) (Value) :out26-sig5-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_SPEC_BL_FLAG (Value) :out23-sig9-0} + 0 + 0 + 255 + {SFP_MSA_VENDOR_SPEC_BL_FLAG (Value) :out23-sig9-0} + {SFP_MSA_VENDOR_SPEC_BL_FLAG (Value) :out23-sig9-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_SPEC_MDIO_ADDR (Value) :out23-sig6-0} + 0 + 0 + 255 + {SFP_MSA_VENDOR_SPEC_MDIO_ADDR (Value) :out23-sig6-0} + {SFP_MSA_VENDOR_SPEC_MDIO_ADDR (Value) :out23-sig6-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_NAME_ICS (Value) :out23-sig3-0} + 0 + 0 + 65535 + {SFP_MSA_VENDOR_NAME_ICS (Value) :out23-sig3-0} + {SFP_MSA_VENDOR_NAME_ICS (Value) :out23-sig3-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_NAME_ICS2 (Value) :out23-sig12-0} + 0 + 0 + 65535 + {SFP_MSA_VENDOR_NAME_ICS2 (Value) :out23-sig12-0} + {SFP_MSA_VENDOR_NAME_ICS2 (Value) :out23-sig12-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_NAME_ICS3 (Value) :out23-sig13-0} + 0 + 0 + 65535 + {SFP_MSA_VENDOR_NAME_ICS3 (Value) :out23-sig13-0} + {SFP_MSA_VENDOR_NAME_ICS3 (Value) :out23-sig13-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_NAME_ICS4 (Value) :out23-sig14-0} + 0 + 0 + 65535 + {SFP_MSA_VENDOR_NAME_ICS4 (Value) :out23-sig14-0} + {SFP_MSA_VENDOR_NAME_ICS4 (Value) :out23-sig14-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_NAME_ICS5 (Value) :out23-sig15-0} + 0 + 0 + 65535 + {SFP_MSA_VENDOR_NAME_ICS5 (Value) :out23-sig15-0} + {SFP_MSA_VENDOR_NAME_ICS5 (Value) :out23-sig15-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_SPEC_OVERRIDE_FLAGS (Value) :out23-sig10-0} + 0 + 0 + 255 + {SFP_MSA_VENDOR_SPEC_OVERRIDE_FLAGS (Value) :out23-sig10-0} + {SFP_MSA_VENDOR_SPEC_OVERRIDE_FLAGS (Value) :out23-sig10-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_SPEC_RESERVED (Value) :out23-sig8-0} + 0 + 0 + 4194303 + {SFP_MSA_VENDOR_SPEC_RESERVED (Value) :out23-sig8-0} + {SFP_MSA_VENDOR_SPEC_RESERVED (Value) :out23-sig8-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_SPEC_SETTINGS (Value) :out23-sig7-0} + 0 + 0 + 255 + {SFP_MSA_VENDOR_SPEC_SETTINGS (Value) :out23-sig7-0} + {SFP_MSA_VENDOR_SPEC_SETTINGS (Value) :out23-sig7-0} + + + + stp26 + 1 + 14 + out23 + Read MSA table from SFP1 port + Read SFP MSA I2C2 + + + stp4 + 2 + 500 + -1 + arbitrary delay + txt + + 500 + + + + stp20 + 5 + 35 + Verify ICS SFP Module present + txt + + SFP_MSA_VENDOR_NAME_ICS (Value) + {SFP_MSA_VENDOR_NAME_ICS (Value) :out23-sig3-0}=0x496E and {SFP_MSA_VENDOR_NAME_ICS2 (Value) :out23-sig12-0}=0x7472 and {SFP_MSA_VENDOR_NAME_ICS3 (Value) :out23-sig13-0}=0x6570 and {SFP_MSA_VENDOR_NAME_ICS4 (Value) :out23-sig14-0}=0x6964 and {SFP_MSA_VENDOR_NAME_ICS5 (Value) :out23-sig15-0}=0x4353 + 0 + 65535 + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA(1B:20B) (Value) :out26-sig2-0} + 0 + 0 + 340282366920938463463374607431768211455 + {SFP_MSA(1B:20B) (Value) :out26-sig2-0} + {SFP_MSA(1B:20B) (Value) :out26-sig2-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA(37B:64B) (Value) :out26-sig4-0} + 0 + 0 + 4194303 + {SFP_MSA(37B:64B) (Value) :out26-sig4-0} + {SFP_MSA(37B:64B) (Value) :out26-sig4-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA(65B:68B) (Value) :out26-sig5-0} + 0 + 0 + 33554431 + {SFP_MSA(65B:68B) (Value) :out26-sig5-0} + {SFP_MSA(65B:68B) (Value) :out26-sig5-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_SPEC_BL_FLAG (Value) :out26-sig9-0} + 0 + 0 + 255 + {SFP_MSA_VENDOR_SPEC_BL_FLAG (Value) :out26-sig9-0} + {SFP_MSA_VENDOR_SPEC_BL_FLAG (Value) :out26-sig9-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_SPEC_MDIO_ADDR (Value) :out26-sig6-0} + 0 + 0 + 255 + {SFP_MSA_VENDOR_SPEC_MDIO_ADDR (Value) :out26-sig6-0} + {SFP_MSA_VENDOR_SPEC_MDIO_ADDR (Value) :out26-sig6-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_NAME_ICS (Value) :out26-sig3-0} + 0 + 0 + 340282366920938463463374607431768211455 + {SFP_MSA_VENDOR_NAME_ICS (Value) :out26-sig3-0} + {SFP_MSA_VENDOR_NAME_ICS (Value) :out26-sig3-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_NAME_ICS2 (Value) :out26-sig12-0} + 0 + 0 + 65535 + {SFP_MSA_VENDOR_NAME_ICS2 (Value) :out26-sig12-0} + {SFP_MSA_VENDOR_NAME_ICS2 (Value) :out26-sig12-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_NAME_ICS3 (Value) :out26-sig13-0} + 0 + 0 + 65535 + {SFP_MSA_VENDOR_NAME_ICS3 (Value) :out26-sig13-0} + {SFP_MSA_VENDOR_NAME_ICS3 (Value) :out26-sig13-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_NAME_ICS4 (Value) :out26-sig14-0} + 0 + 0 + 65535 + {SFP_MSA_VENDOR_NAME_ICS4 (Value) :out26-sig14-0} + {SFP_MSA_VENDOR_NAME_ICS4 (Value) :out26-sig14-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_NAME_ICS5 (Value) :out26-sig15-0} + 0 + 0 + 65535 + {SFP_MSA_VENDOR_NAME_ICS5 (Value) :out26-sig15-0} + {SFP_MSA_VENDOR_NAME_ICS5 (Value) :out26-sig15-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_SPEC_OVERRIDE_FLAGS (Value) :out26-sig10-0} + 0 + 0 + 255 + {SFP_MSA_VENDOR_SPEC_OVERRIDE_FLAGS (Value) :out26-sig10-0} + {SFP_MSA_VENDOR_SPEC_OVERRIDE_FLAGS (Value) :out26-sig10-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_SPEC_RESERVED (Value) :out26-sig8-0} + 0 + 0 + 4194303 + {SFP_MSA_VENDOR_SPEC_RESERVED (Value) :out26-sig8-0} + {SFP_MSA_VENDOR_SPEC_RESERVED (Value) :out26-sig8-0} + + + + stp29 + 6 + clear msa table + txt + + {SFP_MSA_VENDOR_SPEC_SETTINGS (Value) :out26-sig7-0} + 0 + 0 + 255 + {SFP_MSA_VENDOR_SPEC_SETTINGS (Value) :out26-sig7-0} + {SFP_MSA_VENDOR_SPEC_SETTINGS (Value) :out26-sig7-0} + + + + stp26 + 1 + 13 + out26 + Read MSA table from SFP2 port + Read SFP MSA I2C3 + + + stp4 + 2 + 500 + -1 + arbitrary delay + txt + + 500 + + + + stp20 + 5 + 51 + Verify ICS SFP Module present + txt + + SFP_MSA_VENDOR_NAME_ICS (Value) + ({SFP_MSA_VENDOR_NAME_ICS (Value) :out26-sig3-0}=0x496E) and ({SFP_MSA_VENDOR_NAME_ICS2 (Value) :out26-sig12-0}=0x7472) and ({SFP_MSA_VENDOR_NAME_ICS3 (Value) :out26-sig13-0}=0x6570) and ({SFP_MSA_VENDOR_NAME_ICS4 (Value) :out26-sig14-0}=0x6964) and ({SFP_MSA_VENDOR_NAME_ICS5 (Value) :out26-sig15-0}=0x4353) + 0 + 65535 + + + + stp3 + 6 + Notify SFP1 port found + txt + + {ErrorNotifMessage (Value) :sig17-0} + No ICS SFP modules found. +Please insert ICS SFP module and retry. + 0 + True + {ErrorNotifMessage (Value) :sig17-0} + {ErrorNotifMessage (Value) :sig17-0} + + + + stp1 + 8 + txt + + + stp3 + 6 + Notify SFP1 port found + txt + + {ErrorNotifMessage (Value) :sig17-0} + ICS SFP-MV2112 module found on SFP1 port... + 0 + True + {ErrorNotifMessage (Value) :sig17-0} + {ErrorNotifMessage (Value) :sig17-0} + + + + stp63 + 5 + 40 + txt + + SFP_MSA_SN_UPPER(69B:70B) (Value) + {SFP_MSA_SN_UPPER(69B:70B) (Value) :out23-sig16-0}=0x5331 + 0 + 65535 + + + + stp3 + 6 + Notify SFP1 port found + txt + + {ErrorNotifMessage (Value) :sig17-0} + ICS SFP-MV2221M module found on SFP1 port... + 0 + True + {ErrorNotifMessage (Value) :sig17-0} + {ErrorNotifMessage (Value) :sig17-0} + + + + stp64 + 5 + 40 + txt + + SFP_MSA_SN_UPPER(69B:70B) (Value) + {SFP_MSA_SN_UPPER(69B:70B) (Value) :out23-sig16-0}=0x5332 + 0 + 65535 + + + + stp69 + 67 + unsupported ICS SFP module + txt + + + stp4 + 2 + 2000 + -1 + arbitrary delay + txt + + 2000 + + + + stp40 + 15 + 43 + 45 + txt + + SFP_MSA_VENDOR_SPEC_OVERRIDE_FLAGS (Value) + bit0({SFP_MSA_VENDOR_SPEC_OVERRIDE_FLAGS (Value) :out23-sig10-0})=0 + 0 + 255 + + + + stp38 + 6 + txt + + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + {SFP_MSA_VENDOR_SPEC_MDIO_ADDR (Value) :out23-sig6-0} + 0 + 255 + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + + + + stp41 + 17 + 45 + txt + + + stp38 + 6 + txt + + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + 0x40 + hex + True + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + + + + stp42 + 18 + txt + + + stp8 + 6 + txt + + {2112 PHY Request ID1 Reg I2C2 (Address) :out40-12} + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + {2112 PHY Request ID1 Reg I2C2 (Address) :out40-12} + {2112 PHY Request ID1 Reg I2C2 (Address) :out40-12} + + + + stp8 + 6 + txt + + {2112 PHY Request ID2 Reg I2C2 (Address) :out42-12} + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + {2112 PHY Request ID2 Reg I2C2 (Address) :out42-12} + {2112 PHY Request ID2 Reg I2C2 (Address) :out42-12} + + + + stp8 + 6 + txt + + {2112 PHY Read Reg (2 Bytes) I2C2 (Address) :out44-12} + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + {2112 PHY Read Reg (2 Bytes) I2C2 (Address) :out44-12} + {2112 PHY Read Reg (2 Bytes) I2C2 (Address) :out44-12} + + + + stp5 + 4 + 0 + 5 + tst8 + call sfp flasher for SFP1 port + SFP1 Module Flasher + + + stp6 + 8 + txt + + + stp3 + 6 + Notify SFP1 port found + txt + + {ErrorNotifMessage (Value) :sig17-0} + ICS SFP-MV2112 module found on SFP2 port... + 0 + True + {ErrorNotifMessage (Value) :sig17-0} + {ErrorNotifMessage (Value) :sig17-0} + + + + stp63 + 5 + 56 + txt + + SFP_MSA_SN_UPPER(69B:70B) (Value) + {SFP_MSA_SN_UPPER(69B:70B) (Value) :out26-sig16-0}=0x5331 + 0 + 65535 + + + + stp3 + 6 + Notify SFP1 port found + txt + + {ErrorNotifMessage (Value) :sig17-0} + ICS SFP-MV2221M module found on SFP2 port... + 0 + True + {ErrorNotifMessage (Value) :sig17-0} + {ErrorNotifMessage (Value) :sig17-0} + + + + stp64 + 5 + 56 + txt + + SFP_MSA_SN_UPPER(69B:70B) (Value) + {SFP_MSA_SN_UPPER(69B:70B) (Value) :out26-sig16-0}=0x5332 + 0 + 65535 + + + + stp69 + 67 + unsupported ICS SFP module + txt + + + stp4 + 2 + 2000 + -1 + arbitrary delay + txt + + 2000 + + + + stp40 + 15 + 59 + 61 + txt + + SFP_MSA_VENDOR_SPEC_OVERRIDE_FLAGS (Value) + bit0({SFP_MSA_VENDOR_SPEC_OVERRIDE_FLAGS (Value) :out26-sig10-0})=0 + 0 + 255 + + + + stp38 + 6 + txt + + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + {SFP_MSA_VENDOR_SPEC_MDIO_ADDR (Value) :out26-sig6-0} + 0 + 255 + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + + + + stp41 + 17 + 61 + txt + + + stp38 + 6 + txt + + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + 0x40 + hex + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + + + + stp42 + 18 + txt + + + stp8 + 6 + txt + + {2112 PHY Request ID1 Reg I2C3 (Address) :out16-12} + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + {2112 PHY Request ID1 Reg I2C3 (Address) :out16-12} + {2112 PHY Request ID1 Reg I2C3 (Address) :out16-12} + + + + stp8 + 6 + txt + + {2112 PHY Request ID2 Reg I2C3 (Address) :out7-12} + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + {2112 PHY Request ID2 Reg I2C3 (Address) :out7-12} + {2112 PHY Request ID2 Reg I2C3 (Address) :out7-12} + + + + stp8 + 6 + txt + + {2112 PHY Read Reg (2 Bytes) I2C3 (Address) :out18-12} + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + {2112 PHY Read Reg (2 Bytes) I2C3 (Address) :out18-12} + {2112 PHY Read Reg (2 Bytes) I2C3 (Address) :out18-12} + + + + stp5 + 4 + 0 + 3 + tst6 + call sfp flasher for SFP2 port + SFP2 Module Flasher + + + stp7 + 8 + txt + + + stp3 + 6 + Notify SFP1 port found + txt + + {ErrorNotifMessage (Value) :sig17-0} + Unsupported ICS SFP module found. +Please insert supported ICS SFP module and retry. + 0 + True + {ErrorNotifMessage (Value) :sig17-0} + {ErrorNotifMessage (Value) :sig17-0} + + + + stp9 + 8 + txt + + + + + SFP1 Module Flasher + tst8 + 8 + Capture File Function Block 1 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + True + {\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}} +\viewkind4\uc1\pard\lang1033\f0\fs16\par +} + + out1 + 1 + + + stp0 + 4 + 0 + 0 + tst1 + Light Notification + + + stp0 + 4 + 0 + tst4 + NotificationMessage + + + stp12 + 6 + txt + + {Index (Value) :sig7-0} + 0 + {Index (Value) :sig7-0} + {Index (Value) :sig7-0} + + + + stp50 + 6 + txt + + {MaxLen (Value) :sig11-0} + 128 + {MaxLen (Value) :sig11-0} + {MaxLen (Value) :sig11-0} + + + + stp84 + 6 + txt + + {MaxLen_index (Value) :sig14-0} + 0 + {MaxLen_index (Value) :sig14-0} + {MaxLen_index (Value) :sig14-0} + + + + stp105 + 6 + txt + + {IEF_BLOCK_SIZE (Value) :sig12-0} + 2048 + {IEF_BLOCK_SIZE (Value) :sig12-0} + {IEF_BLOCK_SIZE (Value) :sig12-0} + + + + stp105 + 6 + txt + + {ief_block_index (Value) :sig13-0} + 0 + {ief_block_index (Value) :sig13-0} + {ief_block_index (Value) :sig13-0} + + + + stp85 + 6 + txt + + {ChunkSize (Value) :sig15-0} + 0 + {ChunkSize (Value) :sig15-0} + {ChunkSize (Value) :sig15-0} + + + + stp96 + 6 + txt + + {EndOfBin (Value) :sig16-0} + 0 + {EndOfBin (Value) :sig16-0} + {EndOfBin (Value) :sig16-0} + + + + stp11 + 6 + txt + + {FwMajor (Value) :sig19-0} + 0 + 0 + 255 + {FwMajor (Value) :sig19-0} + {FwMajor (Value) :sig19-0} + + + + stp11 + 6 + txt + + {FwMinor (Value) :sig20-0} + 0 + 0 + 255 + {FwMinor (Value) :sig20-0} + {FwMinor (Value) :sig20-0} + + + + stp11 + 6 + txt + + {Length (Value) :sig8-0} + {MaxLen (Value) :sig11-0} + {Length (Value) :sig8-0} + {Length (Value) :sig8-0} + + + + stp29 + 6 + Please insert size of file here. I have no idea how to detect file size by Load Message Data. Could remake it into CCode + txt + + {File Size (Value) :sig10-0} + 499712 + {File Size (Value) :sig10-0} + {File Size (Value) :sig10-0} + + + + stp130 + 19 + 10 + 0 + txt + + + stp26 + 1 + 17 + out24 + Send sfp module to the bootloader app + Set SFP Module ICS Bootloader I2C2 + + + stp88 + 2 + 2000 + -1 + txt + + 2000 + + + + stp99 + 6 + txt + + {StatusReg (Value) :out19-sig9-0} + 0 + 0 + 0 + 255 + {StatusReg (Value) :out19-sig9-0} + {StatusReg (Value) :out19-sig9-0} + + + + stp61 + 1 + 15 + out19 + Poll status register for bootloader presence + SFP Check Status I2C2 + + + stp88 + 2 + 50 + -1 + txt + + 50 + + + + stp69 + 5 + 123 + If bootloaderReady flag asserted, continue + txt + + StatusReg (Value) + {StatusReg (Value) :out19-sig9-0}=0 + 0 + 255 + + + + stp69 + 5 + 25 + If bootloaderReady flag asserted, continue + txt + + StatusReg (Value) + bit5({StatusReg (Value) :out19-sig9-0})=1 + 0 + 255 + + + + stp66 + 20 + 13 + 0 + txt + + + stp76 + 5 + 108 + If appError bit asserted, reset script + txt + + StatusReg (Value) + bit1({StatusReg (Value) :out19-sig9-0}) = 1 + + + + stp114 + 14 + txt + + + stp99 + 6 + txt + + {StatusReg (Value) :out19-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out19-sig9-0} + {StatusReg (Value) :out19-sig9-0} + + + + stp53 + 1 + 19 + out29 + Erase Main App space + Set SFP Module ICS Erase I2C2 + + + stp61 + 19 + 10 + 0 + out9 + SFP Check Status + + + stp88 + 2 + 100 + -1 + Arbitrary delay + txt + + 100 + + + + stp99 + 6 + txt + + {StatusReg (Value) :out19-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out19-sig9-0} + {StatusReg (Value) :out19-sig9-0} + + + + stp61 + 1 + 15 + out19 + Poll status register for erase finish + SFP Check Status I2C2 + + + stp88 + 2 + 200 + -1 + txt + + 200 + + + + stp69 + 5 + 123 + If bootloaderReady flag asserted, continue + txt + + StatusReg (Value) + {StatusReg (Value) :out19-sig9-0}=0 + 0 + 255 + + + + stp76 + 5 + 37 + If eraseInProgress flag is deasserted, continue + txt + + StatusReg (Value) + bit2({StatusReg (Value) :out19-sig9-0}) = 0 + + + + stp70 + 20 + 26 + 0 + txt + + + stp76 + 5 + 108 + If appError bit asserted, reset script + txt + + StatusReg (Value) + bit1({StatusReg (Value) :out19-sig9-0}) = 1 + + + + stp104 + 14 + txt + + + stp99 + 6 + txt + + {StatusReg (Value) :out19-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out19-sig9-0} + {StatusReg (Value) :out19-sig9-0} + + + + stp53 + 1 + 20 + out31 + Init flashing process (clear buffer, init variables, etc) + Set SFP Module ICS Flash Init I2C2 + + + stp61 + 19 + 10 + 0 + out9 + SFP Check Status + + + stp88 + 2 + 50 + -1 + Arbitrary delay + txt + + 50 + + + + stp99 + 6 + txt + + {StatusReg (Value) :out19-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out19-sig9-0} + {StatusReg (Value) :out19-sig9-0} + + + + stp61 + 1 + 15 + out19 + Poll status register + SFP Check Status I2C2 + + + stp88 + 2 + 100 + -1 + txt + + 100 + + + + stp69 + 5 + 123 + If bootloaderReady flag asserted, continue + txt + + StatusReg (Value) + {StatusReg (Value) :out19-sig9-0}=0 + 0 + 255 + + + + stp76 + 5 + 49 + If flashReady flag asserted, continue + txt + + StatusReg (Value) + bit6({StatusReg (Value) :out19-sig9-0}) = 1 + + + + stp70 + 20 + 38 + 0 + txt + + + stp76 + 5 + 108 + If appError bit asserted, reset script + txt + + StatusReg (Value) + bit1({StatusReg (Value) :out19-sig9-0}) = 1 + + + + stp89 + 14 + txt + + + stp30 + 15 + 95 + 106 + Check to see if we are done flashing + txt + + address (Value) + ({File Size (Value) :sig10-0} - ({ief_block_index (Value) :sig13-0}*{IEF_BLOCK_SIZE (Value) :sig12-0})) > 0 + 0 + 4294967295 + + + + stp92 + 14 + txt + + + stp83 + 19 + 16 + 0 + txt + + + stp99 + 6 + txt + + {StatusReg (Value) :out19-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out19-sig9-0} + {StatusReg (Value) :out19-sig9-0} + + + + stp86 + 6 + txt + + {ChunkSize (Value) :sig15-0} + {File Size (Value) :sig10-0} - ({ief_block_index (Value) :sig13-0}*{IEF_BLOCK_SIZE (Value) :sig12-0}) - ({MaxLen_index (Value) :sig14-0}*{MaxLen (Value) :sig11-0}) + {ChunkSize (Value) :sig15-0} + {ChunkSize (Value) :sig15-0} + + + + stp108 + 15 + 57 + 59 + Check if we have at least 1 128B chunk remaining in the binary to send + txt + + MaxLen (Value) + {ChunkSize (Value) :sig15-0} < {MaxLen (Value) :sig11-0} + + + + stp56 + 6 + Set Load Message Data Length to some size < 128B + txt + + {Length (Value) :sig8-0} + {ChunkSize (Value) :sig15-0} + {Length (Value) :sig8-0} + {Length (Value) :sig8-0} + + + + stp97 + 6 + txt + + {EndOfBin (Value) :sig16-0} + 1 + {EndOfBin (Value) :sig16-0} + {EndOfBin (Value) :sig16-0} + + + + stp75 + 17 + 59 + txt + + + stp56 + 6 + Set Load Message Data Length to 128B + txt + + {Length (Value) :sig8-0} + {MaxLen (Value) :sig11-0} + {Length (Value) :sig8-0} + {Length (Value) :sig8-0} + + + + stp79 + 18 + txt + + + stp155 + 15 + 62 + 66 + SFP-MV2112 + txt + + SFP_MSA_SN_UPPER(69B:70B) (Value) + {SFP_MSA_SN_UPPER(69B:70B) (Value) :out23-sig16-0}=0x5331 + 0 + 65535 + + + + stp40 + 24 + 16 + 3 + out21,sig7,sig8,65537, + Load sfp_module.msgbin chunk to Message + 4 + sfp_mv2112_a2_mchip + + + stp156 + 16 + 64 + 66 + SFP-MV2221M + txt + + SFP_MSA_SN_UPPER(69B:70B) (Value) + {SFP_MSA_SN_UPPER(69B:70B) (Value) :out23-sig16-0}=0x5332 + 0 + 65535 + + + + stp40 + 24 + 16 + 3 + out21,sig7,sig8,65537, + Load sfp_module.msgbin chunk to Message + 4 + sfp_mv2221m_b1_mchip + + + stp160 + 17 + 66 + txt + + + stp161 + 8 + txt + + + stp163 + 18 + txt + + + stp73 + 6 + Set SFP Send Firmware message length + txt + + {SFP Send Firmware 16 I2C2 (Message Length) :out21-17} + {Length (Value) :sig8-0} + {SFP Send Firmware 16 I2C2 (Message Length) :out21-17} + {SFP Send Firmware 16 I2C2 (Message Length) :out21-17} + + + + stp10 + 1 + 16 + out21 + Send firmware binary bytes to the device to be flashed + SFP Send Firmware 16 I2C2 + + + stp98 + 2 + 10 + -1 + arbitrary delay + txt + + 10 + + + + stp99 + 6 + txt + + {StatusReg (Value) :out19-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out19-sig9-0} + {StatusReg (Value) :out19-sig9-0} + + + + stp61 + 1 + 15 + out19 + Poll status register + SFP Check Status I2C2 + + + stp88 + 2 + 60 + -1 + txt + + 60 + + + + stp69 + 5 + 123 + If bootloaderReady flag asserted, continue + txt + + StatusReg (Value) + {StatusReg (Value) :out19-sig9-0}=0 + 0 + 255 + + + + stp76 + 5 + 108 + If appError bit asserted, reset script + txt + + StatusReg (Value) + bit1({StatusReg (Value) :out19-sig9-0}) = 1 + + + + stp18 + 6 + Increment Index for next Load Message Data + txt + + {Index (Value) :sig7-0} + {Index (Value) :sig7-0} + 128 + {Index (Value) :sig7-0} + {Index (Value) :sig7-0} + + + + stp90 + 6 + Increment chunk index + txt + + {MaxLen_index (Value) :sig14-0} + {MaxLen_index (Value) :sig14-0} + 1 + {MaxLen_index (Value) :sig14-0} + {MaxLen_index (Value) :sig14-0} + + + + stp87 + 5 + 80 + If Length /= 128, reached the final chunk of the binary, lets exit + txt + + EndOfBin (Value) + {EndOfBin (Value) :sig16-0} = 1 + + + + stp109 + 20 + 50 + 0 + txt + + + stp91 + 14 + txt + + + stp99 + 6 + txt + + {StatusReg (Value) :out19-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out19-sig9-0} + {StatusReg (Value) :out19-sig9-0} + + + + stp111 + 6 + Reset chunk index + txt + + {MaxLen_index (Value) :sig14-0} + 0 + {MaxLen_index (Value) :sig14-0} + {MaxLen_index (Value) :sig14-0} + + + + stp53 + 1 + 21 + out33 + Start flashing process + Set SFP Module ICS Flash Start I2C2 + + + stp61 + 19 + 20 + 0 + out9 + SFP Check Status + + + stp88 + 2 + 10 + -1 + Arbitrary delay + txt + + 10 + + + + stp99 + 6 + txt + + {StatusReg (Value) :out19-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out19-sig9-0} + {StatusReg (Value) :out19-sig9-0} + + + + stp61 + 1 + 15 + out19 + Poll status register + SFP Check Status I2C2 + + + stp88 + 2 + 100 + -1 + txt + + 100 + + + + stp69 + 5 + 123 + If bootloaderReady flag asserted, continue + txt + + StatusReg (Value) + {StatusReg (Value) :out19-sig9-0}=0 + 0 + 255 + + + + stp76 + 5 + 92 + If flashInProgress flag is deasserted, continue + txt + + StatusReg (Value) + bit3({StatusReg (Value) :out19-sig9-0}) = 0 and bit5({StatusReg (Value) :out19-sig9-0}) = 1 + + + + stp70 + 20 + 82 + 0 + txt + + + stp76 + 5 + 108 + If appError bit asserted, reset script + txt + + StatusReg (Value) + bit1({StatusReg (Value) :out19-sig9-0}) = 1 + + + + stp112 + 6 + Increment ief_block_index + txt + + {ief_block_index (Value) :sig13-0} + {ief_block_index (Value) :sig13-0} + 1 + {ief_block_index (Value) :sig13-0} + {ief_block_index (Value) :sig13-0} + + + + stp124 + 49 + txt + + + stp126 + 14 + txt + + + stp122 + 17 + 106 + Done flashing - lets jump to main app + txt + + + stp51 + 2 + 1000 + -1 + txt + + 1000 + + + + stp99 + 6 + txt + + {StatusReg (Value) :out19-sig9-0} + 0 + 0 + 255 + {StatusReg (Value) :out19-sig9-0} + {StatusReg (Value) :out19-sig9-0} + + + + stp67 + 1 + 18 + out27 + Reset into main app + Set SFP Module ICS Main App I2C2 + + + stp121 + 2 + 3000 + -1 + txt + + 3000 + + + + stp99 + 6 + txt + + {MainAppReadReg (Value) :out44-sig0-0} + 0 + 0 + 255 + {MainAppReadReg (Value) :out44-sig0-0} + {MainAppReadReg (Value) :out44-sig0-0} + + + + stp61 + 1 + 24 + out40 + Poll status register + 2112 PHY Request ID1 Reg I2C2 + + + stp132 + 1 + 26 + out44 + 2112 PHY Read Reg (2 Bytes) I2C2 + + + stp119 + 2 + 3000 + -1 + txt + + 3000 + + + + stp69 + 5 + 113 + If were in Main app, end flashing; otherwise, restart + txt + + StatusReg (Value) + {MainAppReadReg (Value) :out44-sig0-0}= 43 + 0 + 255 + + + + stp94 + 14 + txt + + + stp93 + 18 + txt + + + stp131 + 14 + txt + + + stp12 + 6 + txt + + {ErrorNotifMessage (Value) :sig17-0} + Some went wrong during flashing....retrying... + 0 + True + {ErrorNotifMessage (Value) :sig17-0} + {ErrorNotifMessage (Value) :sig17-0} + + + + stp127 + 1 + 23 + out38 + clear error + Set SFP Module ICS Get/Clear Error I2C2 + + + stp128 + 2 + 1000 + -1 + txt + + 1000 + + + + stp129 + 3 + txt + + + stp136 + 14 + txt + + + stp11 + 6 + txt + + {FwVersionMinor (Value) :out46-sig1-0} + 0 + 0 + 255 + {FwVersionMinor (Value) :out46-sig1-0} + {FwVersionMinor (Value) :out46-sig1-0} + + + + stp11 + 6 + txt + + {FwVersionMajor (Value) :out46-sig0-0} + 0 + 0 + 255 + {FwVersionMajor (Value) :out46-sig0-0} + {FwVersionMajor (Value) :out46-sig0-0} + + + + stp125 + 1 + 27 + out46 + Read/Fill fw version + Get SFP Module ICS Phy Fw Vers I2C2 + + + stp128 + 2 + 500 + -1 + txt + + 500 + + + + stp11 + 6 + txt + + {FwMajor (Value) :sig19-0} + {FwVersionMajor (Value) :out46-sig0-0} + 0 + 255 + {FwMajor (Value) :sig19-0} + {FwMajor (Value) :sig19-0} + + + + stp11 + 6 + txt + + {FwMinor (Value) :sig20-0} + {FwVersionMinor (Value) :out46-sig1-0} + 0 + 255 + {FwMinor (Value) :sig20-0} + {FwMinor (Value) :sig20-0} + + + + stp12 + 6 + txt + + {ErrorNotifMessage (Value) :sig17-0} + Flashing Successful + 0 + True + {ErrorNotifMessage (Value) :sig17-0} + {ErrorNotifMessage (Value) :sig17-0} + + + + stp46 + 4 + 3 + 0 + tst1 + Light Notification + + + stp137 + 8 + txt + + + stp6 + 6 + txt + + {redLED (Value) :sig5-0} + 1 + True=1/False=0 + 0 + 1 + True + {redLED (Value) :sig5-0} + {redLED (Value) :sig5-0} + + + + stp12 + 6 + txt + + {ErrorNotifMessage (Value) :sig17-0} + Flashing aborted because of a fatal issue. +Please make sure a supported ICS SFP module is properly +seated and retry. + 0 + True + {ErrorNotifMessage (Value) :sig17-0} + {ErrorNotifMessage (Value) :sig17-0} + + + + stp137 + 8 + txt + + + stp150 + 14 + txt + + + + + + + New Group 6 + sgr5 + False + 10 + icsSpyLogFile + icsSpyLogFile + + 0 + + icsSpyLogFile + True + + + + Index (Value) + spc0 + {Index (Value) :sig7-0} + + + Length (Value) + spc1 + {Length (Value) :sig8-0} + + + File Size (Value) + spc2 + {File Size (Value) :sig10-0} + + + StatusReg (Value) + spc4 + {StatusReg (Value) :out9-sig9-0} + 0 + 255 + + + MainAppReadReg (Value) + spc5 + {MainAppReadReg (Value) :out18-sig0-0} + 0 + 255 + + + FwVersionMinor (Value) + spc6 + {FwVersionMinor (Value) :out15-sig1-0} + 0 + 255 + + + FwVersionMajor (Value) + spc7 + {FwVersionMajor (Value) :out15-sig0-0} + 0 + 255 + + + NotifMessage (Value) + spc8 + {NotifMessage (Value) :sig3-0} + 0 + True + + + SFP_MSA(1B:20B) (Value) + spc9 + {SFP_MSA(1B:20B) (Value) :out26-sig2-0} + hex + True + + + SFP_MSA(37B:64B) (Value) + spc10 + {SFP_MSA(37B:64B) (Value) :out26-sig4-0} + hex + True + + + SFP_MSA(65B:68B) (Value) + spc11 + {SFP_MSA(65B:68B) (Value) :out26-sig5-0} + hex + True + + + SFP_MSA_VENDOR_SPEC_BL_FLAG (Value) + spc12 + {SFP_MSA_VENDOR_SPEC_BL_FLAG (Value) :out26-sig9-0} + hex + True + + + SFP_MSA_VENDOR_SPEC_MDIO_ADDR (Value) + spc13 + {SFP_MSA_VENDOR_SPEC_MDIO_ADDR (Value) :out26-sig6-0} + hex + True + + + SFP_MSA_VENDOR_SPEC_OVERRIDE_FLAGS (Value) + spc15 + {SFP_MSA_VENDOR_SPEC_OVERRIDE_FLAGS (Value) :out26-sig10-0} + hex + True + + + SFP_MSA_VENDOR_SPEC_RESERVED (Value) + spc16 + {SFP_MSA_VENDOR_SPEC_RESERVED (Value) :out26-sig8-0} + hex + True + + + SFP_MSA_VENDOR_SPEC_SETTINGS (Value) + spc17 + {SFP_MSA_VENDOR_SPEC_SETTINGS (Value) :out26-sig7-0} + hex + True + + + SFP_MSA_VENDOR_NAME_ICS (Value) + spc18 + {SFP_MSA_VENDOR_NAME_ICS (Value) :out26-sig3-0} + hex + True + + + SFP_MSA_VENDOR_NAME_ICS2 (Value) + spc20 + {SFP_MSA_VENDOR_NAME_ICS2 (Value) :out26-sig12-0} + hex + True + + + SFP_MSA_VENDOR_NAME_ICS3 (Value) + spc22 + {SFP_MSA_VENDOR_NAME_ICS3 (Value) :out26-sig13-0} + hex + True + + + SFP_MSA_VENDOR_NAME_ICS4 (Value) + spc23 + {SFP_MSA_VENDOR_NAME_ICS4 (Value) :out26-sig14-0} + hex + True + + + SFP_MSA_VENDOR_NAME_ICS5 (Value) + spc24 + {SFP_MSA_VENDOR_NAME_ICS5 (Value) :out26-sig15-0} + hex + True + + + SFP_MSA_VENDOR_NAME_RESERVED (Value) + spc19 + {SFP_MSA_VENDOR_NAME_RESERVED (Value) :out26-sig11-0} + hex + 0 + 281474976710655 + True + + + MDIO_BRIDGE_ADDR (Value) + spc26 + {MDIO_BRIDGE_ADDR (Value) :sig18-0} + + + SFP_MSA(1B:20B) (Value) + spc27 + {SFP_MSA(1B:20B) (Value) :out23-sig2-0} + 0 + 65535 + + + SFP_MSA_VENDOR_NAME_ICS (Value) + spc30 + {SFP_MSA_VENDOR_NAME_ICS (Value) :out23-sig3-0} + 0 + 65535 + + + SFP_MSA_VENDOR_NAME_ICS2 (Value) + spc31 + {SFP_MSA_VENDOR_NAME_ICS2 (Value) :out23-sig12-0} + 0 + 65535 + + + SFP_MSA_VENDOR_NAME_ICS3 (Value) + spc32 + {SFP_MSA_VENDOR_NAME_ICS3 (Value) :out23-sig13-0} + 0 + 65535 + + + SFP_MSA_VENDOR_NAME_ICS4 (Value) + spc33 + {SFP_MSA_VENDOR_NAME_ICS4 (Value) :out23-sig14-0} + 0 + 65535 + + + SFP_MSA_VENDOR_NAME_ICS5 (Value) + spc34 + {SFP_MSA_VENDOR_NAME_ICS5 (Value) :out23-sig15-0} + 0 + 65535 + + + SFP_MSA_VENDOR_NAME_RESERVED (Value) + spc35 + {SFP_MSA_VENDOR_NAME_RESERVED (Value) :out23-sig11-0} + 0 + 281474976710655 + + + SFP_MSA_VENDOR_SPEC_BL_FLAG (Value) + spc36 + {SFP_MSA_VENDOR_SPEC_BL_FLAG (Value) :out23-sig9-0} + 0 + 255 + + + SFP_MSA_VENDOR_SPEC_MDIO_ADDR (Value) + spc37 + {SFP_MSA_VENDOR_SPEC_MDIO_ADDR (Value) :out23-sig6-0} + 0 + 255 + + + SFP_MSA_VENDOR_SPEC_OVERRIDE_FLAGS (Value) + spc38 + {SFP_MSA_VENDOR_SPEC_OVERRIDE_FLAGS (Value) :out23-sig10-0} + 0 + 255 + + + SFP_MSA_VENDOR_SPEC_RESERVED (Value) + spc39 + {SFP_MSA_VENDOR_SPEC_RESERVED (Value) :out23-sig8-0} + 0 + 4194303 + + + SFP_MSA_VENDOR_SPEC_SETTINGS (Value) + spc40 + {SFP_MSA_VENDOR_SPEC_SETTINGS (Value) :out23-sig7-0} + 0 + 255 + + + FwMajor (Value) + spc41 + {FwMajor (Value) :sig19-0} + + + FwMinor (Value) + spc43 + {FwMinor (Value) :sig20-0} + + + SFP_MSA_SN_UPPER(69B:70B) (Value) + spc44 + {SFP_MSA_SN_UPPER(69B:70B) (Value) :out23-sig16-0} + hex + True + + + SFP_MSA_SN_UPPER(69B:70B) (Value) + spc45 + {SFP_MSA_SN_UPPER(69B:70B) (Value) :out26-sig16-0} + hex + True + + + FwVersionMajor (Value) + spc46 + {FwVersionMajor (Value) :out46-sig0-0} + 0 + 255 + + + FwVersionMinor (Value) + spc47 + {FwVersionMinor (Value) :out46-sig1-0} + 0 + 255 + + + + + New Group 2 + sgr1 + False + 10 + icsSpyLogFile + icsSpyLogFile + + 0 + + icsSpyLogFile + True + + + + New Group 3 + sgr2 + False + 10 + icsSpyLogFile + icsSpyLogFile + + 0 + + icsSpyLogFile + True + + + + + + Panel 1 + dia0 + + led0 + 90 + 90 + 150 + 20 + 12632256 + 1 + 0 + Arial + False + + 0 + 128 + + redLED (Value) + {redLED (Value) :sig5-0} + True=1/False=0 + 0 + 1 + True + + + + bgr0 + 300 + 67 + 210 + 140 + 16777215 + 0 + 1 + Arial + False + + 0 + 0 + 7368704 + + Percent Complete + ((({ief_block_index (Value) :sig13-0}*{IEF_BLOCK_SIZE (Value) :sig12-0})) / ({File Size (Value) :sig10-0}))*100 + XXXX hex + 0 + 4294967295 + Percent Complete + ((({ief_block_index (Value) :sig13-0}*{IEF_BLOCK_SIZE (Value) :sig12-0})*100) / ({File Size (Value) :sig10-0}*100)) + + + + txe0 + 400 + 60 + 70 + 470 + 16777215 + 1 + 0 + 14 + Arial + False + + {NotifMessage (Value) :sig3-0} + {NotifMessage (Value) :sig3-0} + 0 + True + {NotifMessage (Value) :sig3-0} + {NotifMessage (Value) :sig3-0} + + Flasher idle + + + led1 + 90 + 90 + 40 + 20 + 12632256 + 1 + 0 + Arial + False + + 0 + 65408 + 32768 + + greenLED (Value) + {greenLED (Value) :sig4-0} + True=1/False=0 + 0 + 1 + True + + + + fbb0 + 300 + 90 + 20 + 140 + 12632256 + tst7 + 1 + 0 + 18 + Arial + 0 + Flash Firmware + Flash Firmware + 1 + 1 + + + txe1 + 400 + 60 + 140 + 470 + 16777215 + 1 + 0 + 10 + Arial + False + + {ErrorNotifMessage (Value) :sig17-0} + {ErrorNotifMessage (Value) :sig17-0} + 0 + True + {ErrorNotifMessage (Value) :sig17-0} + {ErrorNotifMessage (Value) :sig17-0} + + ICS SFP-MV2221M module found on SFP1 port... + + + txe2 + 70 + 20 + 20 + 600 + 16777215 + 1 + 0 + Arial + False + + {FwMajor (Value) :sig19-0} + {FwMajor (Value) :sig19-0} + 0 + 255 + {FwMajor (Value) :sig19-0} + {FwMajor (Value) :sig19-0} + + 0 + + + txt0 + 128 + 23 + 20 + 470 + 12632256 + 1 + 3 + Arial + f + False + Firmware Major Version + 1 + + 0 + 255 + + + + fbb1 + 300 + 80 + 120 + 140 + 12632256 + tst5 + 1 + 0 + 18 + Arial + 0 + Reset + Reset + 1 + 1 + + + txt1 + 128 + 23 + 40 + 470 + 12632256 + 1 + 3 + Arial + f + False + Firmware MinorVersion + 1 + + 0 + 255 + + + + txe3 + 70 + 20 + 40 + 600 + 16777215 + 1 + 0 + Arial + False + + {FwMinor (Value) :sig20-0} + {FwMinor (Value) :sig20-0} + 0 + 255 + {FwMinor (Value) :sig20-0} + {FwMinor (Value) :sig20-0} + + 0 + + + + + 1 + 1 + + + 16746693581920000 + 107 + + False + + + + tcp0 + 00:FC:70:0F:02:B6 + net72 + + -256 + 0 + 255 + 86400 + + + + + False + False + + + eyJ2ZXJzaW9uIjogMSwgImVjdXMiOiBbeyJhbGdvcml0aG0iOiAiZ2VuZXJpY19pc28xNDIyOSIsICJ2ZXJzaW9uIjogMSwgIm5hbWUiOiAiTmV3IEVDVSIsICJpc28xNTc2NSI6IHsibmV0d29yayI6ICIiLCAicGh5c2ljYWwiOiB7InJlcXVlc3RfaWQiOiAiIiwgInJlc3BvbnNlX2lkIjogIiIsICJmbG93X2NvbnRyb2xfdGltZW91dCI6IDAsICJmbG93X2NvbnRyb2xfd2FpdF90aW1lb3V0IjogMCwgInN0bWluIjogMCwgImJsb2NrX3NpemUiOiAwLCAicGFkZGluZyI6ICIiLCAicmVxdWVzdF9leHRlbmRlZF9hZGRyZXNzIjogIiIsICJyZXNwb25zZV9leHRlbmRlZF9hZGRyZXNzIjogIiIsICJyZXF1ZXN0X2lkX2lzXzI5Yml0IjogZmFsc2UsICJyZXNwb25zZV9pZF9pc18yOWJpdCI6IGZhbHNlLCAicmVxdWVzdF91c2VfZXh0ZW5kZWRfYWRkcmVzcyI6IGZhbHNlLCAicmVzcG9uc2VfdXNlX2V4dGVuZGVkX2FkZHJlc3MiOiBmYWxzZSwgInVzZV9zdG1pbiI6IGZhbHNlLCAidXNlX2Jsb2NrX3NpemUiOiBmYWxzZSwgInVzZV9wYWRkaW5nIjogZmFsc2UsICJ0eXBlIjogIiIsICJ0eF9kbCI6IDB9LCAiZnVuY3Rpb25hbCI6IHsicmVxdWVzdF9pZCI6ICIiLCAicmVzcG9uc2VfaWQiOiAiIiwgImZsb3dfY29udHJvbF90aW1lb3V0IjogMCwgImZsb3dfY29udHJvbF93YWl0X3RpbWVvdXQiOiAwLCAic3RtaW4iOiAwLCAiYmxvY2tfc2l6ZSI6IDAsICJwYWRkaW5nIjogIiIsICJyZXF1ZXN0X2V4dGVuZGVkX2FkZHJlc3MiOiAiIiwgInJlc3BvbnNlX2V4dGVuZGVkX2FkZHJlc3MiOiAiIiwgInJlcXVlc3RfaWRfaXNfMjliaXQiOiBmYWxzZSwgInJlc3BvbnNlX2lkX2lzXzI5Yml0IjogZmFsc2UsICJyZXF1ZXN0X3VzZV9leHRlbmRlZF9hZGRyZXNzIjogZmFsc2UsICJyZXNwb25zZV91c2VfZXh0ZW5kZWRfYWRkcmVzcyI6IGZhbHNlLCAidXNlX3N0bWluIjogZmFsc2UsICJ1c2VfYmxvY2tfc2l6ZSI6IGZhbHNlLCAidXNlX3BhZGRpbmciOiBmYWxzZSwgInR5cGUiOiAiIiwgInR4X2RsIjogMH19LCAiaXNvMTQyMjkiOiB7InRpbWVvdXQiOiAyMDAwfSwgInN0YWdlcyI6IFt7Im5hbWUiOiAiTmV3IFN0YWdlIiwgImFjdGlvbnMiOiBbeyJ0eXBlIjogIm5vbmUifV19XSwgImZhaWxfc3RhZ2UiOiB7Im5hbWUiOiAiZmFpbF9zdGFnZSIsICJhY3Rpb25zIjogW3sidHlwZSI6ICJub25lIn1dfX1dfQA= + + + + 0 + + + + + Gateway 1 + + + + True + + + WIL_2_0 + + + + Desktop 1 + 0 + 51 + QVFET0NLCAAAAAAaAAAAGgAAACIEAABOAwAAAgAAAAAAAAAAvAIAADQDAAAAAAAAAAAAAAAAAAAAAAAAzwcAAAAAAACA1Hq4Ru70SIM1fakJBnUaAZYHAAACAAAAl0fDyZcb3kyq44CIrp/E9QAAAABJAAAAZwcAAPgDAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////8IBAADIAAAA///////////CAQAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAC8DAAADAAAAIKMDpOBAvEqYBylAcMp5NgAAAABJAAAA3QMAAPgDAAAAAAAAAAAAAAAAAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////8IBAADIAAAA///////////CAQAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAKQAAAAAAAAAZYheWHVq60u2XsfC9K8ACQAAAABiAAAA3QMAAPgDAAAAAAAAAAAAAAAPAAAARnVuY3Rpb24gQmxvY2tzAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgIAAGcHAAC9AQAA//////////9YAgAALAEAAAAAAwAAAAFliF5YdWrrS7Zex8L0rwAMAAAAAAAAAAAAAKQAAAAAAAAAZYheWHVq60u2XsfC9K8AAAAAAABiAAAA3QMAAPgDAAAAAAAAAAAAAAAPAAAATWVzc2FnZXMgRWRpdG9yAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbQEAANoDAACLAgAA//////////9YAgAALAEAAAAAAQAAAAFliF5YdWrrS7Zex8L0rwAKAAAAAAAAAAAAAKAAAAAAAAAAZYheWHVq60u2XsfC9K8ACgAAAABiAAAA3QMAAPgDAAAAAAAAAAAAAAALAAAAU2lnbmFsIExpc3QAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhAAAA2gMAAJcDAAB69///Lvr//1gCAAAsAQAAAAADAAAAAWWIXlh1autLtl7HwvSvAAAAAAAAAAAAAAAAnQAAAAAAAABliF5YdWrrS7Zex8L0rwACAAAAAGIAAADdAwAA+AMAAAAAAAAAAAAAAAgAAABUeCBQYW5lbAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGEAAADaAwAAlwMAABIAAACPAgAAuAMAACwBAAAAAAAAAAABZYheWHVq60u2XsfC9K8ACgAAAAAAAAAAAAAAAAAAAMoDAAABAAAA10ejnYZct0SlejxJbFblN+EDAABJAAAAZwcAAPgDAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////8IBAADIAAAA///////////CAQAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAKUAAAAAAAAAZYheWHVq60u2XsfC9K8ACOEDAABJAAAAZwcAALoBAACpBAAAMgIAAAAQAAAAR3JhcGhpY2FsIFBhbmVscwAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmwMAAF8AAADMAwAAhQEAAJsDAABfAAAAWAIAACwBAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAACIAgAAAwAAAHm6pPbBZxxIv3DMIqYS3KHhAwAAvgEAAGcHAAD4AwAAqQQAAHoBAAAAAAAAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////CAQAAyAAAAP//////////wgEAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAACoAAAAAAAAAGWIXlh1autLtl7HwvSvAAvhAwAA1wEAAGcHAAD4AwAAAAAAAAAAAAAAEwAAAEFwcGxpY2F0aW9uIFNpZ25hbHMAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////wgEAAMgAAAD//////////1gCAAAsAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnQAAAAAAAABliF5YdWrrS7Zex8L0rwAM4QMAANcBAABnBwAA+AMAAAAAAAAAAAAAAAgAAABOZXR3b3JrcwAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////CAQAAyAAAAP//////////WAIAACwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACdAAAAAAAAAGWIXlh1autLtl7HwvSvAAHhAwAA1wEAAGcHAAD4AwAAAAAAAAAAAAAACAAAAE1lc3NhZ2VzAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGBAAAP/z//2cHAACVAQAA//////////9YAgAALAEAAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + -297455366 + + + 1 + 0 + PERlc2t0b3BEYXRhPg0KPEZpbHRlcldpZHRoPjE8L0ZpbHRlcldpZHRoPg0KPEZpbHRlckNvbHVtbldpZHRocz40IzEyMCwyMCwyMCwyNSMwLDEsMiwzIzEsMSwxLDE8L0ZpbHRlckNvbHVtbldpZHRocz4NCjxIaWRlTmV0d29ya3M+RmFsc2U8L0hpZGVOZXR3b3Jrcz4NCjwvRGVza3RvcERhdGE+DQo= + + + 2 + 1 + PERlc2t0b3BEYXRhPg0KPFNpZ25hbHNQYW5lbFdpZHRoPjE3OTwvU2lnbmFsc1BhbmVsV2lkdGg+DQo8U2VsZWN0ZWRQcm90b2NvbD4yMTwvU2VsZWN0ZWRQcm90b2NvbD4NCjxTaWduYWxTY3JpcHRHcmlkPg0KCTxOdW1PZkNvbHM+OTwvTnVtT2ZDb2xzPg0KCTxOdW1PZlJvd3M+MTwvTnVtT2ZSb3dzPg0KCTxDb2w+MjwvQ29sPg0KCTxSb3c+MDwvUm93Pg0KCTxDb2xTZWw+MjwvQ29sU2VsPg0KCTxSb3dTZWw+MDwvUm93U2VsPg0KCTxDT0w+DQoJCTxDb2xJbmRleD4wPC9Db2xJbmRleD4NCgkJPFdpZHRoPjA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD4xPC9Db2xJbmRleD4NCgkJPFdpZHRoPjA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD4yPC9Db2xJbmRleD4NCgkJPFdpZHRoPjI1ODA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD4zPC9Db2xJbmRleD4NCgkJPFdpZHRoPjMwMDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjQ8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MzAwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NTwvQ29sSW5kZXg+DQoJCTxXaWR0aD4zMDA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD42PC9Db2xJbmRleD4NCgkJPFdpZHRoPjk3NTwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4Pjc8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwMDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4Pjg8L0NvbEluZGV4Pg0KCQk8V2lkdGg+OTYwPC9XaWR0aD4NCgk8L0NPTD4NCjwvU2lnbmFsU2NyaXB0R3JpZD4NCjxKb2JTY3JpcHRHcmlkPg0KCTxOdW1PZkNvbHM+MTU8L051bU9mQ29scz4NCgk8TnVtT2ZSb3dzPjMwPC9OdW1PZlJvd3M+DQoJPENvbD4xPC9Db2w+DQoJPFJvdz4xPC9Sb3c+DQoJPENvbFNlbD4xPC9Db2xTZWw+DQoJPFJvd1NlbD4xPC9Sb3dTZWw+DQoJPENPTD4NCgkJPENvbEluZGV4PjA8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTU8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD4xPC9Db2xJbmRleD4NCgkJPFdpZHRoPjM1NTU8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD4yPC9Db2xJbmRleD4NCgkJPFdpZHRoPjMwMDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjM8L0NvbEluZGV4Pg0KCQk8V2lkdGg+OTQ1PC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NDwvQ29sSW5kZXg+DQoJCTxXaWR0aD45NDU8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD41PC9Db2xJbmRleD4NCgkJPFdpZHRoPjYwMDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjY8L0NvbEluZGV4Pg0KCQk8V2lkdGg+NzUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NzwvQ29sSW5kZXg+DQoJCTxXaWR0aD43NTA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD44PC9Db2xJbmRleD4NCgkJPFdpZHRoPjc1MDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4Pjk8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTIwMDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjEwPC9Db2xJbmRleD4NCgkJPFdpZHRoPjEyMDA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD4xMTwvQ29sSW5kZXg+DQoJCTxXaWR0aD4xMjAwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MTI8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTIwMDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjEzPC9Db2xJbmRleD4NCgkJPFdpZHRoPjc1MDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjE0PC9Db2xJbmRleD4NCgkJPFdpZHRoPjYwMDwvV2lkdGg+DQoJPC9DT0w+DQo8L0pvYlNjcmlwdEdyaWQ+DQo8L0Rlc2t0b3BEYXRhPg0K + + + 8 + 2 + PERlc2t0b3BEYXRhPg0KPEN1cnJlbnRWaWV3PjA8L0N1cnJlbnRWaWV3Pg0KPExvY2tDb250cm9scz5UcnVlPC9Mb2NrQ29udHJvbHM+DQo8U2hvd1Rvb2xiYXI+RmFsc2U8L1Nob3dUb29sYmFyPg0KPFNob3dQcm9wZXJ0aWVzPkZhbHNlPC9TaG93UHJvcGVydGllcz4NCjxHcmlkU2l6ZT4yPC9HcmlkU2l6ZT4NCjxHcmlkTXVsdD41PC9HcmlkTXVsdD4NCjxBc3BSYXRpbz40OjM8L0FzcFJhdGlvPg0KPC9EZXNrdG9wRGF0YT4NCg== + + + 10 + 3 + PERlc2t0b3BEYXRhPg0KPEN1cnJlbnRHcm91cD4wPC9DdXJyZW50R3JvdXA+DQo8Rm9udFNpemU+MTI8L0ZvbnRTaXplPg0KPFNpZ25hbFBvcz4wPC9TaWduYWxQb3M+DQo8U2lnbmFsV2lkdGg+NDQxPC9TaWduYWxXaWR0aD4NCjxWYWx1ZVBvcz4xPC9WYWx1ZVBvcz4NCjxWYWx1ZVdpZHRoPjE5MjwvVmFsdWVXaWR0aD4NCjxVcGRhdGVQb3M+MjwvVXBkYXRlUG9zPg0KPFVwZGF0ZVdpZHRoPjE1NTwvVXBkYXRlV2lkdGg+DQo8L0Rlc2t0b3BEYXRhPg0K + + + 11 + 4 + PERlc2t0b3BEYXRhPg0KPEVsVHJlZUl0ZW0+U1xOb3RpZk1lc3NhZ2Vcc2lnM1w8L0VsVHJlZUl0ZW0+DQo8RWxUcmVlSXRlbT5TXGdyZWVuTEVEXHNpZzRcPC9FbFRyZWVJdGVtPg0KPEVsVHJlZUl0ZW0+U1xyZWRMRURcc2lnNVw8L0VsVHJlZUl0ZW0+DQo8RWxUcmVlSXRlbT5TXEluZGV4XHNpZzdcPC9FbFRyZWVJdGVtPg0KPEVsVHJlZUl0ZW0+U1xMZW5ndGhcc2lnOFw8L0VsVHJlZUl0ZW0+DQo8RWxUcmVlSXRlbT5TXEZpbGUgU2l6ZVxzaWcxMFw8L0VsVHJlZUl0ZW0+DQo8RWxUcmVlSXRlbT5TXE1heExlblxzaWcxMVw8L0VsVHJlZUl0ZW0+DQo8RWxUcmVlSXRlbT5TXElFRl9CTE9DS19TSVpFXHNpZzEyXDwvRWxUcmVlSXRlbT4NCjxFbFRyZWVJdGVtPlNcaWVmX2Jsb2NrX2luZGV4XHNpZzEzXDwvRWxUcmVlSXRlbT4NCjxFbFRyZWVJdGVtPlNcTWF4TGVuX2luZGV4XHNpZzE0XDwvRWxUcmVlSXRlbT4NCjxFbFRyZWVJdGVtPlNcQ2h1bmtTaXplXHNpZzE1XDwvRWxUcmVlSXRlbT4NCjxFbFRyZWVJdGVtPlNcRW5kT2ZCaW5cc2lnMTZcPC9FbFRyZWVJdGVtPg0KPEVsVHJlZUl0ZW0+U1xFcnJvck5vdGlmTWVzc2FnZVxzaWcxN1w8L0VsVHJlZUl0ZW0+DQo8RWxUcmVlSXRlbT5TXE1ESU9fQlJJREdFX0FERFJcc2lnMThcPC9FbFRyZWVJdGVtPg0KPEVsVHJlZUl0ZW0+U1xGd01ham9yXHNpZzE5XDwvRWxUcmVlSXRlbT4NCjxFbFRyZWVJdGVtPlNcRndNaW5vclxzaWcyMFw8L0VsVHJlZUl0ZW0+DQo8L0Rlc2t0b3BEYXRhPg0K + + + 12 + 5 + PERlc2t0b3BEYXRhPg0KPC9EZXNrdG9wRGF0YT4NCg== + + + 9 + 6 + PERlc2t0b3BEYXRhPg0KPEN1cnJlbnRGQmxvY2tLZXk+dHN0MTwvQ3VycmVudEZCbG9ja0tleT4NCjxDdXJyZW50U3BsaXRTaXplPjcxOTwvQ3VycmVudFNwbGl0U2l6ZT4NCjxGQlNjcmlwdEdyaWQ+DQoJPE51bU9mQ29scz42PC9OdW1PZkNvbHM+DQoJPE51bU9mUm93cz4xMDwvTnVtT2ZSb3dzPg0KCTxDb2w+NDwvQ29sPg0KCTxSb3c+NDwvUm93Pg0KCTxDb2xTZWw+NDwvQ29sU2VsPg0KCTxSb3dTZWw+NDwvUm93U2VsPg0KCTxDT0w+DQoJCTxDb2xJbmRleD4wPC9Db2xJbmRleD4NCgkJPFdpZHRoPjQ2NTwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjE8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MjcwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MjwvQ29sSW5kZXg+DQoJCTxXaWR0aD42MDA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD4zPC9Db2xJbmRleD4NCgkJPFdpZHRoPjMwMDA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD40PC9Db2xJbmRleD4NCgkJPFdpZHRoPjUyOTU8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD41PC9Db2xJbmRleD4NCgkJPFdpZHRoPjMwMDA8L1dpZHRoPg0KCTwvQ09MPg0KPC9GQlNjcmlwdEdyaWQ+DQo8L0Rlc2t0b3BEYXRhPg0K + + + 0 + 7 + PERlc2t0b3BEYXRhPg0KPEN1cnJlbnRWaWV3PjE8L0N1cnJlbnRWaWV3Pg0KPEN1cnJlbnROZXR3b3JrPjExNTwvQ3VycmVudE5ldHdvcms+DQo8U2lnbmFsc1NjcmlwdEdyaWQ+DQoJPE51bU9mQ29scz43NTwvTnVtT2ZDb2xzPg0KCTxOdW1PZlJvd3M+NTwvTnVtT2ZSb3dzPg0KCTxDb2w+MDwvQ29sPg0KCTxSb3c+NDwvUm93Pg0KCTxDb2xTZWw+MDwvQ29sU2VsPg0KCTxSb3dTZWw+NDwvUm93U2VsPg0KCTxDT0w+DQoJCTxDb2xJbmRleD4wPC9Db2xJbmRleD4NCgkJPFdpZHRoPjQwNjU8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD4xPC9Db2xJbmRleD4NCgkJPFdpZHRoPjI1OTU8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD4yPC9Db2xJbmRleD4NCgkJPFdpZHRoPjkzMDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjM8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NDwvQ29sSW5kZXg+DQoJCTxXaWR0aD4xNTA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD41PC9Db2xJbmRleD4NCgkJPFdpZHRoPjE1MDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjY8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NzwvQ29sSW5kZXg+DQoJCTxXaWR0aD4xNTA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD44PC9Db2xJbmRleD4NCgkJPFdpZHRoPjE1MDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4Pjk8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MTA8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MTE8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MTI8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MTM8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MTQ8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MTU8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MTY8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MTc8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MTg8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MTk8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MjA8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MjE8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MjI8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MjM8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MjQ8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MjU8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MjY8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+Mjc8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+Mjg8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+Mjk8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MzA8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MzE8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MzI8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MzM8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MzQ8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MzU8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MzY8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+Mzc8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+Mzg8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+Mzk8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NDA8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NDE8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NDI8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NDM8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NDQ8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NDU8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NDY8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NDc8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NDg8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NDk8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NTA8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NTE8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NTI8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NTM8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NTQ8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NTU8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NTY8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NTc8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NTg8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NTk8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NjA8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NjE8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NjI8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NjM8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NjQ8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NjU8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NjY8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+Njc8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+Njg8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+Njk8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NzA8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NzE8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NzI8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NzM8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NzQ8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MTUwPC9XaWR0aD4NCgk8L0NPTD4NCjwvU2lnbmFsc1NjcmlwdEdyaWQ+DQo8TWVzc2FnZXNTY3JpcHRHcmlkPg0KCTxOdW1PZkNvbHM+MTI8L051bU9mQ29scz4NCgk8TnVtT2ZSb3dzPjE2PC9OdW1PZlJvd3M+DQoJPENvbD4xPC9Db2w+DQoJPFJvdz4yPC9Sb3c+DQoJPENvbFNlbD4xPC9Db2xTZWw+DQoJPFJvd1NlbD4yPC9Sb3dTZWw+DQoJPENPTD4NCgkJPENvbEluZGV4PjA8L0NvbEluZGV4Pg0KCQk8V2lkdGg+NjAwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MTwvQ29sSW5kZXg+DQoJCTxXaWR0aD40MDgwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MjwvQ29sSW5kZXg+DQoJCTxXaWR0aD40NTA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD4zPC9Db2xJbmRleD4NCgkJPFdpZHRoPjE2NTA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD40PC9Db2xJbmRleD4NCgkJPFdpZHRoPjc1MDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjU8L0NvbEluZGV4Pg0KCQk8V2lkdGg+NzA1PC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NjwvQ29sSW5kZXg+DQoJCTxXaWR0aD4xMjAwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NzwvQ29sSW5kZXg+DQoJCTxXaWR0aD4xMTU1PC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+ODwvQ29sSW5kZXg+DQoJCTxXaWR0aD4xMjAwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+OTwvQ29sSW5kZXg+DQoJCTxXaWR0aD4xNDI1PC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MTA8L0NvbEluZGV4Pg0KCQk8V2lkdGg+OTAwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MTE8L0NvbEluZGV4Pg0KCQk8V2lkdGg+OTAwPC9XaWR0aD4NCgk8L0NPTD4NCjwvTWVzc2FnZXNTY3JpcHRHcmlkPg0KPC9EZXNrdG9wRGF0YT4NCg== + + + + + + + 1 + 0 + 0 + Messages Editor + + + 0 + 1 + 0 + Messages + + + 5 + 2 + 0 + Tx Panel + + + 6 + 8 + 0 + Graphical Panels + + + 9 + 9 + 0 + Function Blocks + + + 54 + 10 + 5 + Signal List + + + 20 + 11 + 0 + Application Signals + + + 7 + 12 + 0 + Networks + + + diff --git a/SFP_Flasher/v1.4/sfp_mv2112_a2_mchip.msgbin b/SFP_Flasher/v1.4/sfp_mv2112_a2_mchip.msgbin new file mode 100644 index 0000000..5550a1a Binary files /dev/null and b/SFP_Flasher/v1.4/sfp_mv2112_a2_mchip.msgbin differ diff --git a/SFP_Flasher/v1.4/sfp_mv2221m_b1_mchip.msgbin b/SFP_Flasher/v1.4/sfp_mv2221m_b1_mchip.msgbin new file mode 100644 index 0000000..5483a34 Binary files /dev/null and b/SFP_Flasher/v1.4/sfp_mv2221m_b1_mchip.msgbin differ diff --git a/TC10_MACsec Demo.vs3 b/TC10_MACsec Demo.vs3 new file mode 100644 index 0000000..7d26424 --- /dev/null +++ b/TC10_MACsec Demo.vs3 @@ -0,0 +1,21523 @@ + + + +3.9.14.15 +0b89dd93f +False +3 +True + +0 +False +5 +0 +False +8000 +False +False +False +34 +10 +14 +0 + + net0 + CAN Terminal LogFile + + + + 0 + + + + + 0 + + + 1 + + + 2 + + + 3 + + + 4 + + + 5 + + + 6 + + + 7 + + + 8 + + + 9 + + + 10 + + + 11 + + + 12 + + + 13 + + + 14 + + + 15 + + + 16 + + + 17 + + + + + Device + sig0 + 1 + XX hex + 597 + 0 + 35 + True + + + Register + sig1 + 1 + XXXX hex + 415029 + 0 + 64925 + True + + + Device+Register + sig2 + 4 + B1 Length: (all remaining) |0,-1 + 0 + 0 + L,23,FD,9D + 0 + True + + + Dev+Reg BASE10 + sig3 + 2 + 1 + 0 + 0 + 6 + {Device+Register (Value) :sig2-0} + 0 + True + + + Stored Values to Trigger Byte Update + sig4 + 1 + {Raw Value}|0,1,0,0 + 0 + 0 + 35 + 64925 + 2 + True + True + + + Register Byte 1 + sig5 + 1 + hex + 0 + 0 + 253 + True + + + Register Byte 2 + sig6 + 1 + hex + 0 + 0 + 157 + 0 + True + + + SFP1 Link Status + sig7 + 2 + bit7({B1}) + Up/Down + 6 + {Secret Link Status Bit (Value) :out70-sig0-0} and {Local Receiver OK (Value) :out67-sig1-0} and {Remote Receiver OK (Value) :out67-sig0-0} + 0.1 + 1 + True + 1 + + + SFP2 Link Status + sig8 + 2 + bit7({B1}) + Up/Down + 1 + True + 1 + + + SFP1 SQI + sig9 + 1 + XX hex + 0 + 0 + 7 + True + + + SFP2 SQI + sig10 + 1 + XX hex + 0 + 0 + 7 + True + + + SFP1 Link Speed + sig11 + 1 + 0 + 0 + 0 + 1000 + True + + + SFP2 Link Speed + sig12 + 1 + 0 + 0 + 0 + 1000 + True + + + SFP1 Autoneg Enabled + sig13 + 2 + bit7({B1}) + True/False + 1 + True + 1 + + + SFP2 Autoneg Enabled + sig14 + 2 + bit7({B1}) + True/False + 1 + True + 1 + + + + + dq0 + DAQ 1 + True + + + 1 + Collection 1 + True + + 107 + 0 + 0 + 3 + + False + 10 + icsSpyLogFile + icsSpyLogFile + + 0 + + icsSpyLogFile + True + + + 1 + True + + 60 + + + + DAQ 1 + True + True + 10 + DAQ 1 Log File + DAQ 1 Log File + + + DAQ 1 Log File + True + + + + + + + True + 50000 + True + True + 9 + 8 + Tahoma + 0 + 1 + True + True + + + CAN/CAN FD + 0 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 37 + 7 + 25 + + + 7 + 9 + 8 + 162 + + + 8 + 11 + 9 + 90 + + + 9 + 12 + 10 + 62 + + + 10 + 105 + 11 + 25 + + + 11 + 80 + 12 + 25 + + + 12 + 81 + 13 + 25 + + + 13 + 82 + 14 + 25 + + + 14 + 40 + 15 + 62 + + + 15 + 39 + 16 + 175 + + + 16 + 87 + 17 + 175 + + + + + J1939 + 1 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 27 + 6 + 90 + + + 6 + 21 + 7 + 43 + + + 7 + 25 + 8 + 31 + + + 8 + 24 + 9 + 31 + + + 9 + 9 + 10 + 137 + + + 10 + 11 + 11 + 90 + + + 11 + 12 + 12 + 62 + + + 12 + 40 + 13 + 62 + + + 13 + 39 + 14 + 175 + + + 14 + 87 + 15 + 175 + + + + + Class 2 + 2 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 19 + 6 + 90 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 137 + + + 8 + 17 + 9 + 25 + + + + + Ford SCP + 3 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 16 + 6 + 90 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 137 + + + 8 + 15 + 9 + 90 + + + + + GMLAN + 4 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 20 + 7 + 43 + + + 7 + 28 + 8 + 43 + + + 8 + 29 + 9 + 50 + + + 9 + 30 + 10 + 31 + + + 10 + 9 + 11 + 137 + + + 11 + 12 + 12 + 62 + + + 12 + 11 + 13 + 62 + + + + + LIN + 5 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 32 + 3 + 25 + + + 3 + 33 + 4 + 25 + + + 4 + 6 + 5 + 25 + + + 5 + 7 + 6 + 152 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 187 + + + 8 + 34 + 9 + 62 + + + 9 + 35 + 10 + 62 + + + 10 + 36 + 11 + 62 + + + 11 + 11 + 12 + 90 + + + + + CGI + 6 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 37 + 6 + 25 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 162 + + + 8 + 38 + 9 + 90 + + + 9 + 11 + 10 + 90 + + + 10 + 12 + 11 + 62 + + + + + FlexRay + 7 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 54 + 6 + 25 + + + 6 + 106 + 7 + 90 + + + 7 + 51 + 8 + 90 + + + 8 + 103 + 9 + 90 + + + 9 + 37 + 10 + 25 + + + 10 + 9 + 11 + 162 + + + 11 + 11 + 12 + 90 + + + 12 + 12 + 13 + 62 + + + 13 + 104 + 14 + 90 + + + 14 + 60 + 15 + 31 + + + 15 + 57 + 16 + 25 + + + 16 + 58 + 17 + 31 + + + 17 + 59 + 18 + 31 + + + 18 + 56 + 19 + 25 + + + 19 + 55 + 20 + 25 + + + 20 + 50 + 21 + 50 + + + 21 + 52 + 22 + 75 + + + 22 + 53 + 23 + 62 + + + 23 + 35 + 24 + 62 + + + 24 + 40 + 25 + 62 + + + 25 + 39 + 26 + 175 + + + 26 + 87 + 27 + 175 + + + + + ARINC 825 + 8 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 41 + 6 + 43 + + + 6 + 42 + 7 + 50 + + + 7 + 43 + 8 + 31 + + + 8 + 44 + 9 + 31 + + + 9 + 45 + 10 + 31 + + + 10 + 46 + 11 + 37 + + + 11 + 47 + 12 + 31 + + + 12 + 48 + 13 + 50 + + + 13 + 49 + 14 + 31 + + + 14 + 9 + 15 + 162 + + + 15 + 11 + 16 + 90 + + + 16 + 40 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + Ethernet + 9 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 100 + 7 + 50 + + + 7 + 77 + 8 + 152 + + + 8 + 101 + 9 + 50 + + + 9 + 102 + 10 + 56 + + + 10 + 78 + 11 + 50 + + + 11 + 79 + 12 + 37 + + + 12 + 37 + 13 + 25 + + + 13 + 9 + 14 + 162 + + + 14 + 11 + 15 + 90 + + + 15 + 12 + 16 + 62 + + + 16 + 40 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + PTP (802.1as) + 10 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 77 + 7 + 152 + + + 7 + 102 + 8 + 56 + + + 8 + 78 + 9 + 50 + + + 9 + 79 + 10 + 37 + + + 10 + 37 + 11 + 25 + + + 11 + 85 + 12 + 125 + + + 12 + 83 + 13 + 50 + + + 13 + 84 + 14 + 37 + + + 14 + 86 + 15 + 125 + + + 15 + 11 + 16 + 90 + + + 16 + 12 + 17 + 62 + + + 17 + 40 + 18 + 62 + + + 18 + 39 + 19 + 175 + + + 19 + 87 + 20 + 175 + + + + + TCP + 11 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 100 + 7 + 50 + + + 7 + 77 + 8 + 152 + + + 8 + 101 + 9 + 50 + + + 9 + 102 + 10 + 56 + + + 10 + 78 + 11 + 50 + + + 11 + 79 + 12 + 37 + + + 12 + 37 + 13 + 31 + + + 13 + 88 + 14 + 68 + + + 14 + 89 + 15 + 68 + + + 15 + 90 + 16 + 50 + + + 16 + 91 + 17 + 93 + + + 17 + 11 + 18 + 90 + + + 18 + 12 + 19 + 62 + + + 19 + 40 + 20 + 62 + + + 20 + 39 + 21 + 175 + + + 21 + 87 + 22 + 175 + + + + + UDP + 12 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 100 + 7 + 50 + + + 7 + 77 + 8 + 152 + + + 8 + 101 + 9 + 50 + + + 9 + 102 + 10 + 56 + + + 10 + 78 + 11 + 50 + + + 11 + 79 + 12 + 37 + + + 12 + 37 + 13 + 50 + + + 13 + 9 + 14 + 212 + + + 14 + 11 + 15 + 90 + + + 15 + 120 + 16 + 90 + + + 16 + 12 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + FSA + 13 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 93 + 6 + 50 + + + 6 + 94 + 7 + 50 + + + 7 + 95 + 8 + 50 + + + 8 + 96 + 9 + 50 + + + 9 + 97 + 10 + 68 + + + 10 + 37 + 11 + 31 + + + 11 + 98 + 12 + 68 + + + 12 + 99 + 13 + 68 + + + 13 + 11 + 14 + 90 + + + 14 + 39 + 15 + 175 + + + 15 + 87 + 16 + 175 + + + + + Statistics + 14 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 37 + 7 + 25 + + + 7 + 9 + 8 + 162 + + + 8 + 11 + 9 + 90 + + + 9 + 12 + 10 + 62 + + + 10 + 40 + 11 + 62 + + + 11 + 39 + 12 + 175 + + + 12 + 87 + 13 + 175 + + + 13 + 107 + 14 + 62 + + + 14 + 108 + 15 + 62 + + + 15 + 109 + 16 + 62 + + + 16 + 110 + 17 + 62 + + + + + I2C + 15 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 194 + + + 5 + 8 + 6 + 90 + + + 6 + 121 + 7 + 25 + + + 7 + 122 + 8 + 81 + + + 8 + 37 + 9 + 25 + + + 9 + 9 + 10 + 162 + + + 10 + 11 + 11 + 90 + + + 11 + 12 + 12 + 62 + + + 12 + 40 + 13 + 62 + + + 13 + 39 + 14 + 175 + + + 14 + 87 + 15 + 175 + + + + + A2B + 16 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 124 + 6 + 90 + + + 6 + 125 + 7 + 90 + + + 7 + 126 + 8 + 25 + + + 8 + 127 + 9 + 90 + + + 9 + 128 + 10 + 25 + + + 10 + 129 + 11 + 25 + + + 11 + 130 + 12 + 90 + + + 12 + 11 + 13 + 90 + + + 13 + 12 + 14 + 62 + + + 14 + 131 + 15 + 90 + + + 15 + 40 + 16 + 62 + + + 16 + 39 + 17 + 175 + + + 17 + 87 + 18 + 175 + + + + + wBMS + 17 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 133 + 6 + 90 + + + 6 + 135 + 7 + 175 + + + 7 + 132 + 8 + 90 + + + 8 + 136 + 9 + 62 + + + 9 + 137 + 10 + 62 + + + 10 + 37 + 11 + 25 + + + 11 + 9 + 12 + 162 + + + 12 + 11 + 13 + 90 + + + 13 + 12 + 14 + 62 + + + 14 + 40 + 15 + 62 + + + 15 + 39 + 16 + 175 + + + 16 + 87 + 17 + 175 + + + + + MDIO + 18 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 138 + 6 + 68 + + + 6 + 139 + 7 + 43 + + + 7 + 140 + 8 + 68 + + + 8 + 142 + 9 + 81 + + + 9 + 141 + 10 + 87 + + + 10 + 37 + 11 + 25 + + + 11 + 9 + 12 + 162 + + + 12 + 11 + 13 + 90 + + + 13 + 12 + 14 + 62 + + + 14 + 40 + 15 + 62 + + + 15 + 39 + 16 + 175 + + + 16 + 87 + 17 + 175 + + + + + + Custom 1 + + + Custom 2 + + + Custom 3 + + + Custom 4 + + + Custom 5 + + + Custom 6 + + + + True + 50000 + True + True + 9 + 8 + Tahoma + 1 + 10 + True + + + CAN/CAN FD + 0 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 37 + 7 + 25 + + + 7 + 9 + 8 + 162 + + + 8 + 11 + 9 + 90 + + + 9 + 12 + 10 + 62 + + + 10 + 105 + 11 + 25 + + + 11 + 80 + 12 + 25 + + + 12 + 81 + 13 + 25 + + + 13 + 82 + 14 + 25 + + + 14 + 40 + 15 + 62 + + + 15 + 39 + 16 + 175 + + + 16 + 87 + 17 + 175 + + + + + J1939 + 1 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 27 + 6 + 90 + + + 6 + 21 + 7 + 43 + + + 7 + 25 + 8 + 31 + + + 8 + 24 + 9 + 31 + + + 9 + 9 + 10 + 137 + + + 10 + 11 + 11 + 90 + + + 11 + 12 + 12 + 62 + + + 12 + 40 + 13 + 62 + + + 13 + 39 + 14 + 175 + + + 14 + 87 + 15 + 175 + + + + + Class 2 + 2 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 19 + 6 + 90 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 137 + + + 8 + 17 + 9 + 25 + + + + + Ford SCP + 3 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 16 + 6 + 90 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 137 + + + 8 + 15 + 9 + 90 + + + + + GMLAN + 4 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 20 + 7 + 43 + + + 7 + 28 + 8 + 43 + + + 8 + 29 + 9 + 50 + + + 9 + 30 + 10 + 31 + + + 10 + 9 + 11 + 137 + + + 11 + 12 + 12 + 62 + + + 12 + 11 + 13 + 62 + + + + + LIN + 5 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 32 + 3 + 25 + + + 3 + 33 + 4 + 25 + + + 4 + 6 + 5 + 25 + + + 5 + 7 + 6 + 152 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 187 + + + 8 + 34 + 9 + 62 + + + 9 + 35 + 10 + 62 + + + 10 + 36 + 11 + 62 + + + 11 + 11 + 12 + 90 + + + + + CGI + 6 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 37 + 6 + 25 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 162 + + + 8 + 38 + 9 + 90 + + + 9 + 11 + 10 + 90 + + + 10 + 12 + 11 + 62 + + + + + FlexRay + 7 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 54 + 6 + 25 + + + 6 + 106 + 7 + 90 + + + 7 + 51 + 8 + 90 + + + 8 + 103 + 9 + 90 + + + 9 + 37 + 10 + 25 + + + 10 + 9 + 11 + 162 + + + 11 + 11 + 12 + 90 + + + 12 + 12 + 13 + 62 + + + 13 + 104 + 14 + 90 + + + 14 + 60 + 15 + 31 + + + 15 + 57 + 16 + 25 + + + 16 + 58 + 17 + 31 + + + 17 + 59 + 18 + 31 + + + 18 + 56 + 19 + 25 + + + 19 + 55 + 20 + 25 + + + 20 + 50 + 21 + 50 + + + 21 + 52 + 22 + 75 + + + 22 + 53 + 23 + 62 + + + 23 + 35 + 24 + 62 + + + 24 + 40 + 25 + 62 + + + 25 + 39 + 26 + 175 + + + 26 + 87 + 27 + 175 + + + + + ARINC 825 + 8 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 41 + 6 + 43 + + + 6 + 42 + 7 + 50 + + + 7 + 43 + 8 + 31 + + + 8 + 44 + 9 + 31 + + + 9 + 45 + 10 + 31 + + + 10 + 46 + 11 + 37 + + + 11 + 47 + 12 + 31 + + + 12 + 48 + 13 + 50 + + + 13 + 49 + 14 + 31 + + + 14 + 9 + 15 + 162 + + + 15 + 11 + 16 + 90 + + + 16 + 40 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + Ethernet + 9 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 100 + 7 + 50 + + + 7 + 77 + 8 + 152 + + + 8 + 101 + 9 + 50 + + + 9 + 102 + 10 + 56 + + + 10 + 78 + 11 + 50 + + + 11 + 79 + 12 + 37 + + + 12 + 37 + 13 + 25 + + + 13 + 9 + 14 + 162 + + + 14 + 11 + 15 + 90 + + + 15 + 12 + 16 + 62 + + + 16 + 40 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + PTP (802.1as) + 10 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 77 + 7 + 152 + + + 7 + 102 + 8 + 56 + + + 8 + 78 + 9 + 50 + + + 9 + 79 + 10 + 37 + + + 10 + 37 + 11 + 25 + + + 11 + 85 + 12 + 125 + + + 12 + 83 + 13 + 50 + + + 13 + 84 + 14 + 37 + + + 14 + 86 + 15 + 125 + + + 15 + 11 + 16 + 90 + + + 16 + 12 + 17 + 62 + + + 17 + 40 + 18 + 62 + + + 18 + 39 + 19 + 175 + + + 19 + 87 + 20 + 175 + + + + + TCP + 11 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 100 + 7 + 50 + + + 7 + 77 + 8 + 152 + + + 8 + 101 + 9 + 50 + + + 9 + 102 + 10 + 56 + + + 10 + 78 + 11 + 50 + + + 11 + 79 + 12 + 37 + + + 12 + 37 + 13 + 31 + + + 13 + 88 + 14 + 68 + + + 14 + 89 + 15 + 68 + + + 15 + 90 + 16 + 50 + + + 16 + 91 + 17 + 93 + + + 17 + 11 + 18 + 90 + + + 18 + 12 + 19 + 62 + + + 19 + 40 + 20 + 62 + + + 20 + 39 + 21 + 175 + + + 21 + 87 + 22 + 175 + + + + + UDP + 12 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 100 + 7 + 50 + + + 7 + 77 + 8 + 152 + + + 8 + 101 + 9 + 50 + + + 9 + 102 + 10 + 56 + + + 10 + 78 + 11 + 50 + + + 11 + 79 + 12 + 37 + + + 12 + 37 + 13 + 50 + + + 13 + 9 + 14 + 212 + + + 14 + 11 + 15 + 90 + + + 15 + 120 + 16 + 90 + + + 16 + 12 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + FSA + 13 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 93 + 6 + 50 + + + 6 + 94 + 7 + 50 + + + 7 + 95 + 8 + 50 + + + 8 + 96 + 9 + 50 + + + 9 + 97 + 10 + 68 + + + 10 + 37 + 11 + 31 + + + 11 + 98 + 12 + 68 + + + 12 + 99 + 13 + 68 + + + 13 + 11 + 14 + 90 + + + 14 + 39 + 15 + 175 + + + 15 + 87 + 16 + 175 + + + + + Statistics + 14 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 37 + 7 + 25 + + + 7 + 9 + 8 + 162 + + + 8 + 11 + 9 + 90 + + + 9 + 12 + 10 + 62 + + + 10 + 40 + 11 + 62 + + + 11 + 39 + 12 + 175 + + + 12 + 87 + 13 + 175 + + + 13 + 107 + 14 + 62 + + + 14 + 108 + 15 + 62 + + + 15 + 109 + 16 + 62 + + + 16 + 110 + 17 + 62 + + + + + I2C + 15 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 121 + 7 + 25 + + + 7 + 122 + 8 + 81 + + + 8 + 37 + 9 + 25 + + + 9 + 9 + 10 + 162 + + + 10 + 11 + 11 + 90 + + + 11 + 12 + 12 + 62 + + + 12 + 40 + 13 + 62 + + + 13 + 39 + 14 + 175 + + + 14 + 87 + 15 + 175 + + + + + A2B + 16 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 144 + 6 + 90 + + + 6 + 124 + 7 + 90 + + + 7 + 125 + 8 + 90 + + + 8 + 126 + 9 + 25 + + + 9 + 127 + 10 + 90 + + + 10 + 128 + 11 + 25 + + + 11 + 129 + 12 + 25 + + + 12 + 130 + 13 + 90 + + + 13 + 11 + 14 + 90 + + + 14 + 12 + 15 + 62 + + + 15 + 131 + 16 + 90 + + + 16 + 40 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + wBMS + 17 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 133 + 6 + 90 + + + 6 + 135 + 7 + 175 + + + 7 + 132 + 8 + 90 + + + 8 + 136 + 9 + 62 + + + 9 + 137 + 10 + 62 + + + 10 + 37 + 11 + 25 + + + 11 + 9 + 12 + 162 + + + 12 + 11 + 13 + 90 + + + 13 + 12 + 14 + 62 + + + 14 + 40 + 15 + 62 + + + 15 + 39 + 16 + 175 + + + 16 + 87 + 17 + 175 + + + + + MDIO + 18 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 138 + 6 + 68 + + + 6 + 139 + 7 + 43 + + + 7 + 140 + 8 + 68 + + + 8 + 142 + 9 + 81 + + + 9 + 141 + 10 + 87 + + + 10 + 37 + 11 + 25 + + + 11 + 9 + 12 + 162 + + + 12 + 11 + 13 + 90 + + + 13 + 12 + 14 + 62 + + + 14 + 40 + 15 + 62 + + + 15 + 39 + 16 + 175 + + + 16 + 87 + 17 + 175 + + + + + DoIP + 19 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 201 + 5 + 80 + + + 5 + 202 + 6 + 80 + + + 6 + 203 + 7 + 40 + + + 7 + 204 + 8 + 300 + + + 8 + 92 + 9 + 90 + + + 9 + 77 + 10 + 90 + + + 10 + 100 + 11 + 55 + + + 11 + 101 + 12 + 55 + + + 12 + 205 + 13 + 140 + + + 13 + 78 + 14 + 60 + + + 14 + 143 + 15 + 70 + + + 15 + 91 + 16 + 60 + + + 16 + 11 + 17 + 70 + + + 17 + 12 + 18 + 60 + + + 18 + 79 + 19 + 60 + + + + + 10BASE-T1S + 20 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 145 + 6 + 87 + + + 6 + 146 + 7 + 37 + + + 7 + 12 + 8 + 31 + + + 8 + 37 + 9 + 25 + + + 9 + 9 + 10 + 162 + + + 10 + 11 + 11 + 90 + + + 11 + 40 + 12 + 62 + + + 12 + 39 + 13 + 175 + + + 13 + 87 + 14 + 175 + + + + + + TX_ETH01 + + out90 + out79 + + + + Custom 2 + + + Custom 3 + + + Custom 4 + + + Custom 5 + + + Custom 6 + + + + True + 50000 + True + True + 9 + 8 + Tahoma + 2 + 11 + True + + + CAN/CAN FD + 0 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 37 + 7 + 25 + + + 7 + 9 + 8 + 162 + + + 8 + 11 + 9 + 90 + + + 9 + 12 + 10 + 62 + + + 10 + 105 + 11 + 25 + + + 11 + 80 + 12 + 25 + + + 12 + 81 + 13 + 25 + + + 13 + 82 + 14 + 25 + + + 14 + 40 + 15 + 62 + + + 15 + 39 + 16 + 175 + + + 16 + 87 + 17 + 175 + + + + + J1939 + 1 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 27 + 6 + 90 + + + 6 + 21 + 7 + 43 + + + 7 + 25 + 8 + 31 + + + 8 + 24 + 9 + 31 + + + 9 + 9 + 10 + 137 + + + 10 + 11 + 11 + 90 + + + 11 + 12 + 12 + 62 + + + 12 + 40 + 13 + 62 + + + 13 + 39 + 14 + 175 + + + 14 + 87 + 15 + 175 + + + + + Class 2 + 2 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 19 + 6 + 90 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 137 + + + 8 + 17 + 9 + 25 + + + + + Ford SCP + 3 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 16 + 6 + 90 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 137 + + + 8 + 15 + 9 + 90 + + + + + GMLAN + 4 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 20 + 7 + 43 + + + 7 + 28 + 8 + 43 + + + 8 + 29 + 9 + 50 + + + 9 + 30 + 10 + 31 + + + 10 + 9 + 11 + 137 + + + 11 + 12 + 12 + 62 + + + 12 + 11 + 13 + 62 + + + + + LIN + 5 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 32 + 3 + 25 + + + 3 + 33 + 4 + 25 + + + 4 + 6 + 5 + 25 + + + 5 + 7 + 6 + 152 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 187 + + + 8 + 34 + 9 + 62 + + + 9 + 35 + 10 + 62 + + + 10 + 36 + 11 + 62 + + + 11 + 11 + 12 + 90 + + + + + CGI + 6 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 37 + 6 + 25 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 162 + + + 8 + 38 + 9 + 90 + + + 9 + 11 + 10 + 90 + + + 10 + 12 + 11 + 62 + + + + + FlexRay + 7 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 54 + 6 + 25 + + + 6 + 106 + 7 + 90 + + + 7 + 51 + 8 + 90 + + + 8 + 103 + 9 + 90 + + + 9 + 37 + 10 + 25 + + + 10 + 9 + 11 + 162 + + + 11 + 11 + 12 + 90 + + + 12 + 12 + 13 + 62 + + + 13 + 104 + 14 + 90 + + + 14 + 60 + 15 + 31 + + + 15 + 57 + 16 + 25 + + + 16 + 58 + 17 + 31 + + + 17 + 59 + 18 + 31 + + + 18 + 56 + 19 + 25 + + + 19 + 55 + 20 + 25 + + + 20 + 50 + 21 + 50 + + + 21 + 52 + 22 + 75 + + + 22 + 53 + 23 + 62 + + + 23 + 35 + 24 + 62 + + + 24 + 40 + 25 + 62 + + + 25 + 39 + 26 + 175 + + + 26 + 87 + 27 + 175 + + + + + ARINC 825 + 8 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 41 + 6 + 43 + + + 6 + 42 + 7 + 50 + + + 7 + 43 + 8 + 31 + + + 8 + 44 + 9 + 31 + + + 9 + 45 + 10 + 31 + + + 10 + 46 + 11 + 37 + + + 11 + 47 + 12 + 31 + + + 12 + 48 + 13 + 50 + + + 13 + 49 + 14 + 31 + + + 14 + 9 + 15 + 162 + + + 15 + 11 + 16 + 90 + + + 16 + 40 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + Ethernet + 9 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 186 + + + 5 + 92 + 6 + 152 + + + 6 + 100 + 7 + 50 + + + 7 + 77 + 8 + 152 + + + 8 + 101 + 9 + 50 + + + 9 + 102 + 10 + 56 + + + 10 + 78 + 11 + 50 + + + 11 + 79 + 12 + 37 + + + 12 + 37 + 13 + 25 + + + 13 + 9 + 14 + 162 + + + 14 + 11 + 15 + 90 + + + 15 + 12 + 16 + 62 + + + 16 + 40 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + PTP (802.1as) + 10 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 77 + 7 + 152 + + + 7 + 102 + 8 + 56 + + + 8 + 78 + 9 + 50 + + + 9 + 79 + 10 + 37 + + + 10 + 37 + 11 + 25 + + + 11 + 85 + 12 + 125 + + + 12 + 83 + 13 + 50 + + + 13 + 84 + 14 + 37 + + + 14 + 86 + 15 + 125 + + + 15 + 11 + 16 + 90 + + + 16 + 12 + 17 + 62 + + + 17 + 40 + 18 + 62 + + + 18 + 39 + 19 + 175 + + + 19 + 87 + 20 + 175 + + + + + TCP + 11 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 100 + 7 + 50 + + + 7 + 77 + 8 + 152 + + + 8 + 101 + 9 + 50 + + + 9 + 102 + 10 + 56 + + + 10 + 78 + 11 + 50 + + + 11 + 79 + 12 + 37 + + + 12 + 37 + 13 + 31 + + + 13 + 88 + 14 + 68 + + + 14 + 89 + 15 + 68 + + + 15 + 90 + 16 + 50 + + + 16 + 91 + 17 + 93 + + + 17 + 11 + 18 + 90 + + + 18 + 12 + 19 + 62 + + + 19 + 40 + 20 + 62 + + + 20 + 39 + 21 + 175 + + + 21 + 87 + 22 + 175 + + + + + UDP + 12 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 100 + 7 + 50 + + + 7 + 77 + 8 + 152 + + + 8 + 101 + 9 + 50 + + + 9 + 102 + 10 + 56 + + + 10 + 78 + 11 + 50 + + + 11 + 79 + 12 + 37 + + + 12 + 37 + 13 + 50 + + + 13 + 9 + 14 + 212 + + + 14 + 11 + 15 + 90 + + + 15 + 120 + 16 + 90 + + + 16 + 12 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + FSA + 13 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 93 + 6 + 50 + + + 6 + 94 + 7 + 50 + + + 7 + 95 + 8 + 50 + + + 8 + 96 + 9 + 50 + + + 9 + 97 + 10 + 68 + + + 10 + 37 + 11 + 31 + + + 11 + 98 + 12 + 68 + + + 12 + 99 + 13 + 68 + + + 13 + 11 + 14 + 90 + + + 14 + 39 + 15 + 175 + + + 15 + 87 + 16 + 175 + + + + + Statistics + 14 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 37 + 7 + 25 + + + 7 + 9 + 8 + 162 + + + 8 + 11 + 9 + 90 + + + 9 + 12 + 10 + 62 + + + 10 + 40 + 11 + 62 + + + 11 + 39 + 12 + 175 + + + 12 + 87 + 13 + 175 + + + 13 + 107 + 14 + 62 + + + 14 + 108 + 15 + 62 + + + 15 + 109 + 16 + 62 + + + 16 + 110 + 17 + 62 + + + + + I2C + 15 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 121 + 7 + 25 + + + 7 + 122 + 8 + 81 + + + 8 + 37 + 9 + 25 + + + 9 + 9 + 10 + 162 + + + 10 + 11 + 11 + 90 + + + 11 + 12 + 12 + 62 + + + 12 + 40 + 13 + 62 + + + 13 + 39 + 14 + 175 + + + 14 + 87 + 15 + 175 + + + + + A2B + 16 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 144 + 6 + 90 + + + 6 + 124 + 7 + 90 + + + 7 + 125 + 8 + 90 + + + 8 + 126 + 9 + 25 + + + 9 + 127 + 10 + 90 + + + 10 + 128 + 11 + 25 + + + 11 + 129 + 12 + 25 + + + 12 + 130 + 13 + 90 + + + 13 + 11 + 14 + 90 + + + 14 + 12 + 15 + 62 + + + 15 + 131 + 16 + 90 + + + 16 + 40 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + wBMS + 17 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 133 + 6 + 90 + + + 6 + 135 + 7 + 175 + + + 7 + 132 + 8 + 90 + + + 8 + 136 + 9 + 62 + + + 9 + 137 + 10 + 62 + + + 10 + 37 + 11 + 25 + + + 11 + 9 + 12 + 162 + + + 12 + 11 + 13 + 90 + + + 13 + 12 + 14 + 62 + + + 14 + 40 + 15 + 62 + + + 15 + 39 + 16 + 175 + + + 16 + 87 + 17 + 175 + + + + + MDIO + 18 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 138 + 6 + 68 + + + 6 + 139 + 7 + 43 + + + 7 + 140 + 8 + 68 + + + 8 + 142 + 9 + 81 + + + 9 + 141 + 10 + 87 + + + 10 + 37 + 11 + 25 + + + 11 + 9 + 12 + 162 + + + 12 + 11 + 13 + 90 + + + 13 + 12 + 14 + 62 + + + 14 + 40 + 15 + 62 + + + 15 + 39 + 16 + 175 + + + 16 + 87 + 17 + 175 + + + + + DoIP + 19 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 201 + 5 + 80 + + + 5 + 202 + 6 + 80 + + + 6 + 203 + 7 + 40 + + + 7 + 204 + 8 + 300 + + + 8 + 92 + 9 + 90 + + + 9 + 77 + 10 + 90 + + + 10 + 100 + 11 + 55 + + + 11 + 101 + 12 + 55 + + + 12 + 205 + 13 + 140 + + + 13 + 78 + 14 + 60 + + + 14 + 143 + 15 + 70 + + + 15 + 91 + 16 + 60 + + + 16 + 11 + 17 + 70 + + + 17 + 12 + 18 + 60 + + + 18 + 79 + 19 + 60 + + + + + 10BASE-T1S + 20 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 145 + 6 + 87 + + + 6 + 146 + 7 + 37 + + + 7 + 12 + 8 + 31 + + + 8 + 37 + 9 + 25 + + + 9 + 9 + 10 + 162 + + + 10 + 11 + 11 + 90 + + + 11 + 40 + 12 + 62 + + + 12 + 39 + 13 + 175 + + + 13 + 87 + 14 + 175 + + + + + + RX_ETH02 + + in5 + in2 + in3 + + + + Custom 2 + + + Custom 3 + + + Custom 4 + + + Custom 5 + + + Custom 6 + + + + True + 50000 + True + True + 9 + 8 + Tahoma + 3 + 12 + True + + + CAN/CAN FD + 0 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 37 + 7 + 25 + + + 7 + 9 + 8 + 162 + + + 8 + 11 + 9 + 90 + + + 9 + 12 + 10 + 62 + + + 10 + 105 + 11 + 25 + + + 11 + 80 + 12 + 25 + + + 12 + 81 + 13 + 25 + + + 13 + 82 + 14 + 25 + + + 14 + 40 + 15 + 62 + + + 15 + 39 + 16 + 175 + + + 16 + 87 + 17 + 175 + + + + + J1939 + 1 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 27 + 6 + 90 + + + 6 + 21 + 7 + 43 + + + 7 + 25 + 8 + 31 + + + 8 + 24 + 9 + 31 + + + 9 + 9 + 10 + 137 + + + 10 + 11 + 11 + 90 + + + 11 + 12 + 12 + 62 + + + 12 + 40 + 13 + 62 + + + 13 + 39 + 14 + 175 + + + 14 + 87 + 15 + 175 + + + + + Class 2 + 2 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 19 + 6 + 90 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 137 + + + 8 + 17 + 9 + 25 + + + + + Ford SCP + 3 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 16 + 6 + 90 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 137 + + + 8 + 15 + 9 + 90 + + + + + GMLAN + 4 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 20 + 7 + 43 + + + 7 + 28 + 8 + 43 + + + 8 + 29 + 9 + 50 + + + 9 + 30 + 10 + 31 + + + 10 + 9 + 11 + 137 + + + 11 + 12 + 12 + 62 + + + 12 + 11 + 13 + 62 + + + + + LIN + 5 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 32 + 3 + 25 + + + 3 + 33 + 4 + 25 + + + 4 + 6 + 5 + 25 + + + 5 + 7 + 6 + 152 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 187 + + + 8 + 34 + 9 + 62 + + + 9 + 35 + 10 + 62 + + + 10 + 36 + 11 + 62 + + + 11 + 11 + 12 + 90 + + + + + CGI + 6 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 37 + 6 + 25 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 162 + + + 8 + 38 + 9 + 90 + + + 9 + 11 + 10 + 90 + + + 10 + 12 + 11 + 62 + + + + + FlexRay + 7 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 54 + 6 + 25 + + + 6 + 106 + 7 + 90 + + + 7 + 51 + 8 + 90 + + + 8 + 103 + 9 + 90 + + + 9 + 37 + 10 + 25 + + + 10 + 9 + 11 + 162 + + + 11 + 11 + 12 + 90 + + + 12 + 12 + 13 + 62 + + + 13 + 104 + 14 + 90 + + + 14 + 60 + 15 + 31 + + + 15 + 57 + 16 + 25 + + + 16 + 58 + 17 + 31 + + + 17 + 59 + 18 + 31 + + + 18 + 56 + 19 + 25 + + + 19 + 55 + 20 + 25 + + + 20 + 50 + 21 + 50 + + + 21 + 52 + 22 + 75 + + + 22 + 53 + 23 + 62 + + + 23 + 35 + 24 + 62 + + + 24 + 40 + 25 + 62 + + + 25 + 39 + 26 + 175 + + + 26 + 87 + 27 + 175 + + + + + ARINC 825 + 8 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 41 + 6 + 43 + + + 6 + 42 + 7 + 50 + + + 7 + 43 + 8 + 31 + + + 8 + 44 + 9 + 31 + + + 9 + 45 + 10 + 31 + + + 10 + 46 + 11 + 37 + + + 11 + 47 + 12 + 31 + + + 12 + 48 + 13 + 50 + + + 13 + 49 + 14 + 31 + + + 14 + 9 + 15 + 162 + + + 15 + 11 + 16 + 90 + + + 16 + 40 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + Ethernet + 9 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 100 + 7 + 50 + + + 7 + 77 + 8 + 152 + + + 8 + 101 + 9 + 50 + + + 9 + 102 + 10 + 56 + + + 10 + 78 + 11 + 50 + + + 11 + 79 + 12 + 37 + + + 12 + 37 + 13 + 25 + + + 13 + 9 + 14 + 162 + + + 14 + 11 + 15 + 90 + + + 15 + 12 + 16 + 62 + + + 16 + 40 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + PTP (802.1as) + 10 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 77 + 7 + 152 + + + 7 + 102 + 8 + 56 + + + 8 + 78 + 9 + 50 + + + 9 + 79 + 10 + 37 + + + 10 + 37 + 11 + 25 + + + 11 + 85 + 12 + 125 + + + 12 + 83 + 13 + 50 + + + 13 + 84 + 14 + 37 + + + 14 + 86 + 15 + 125 + + + 15 + 11 + 16 + 90 + + + 16 + 12 + 17 + 62 + + + 17 + 40 + 18 + 62 + + + 18 + 39 + 19 + 175 + + + 19 + 87 + 20 + 175 + + + + + TCP + 11 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 100 + 7 + 50 + + + 7 + 77 + 8 + 152 + + + 8 + 101 + 9 + 50 + + + 9 + 102 + 10 + 56 + + + 10 + 78 + 11 + 50 + + + 11 + 79 + 12 + 37 + + + 12 + 37 + 13 + 31 + + + 13 + 88 + 14 + 68 + + + 14 + 89 + 15 + 68 + + + 15 + 90 + 16 + 50 + + + 16 + 91 + 17 + 93 + + + 17 + 11 + 18 + 90 + + + 18 + 12 + 19 + 62 + + + 19 + 40 + 20 + 62 + + + 20 + 39 + 21 + 175 + + + 21 + 87 + 22 + 175 + + + + + UDP + 12 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 100 + 7 + 50 + + + 7 + 77 + 8 + 152 + + + 8 + 101 + 9 + 50 + + + 9 + 102 + 10 + 56 + + + 10 + 78 + 11 + 50 + + + 11 + 79 + 12 + 37 + + + 12 + 37 + 13 + 50 + + + 13 + 9 + 14 + 212 + + + 14 + 11 + 15 + 90 + + + 15 + 120 + 16 + 90 + + + 16 + 12 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + FSA + 13 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 93 + 6 + 50 + + + 6 + 94 + 7 + 50 + + + 7 + 95 + 8 + 50 + + + 8 + 96 + 9 + 50 + + + 9 + 97 + 10 + 68 + + + 10 + 37 + 11 + 31 + + + 11 + 98 + 12 + 68 + + + 12 + 99 + 13 + 68 + + + 13 + 11 + 14 + 90 + + + 14 + 39 + 15 + 175 + + + 15 + 87 + 16 + 175 + + + + + Statistics + 14 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 37 + 7 + 25 + + + 7 + 9 + 8 + 162 + + + 8 + 11 + 9 + 90 + + + 9 + 12 + 10 + 62 + + + 10 + 40 + 11 + 62 + + + 11 + 39 + 12 + 175 + + + 12 + 87 + 13 + 175 + + + 13 + 107 + 14 + 62 + + + 14 + 108 + 15 + 62 + + + 15 + 109 + 16 + 62 + + + 16 + 110 + 17 + 62 + + + + + I2C + 15 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 121 + 7 + 25 + + + 7 + 122 + 8 + 81 + + + 8 + 37 + 9 + 25 + + + 9 + 9 + 10 + 162 + + + 10 + 11 + 11 + 90 + + + 11 + 12 + 12 + 62 + + + 12 + 40 + 13 + 62 + + + 13 + 39 + 14 + 175 + + + 14 + 87 + 15 + 175 + + + + + A2B + 16 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 144 + 6 + 90 + + + 6 + 124 + 7 + 90 + + + 7 + 125 + 8 + 90 + + + 8 + 126 + 9 + 25 + + + 9 + 127 + 10 + 90 + + + 10 + 128 + 11 + 25 + + + 11 + 129 + 12 + 25 + + + 12 + 130 + 13 + 90 + + + 13 + 11 + 14 + 90 + + + 14 + 12 + 15 + 62 + + + 15 + 131 + 16 + 90 + + + 16 + 40 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + wBMS + 17 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 133 + 6 + 90 + + + 6 + 135 + 7 + 175 + + + 7 + 132 + 8 + 90 + + + 8 + 136 + 9 + 62 + + + 9 + 137 + 10 + 62 + + + 10 + 37 + 11 + 25 + + + 11 + 9 + 12 + 162 + + + 12 + 11 + 13 + 90 + + + 13 + 12 + 14 + 62 + + + 14 + 40 + 15 + 62 + + + 15 + 39 + 16 + 175 + + + 16 + 87 + 17 + 175 + + + + + MDIO + 18 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 138 + 6 + 68 + + + 6 + 139 + 7 + 43 + + + 7 + 140 + 8 + 68 + + + 8 + 142 + 9 + 81 + + + 9 + 141 + 10 + 87 + + + 10 + 37 + 11 + 25 + + + 11 + 9 + 12 + 162 + + + 12 + 11 + 13 + 90 + + + 13 + 12 + 14 + 62 + + + 14 + 40 + 15 + 62 + + + 15 + 39 + 16 + 175 + + + 16 + 87 + 17 + 175 + + + + + DoIP + 19 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 201 + 5 + 80 + + + 5 + 202 + 6 + 80 + + + 6 + 203 + 7 + 40 + + + 7 + 204 + 8 + 300 + + + 8 + 92 + 9 + 90 + + + 9 + 77 + 10 + 90 + + + 10 + 100 + 11 + 55 + + + 11 + 101 + 12 + 55 + + + 12 + 205 + 13 + 140 + + + 13 + 78 + 14 + 60 + + + 14 + 143 + 15 + 70 + + + 15 + 91 + 16 + 60 + + + 16 + 11 + 17 + 70 + + + 17 + 12 + 18 + 60 + + + 18 + 79 + 19 + 60 + + + + + 10BASE-T1S + 20 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 145 + 6 + 87 + + + 6 + 146 + 7 + 37 + + + 7 + 12 + 8 + 31 + + + 8 + 37 + 9 + 25 + + + 9 + 9 + 10 + 162 + + + 10 + 11 + 11 + 90 + + + 11 + 40 + 12 + 62 + + + 12 + 39 + 13 + 175 + + + 13 + 87 + 14 + 175 + + + + + + TX_ETH02 + + out82 + + + + Custom 2 + + + Custom 3 + + + Custom 4 + + + Custom 5 + + + Custom 6 + + + + True + 50000 + True + True + 9 + 8 + Tahoma + 4 + 13 + True + + + CAN/CAN FD + 0 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 37 + 7 + 25 + + + 7 + 9 + 8 + 162 + + + 8 + 11 + 9 + 90 + + + 9 + 12 + 10 + 62 + + + 10 + 105 + 11 + 25 + + + 11 + 80 + 12 + 25 + + + 12 + 81 + 13 + 25 + + + 13 + 82 + 14 + 25 + + + 14 + 40 + 15 + 62 + + + 15 + 39 + 16 + 175 + + + 16 + 87 + 17 + 175 + + + + + J1939 + 1 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 27 + 6 + 90 + + + 6 + 21 + 7 + 43 + + + 7 + 25 + 8 + 31 + + + 8 + 24 + 9 + 31 + + + 9 + 9 + 10 + 137 + + + 10 + 11 + 11 + 90 + + + 11 + 12 + 12 + 62 + + + 12 + 40 + 13 + 62 + + + 13 + 39 + 14 + 175 + + + 14 + 87 + 15 + 175 + + + + + Class 2 + 2 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 19 + 6 + 90 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 137 + + + 8 + 17 + 9 + 25 + + + + + Ford SCP + 3 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 16 + 6 + 90 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 137 + + + 8 + 15 + 9 + 90 + + + + + GMLAN + 4 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 20 + 7 + 43 + + + 7 + 28 + 8 + 43 + + + 8 + 29 + 9 + 50 + + + 9 + 30 + 10 + 31 + + + 10 + 9 + 11 + 137 + + + 11 + 12 + 12 + 62 + + + 12 + 11 + 13 + 62 + + + + + LIN + 5 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 32 + 3 + 25 + + + 3 + 33 + 4 + 25 + + + 4 + 6 + 5 + 25 + + + 5 + 7 + 6 + 152 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 187 + + + 8 + 34 + 9 + 62 + + + 9 + 35 + 10 + 62 + + + 10 + 36 + 11 + 62 + + + 11 + 11 + 12 + 90 + + + + + CGI + 6 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 37 + 6 + 25 + + + 6 + 8 + 7 + 90 + + + 7 + 9 + 8 + 162 + + + 8 + 38 + 9 + 90 + + + 9 + 11 + 10 + 90 + + + 10 + 12 + 11 + 62 + + + + + FlexRay + 7 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 54 + 6 + 25 + + + 6 + 106 + 7 + 90 + + + 7 + 51 + 8 + 90 + + + 8 + 103 + 9 + 90 + + + 9 + 37 + 10 + 25 + + + 10 + 9 + 11 + 162 + + + 11 + 11 + 12 + 90 + + + 12 + 12 + 13 + 62 + + + 13 + 104 + 14 + 90 + + + 14 + 60 + 15 + 31 + + + 15 + 57 + 16 + 25 + + + 16 + 58 + 17 + 31 + + + 17 + 59 + 18 + 31 + + + 18 + 56 + 19 + 25 + + + 19 + 55 + 20 + 25 + + + 20 + 50 + 21 + 50 + + + 21 + 52 + 22 + 75 + + + 22 + 53 + 23 + 62 + + + 23 + 35 + 24 + 62 + + + 24 + 40 + 25 + 62 + + + 25 + 39 + 26 + 175 + + + 26 + 87 + 27 + 175 + + + + + ARINC 825 + 8 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 41 + 6 + 43 + + + 6 + 42 + 7 + 50 + + + 7 + 43 + 8 + 31 + + + 8 + 44 + 9 + 31 + + + 9 + 45 + 10 + 31 + + + 10 + 46 + 11 + 37 + + + 11 + 47 + 12 + 31 + + + 12 + 48 + 13 + 50 + + + 13 + 49 + 14 + 31 + + + 14 + 9 + 15 + 162 + + + 15 + 11 + 16 + 90 + + + 16 + 40 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + Ethernet + 9 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 100 + 7 + 50 + + + 7 + 77 + 8 + 152 + + + 8 + 101 + 9 + 50 + + + 9 + 102 + 10 + 56 + + + 10 + 78 + 11 + 50 + + + 11 + 79 + 12 + 37 + + + 12 + 37 + 13 + 25 + + + 13 + 9 + 14 + 162 + + + 14 + 11 + 15 + 90 + + + 15 + 12 + 16 + 62 + + + 16 + 40 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + PTP (802.1as) + 10 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 77 + 7 + 152 + + + 7 + 102 + 8 + 56 + + + 8 + 78 + 9 + 50 + + + 9 + 79 + 10 + 37 + + + 10 + 37 + 11 + 25 + + + 11 + 85 + 12 + 125 + + + 12 + 83 + 13 + 50 + + + 13 + 84 + 14 + 37 + + + 14 + 86 + 15 + 125 + + + 15 + 11 + 16 + 90 + + + 16 + 12 + 17 + 62 + + + 17 + 40 + 18 + 62 + + + 18 + 39 + 19 + 175 + + + 19 + 87 + 20 + 175 + + + + + TCP + 11 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 100 + 7 + 50 + + + 7 + 77 + 8 + 152 + + + 8 + 101 + 9 + 50 + + + 9 + 102 + 10 + 56 + + + 10 + 78 + 11 + 50 + + + 11 + 79 + 12 + 37 + + + 12 + 37 + 13 + 31 + + + 13 + 88 + 14 + 68 + + + 14 + 89 + 15 + 68 + + + 15 + 90 + 16 + 50 + + + 16 + 91 + 17 + 93 + + + 17 + 11 + 18 + 90 + + + 18 + 12 + 19 + 62 + + + 19 + 40 + 20 + 62 + + + 20 + 39 + 21 + 175 + + + 21 + 87 + 22 + 175 + + + + + UDP + 12 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 92 + 6 + 152 + + + 6 + 100 + 7 + 50 + + + 7 + 77 + 8 + 152 + + + 8 + 101 + 9 + 50 + + + 9 + 102 + 10 + 56 + + + 10 + 78 + 11 + 50 + + + 11 + 79 + 12 + 37 + + + 12 + 37 + 13 + 50 + + + 13 + 9 + 14 + 212 + + + 14 + 11 + 15 + 90 + + + 15 + 120 + 16 + 90 + + + 16 + 12 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + FSA + 13 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 93 + 6 + 50 + + + 6 + 94 + 7 + 50 + + + 7 + 95 + 8 + 50 + + + 8 + 96 + 9 + 50 + + + 9 + 97 + 10 + 68 + + + 10 + 37 + 11 + 31 + + + 11 + 98 + 12 + 68 + + + 12 + 99 + 13 + 68 + + + 13 + 11 + 14 + 90 + + + 14 + 39 + 15 + 175 + + + 15 + 87 + 16 + 175 + + + + + Statistics + 14 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 37 + 7 + 25 + + + 7 + 9 + 8 + 162 + + + 8 + 11 + 9 + 90 + + + 9 + 12 + 10 + 62 + + + 10 + 40 + 11 + 62 + + + 11 + 39 + 12 + 175 + + + 12 + 87 + 13 + 175 + + + 13 + 107 + 14 + 62 + + + 14 + 108 + 15 + 62 + + + 15 + 109 + 16 + 62 + + + 16 + 110 + 17 + 62 + + + + + I2C + 15 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 8 + 6 + 90 + + + 6 + 121 + 7 + 25 + + + 7 + 122 + 8 + 81 + + + 8 + 37 + 9 + 25 + + + 9 + 9 + 10 + 162 + + + 10 + 11 + 11 + 90 + + + 11 + 12 + 12 + 62 + + + 12 + 40 + 13 + 62 + + + 13 + 39 + 14 + 175 + + + 14 + 87 + 15 + 175 + + + + + A2B + 16 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 144 + 6 + 90 + + + 6 + 124 + 7 + 90 + + + 7 + 125 + 8 + 90 + + + 8 + 126 + 9 + 25 + + + 9 + 127 + 10 + 90 + + + 10 + 128 + 11 + 25 + + + 11 + 129 + 12 + 25 + + + 12 + 130 + 13 + 90 + + + 13 + 11 + 14 + 90 + + + 14 + 12 + 15 + 62 + + + 15 + 131 + 16 + 90 + + + 16 + 40 + 17 + 62 + + + 17 + 39 + 18 + 175 + + + 18 + 87 + 19 + 175 + + + + + wBMS + 17 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 133 + 6 + 90 + + + 6 + 135 + 7 + 175 + + + 7 + 132 + 8 + 90 + + + 8 + 136 + 9 + 62 + + + 9 + 137 + 10 + 62 + + + 10 + 37 + 11 + 25 + + + 11 + 9 + 12 + 162 + + + 12 + 11 + 13 + 90 + + + 13 + 12 + 14 + 62 + + + 14 + 40 + 15 + 62 + + + 15 + 39 + 16 + 175 + + + 16 + 87 + 17 + 175 + + + + + MDIO + 18 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 138 + 6 + 68 + + + 6 + 139 + 7 + 43 + + + 7 + 140 + 8 + 68 + + + 8 + 142 + 9 + 81 + + + 9 + 141 + 10 + 87 + + + 10 + 37 + 11 + 25 + + + 11 + 9 + 12 + 162 + + + 12 + 11 + 13 + 90 + + + 13 + 12 + 14 + 62 + + + 14 + 40 + 15 + 62 + + + 15 + 39 + 16 + 175 + + + 16 + 87 + 17 + 175 + + + + + DoIP + 19 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 201 + 5 + 80 + + + 5 + 202 + 6 + 80 + + + 6 + 203 + 7 + 40 + + + 7 + 204 + 8 + 300 + + + 8 + 92 + 9 + 90 + + + 9 + 77 + 10 + 90 + + + 10 + 100 + 11 + 55 + + + 11 + 101 + 12 + 55 + + + 12 + 205 + 13 + 140 + + + 13 + 78 + 14 + 60 + + + 14 + 143 + 15 + 70 + + + 15 + 91 + 16 + 60 + + + 16 + 11 + 17 + 70 + + + 17 + 12 + 18 + 60 + + + 18 + 79 + 19 + 60 + + + + + 10BASE-T1S + 20 + + + 0 + 1 + 62 + + + 1 + 1 + 2 + 90 + + + 2 + 5 + 3 + 25 + + + 3 + 6 + 4 + 25 + + + 4 + 7 + 5 + 152 + + + 5 + 145 + 6 + 87 + + + 6 + 146 + 7 + 37 + + + 7 + 12 + 8 + 31 + + + 8 + 37 + 9 + 25 + + + 9 + 9 + 10 + 162 + + + 10 + 11 + 11 + 90 + + + 11 + 40 + 12 + 62 + + + 12 + 39 + 13 + 175 + + + 13 + 87 + 14 + 175 + + + + + + RX_ETH01 + + in8 + in7 + + + + Custom 2 + + + Custom 3 + + + Custom 4 + + + Custom 5 + + + Custom 6 + + + + + 1 + + Fire2 + + + Gigastar + + + + + HS CAN + net0 + HS CAN + 500000 + 1 + 2000000 + 2 + 1 + False + False + + + MS CAN + net1 + MS CAN + 500000 + 1 + 2000000 + 2 + False + False + + + SW CAN + net2 + SW CAN + 33333 + 1 + 1 + 2 + False + False + + + J1850 VPW + net3 + J1850 VPW + 10417 + 3 + 2 + False + False + + + ISO9141/KW2K + net4 + ISO9141/KW2K + 10417 + 6 + 2 + False + False + + + LSFT CAN + net5 + LSFT CAN + 125000 + 1 + 2 + False + False + + + J1850 PWM + net6 + J1850 PWM + 41600 + 4 + 2 + False + False + + + J1708 + net7 + J1708 + 9600 + 13 + 2 + False + False + + + neoVI + net8 + neoVI + 0 + 1 + 2 + False + False + + + HS CAN2 + net9 + HS CAN2 (neoVI 3G) + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN3 + net10 + HS CAN3 (neoVI 3G) + 500000 + 1 + 2000000 + 2 + False + False + + + LIN2 + net11 + LIN2 (neoVI 3G) + 10417 + 12 + 2 + False + False + + + LIN3 + net12 + LIN3 (neoVI 3G) + 10417 + 12 + 2 + False + False + + + LIN4 + net13 + LIN4 (neoVI 3G) + 10417 + 12 + 2 + False + False + + + CGI + net14 + CGI (neoVI 3G) + 625000 + 18 + 2 + False + False + + + LIN + net15 + LIN + 10417 + 12 + 2 + False + False + + + ISO9141/KW2K 2 + net16 + ISO9141/KW2K 2 + 10417 + 6 + 2 + False + False + + + ISO9141/KW2K 3 + net17 + ISO9141/KW2K 3 + 10417 + 6 + 2 + False + False + + + ISO9141/KW2K 4 + net18 + ISO9141/KW2K 4 + 10417 + 6 + 2 + False + False + + + HS CAN4 + net19 + HS CAN4 + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN5 + net20 + HS CAN5 + 500000 + 1 + 2000000 + 2 + False + False + + + UART + net21 + UART (neoVI 3G) + 10417 + 28 + 2 + False + False + + + UART2 + net22 + UART2 (neoVI 3G) + 10417 + 28 + 2 + False + False + + + LIN5 + net23 + LIN5 (neoVI 3G) + 10417 + 12 + 2 + False + False + + + MOST (VNET A) + net24 + MOST (VNET A) + 1000000 + 17 + 2 + False + False + + + FlexRay1A (VNET A) + net25 + FlexRay1A (VNET A) + 5000000 + 16 + 2 + False + False + + + FlexRay1B (VNET A) + net26 + FlexRay1B (VNET A) + 5000000 + 16 + 2 + False + False + + + FlexRay2A (VNET A) + net27 + FlexRay2A (VNET A) + 5000000 + 16 + 2 + False + False + + + FlexRay2B (VNET A) + net28 + FlexRay2B (VNET A) + 5000000 + 16 + 2 + False + False + + + HS CAN (VNET A) + net29 + HS CAN (VNET A) + 500000 + 1 + 2000000 + 2 + False + False + + + MS CAN (VNET A) + net30 + MS CAN (VNET A) + 500000 + 1 + 2000000 + 2 + False + False + + + SW CAN (VNET A) + net31 + SW CAN (VNET A) + 33333 + 1 + 2 + False + False + + + J1850 VPW (VNET A) + net32 + J1850 VPW (VNET A) + 10417 + 3 + 2 + False + False + + + LSFT CAN (VNET A) + net33 + LSFT CAN (VNET A) + 125000 + 1 + 2 + False + False + + + J1708 (VNET A) + net34 + J1708 (VNET A) + 9600 + 13 + 2 + False + False + + + neoVI (VNET A) + net35 + neoVI (VNET A) + 500000 + 1 + 2 + False + False + + + HS CAN2 (VNET A) + net36 + HS CAN2 (VNET A) + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN3 (VNET A) + net37 + HS CAN3 (VNET A) + 500000 + 1 + 2000000 + 2 + False + False + + + LIN (VNET A) + net38 + LIN (VNET A) + 10417 + 12 + 2 + False + False + + + LIN2 (VNET A) + net39 + LIN2 (VNET A) + 10417 + 12 + 2 + False + False + + + LIN3 (VNET A) + net40 + LIN3 (VNET A) + 10417 + 12 + 2 + False + False + + + LIN4 (VNET A) + net41 + LIN4 (VNET A) + 10417 + 12 + 2 + False + False + + + CGI (VNET A) + net42 + CGI (VNET A) + 625000 + 18 + 2 + False + False + + + ISO9141/KW2K (VNET A) + net43 + ISO9141/KW2K (VNET A) + 10417 + 6 + 2 + False + False + + + ISO9141/KW2K 2 (VNET A) + net44 + ISO9141/KW2K 2 (VNET A) + 10417 + 6 + 2 + False + False + + + ISO9141/KW2K 3 (VNET A) + net45 + ISO9141/KW2K 3 (VNET A) + 10417 + 6 + 2 + False + False + + + ISO9141/KW2K 4 (VNET A) + net46 + ISO9141/KW2K 4 (VNET A) + 10417 + 6 + 2 + False + False + + + HS CAN (VNET B) + net47 + HS CAN (VNET B) + 500000 + 1 + 2000000 + 2 + False + False + + + MS CAN (VNET B) + net48 + MS CAN (VNET B) + 500000 + 1 + 2000000 + 2 + False + False + + + SW CAN (VNET B) + net49 + SW CAN (VNET B) + 33333 + 1 + 2 + False + False + + + J1850 VPW (VNET B) + net50 + J1850 VPW (VNET B) + 10417 + 3 + 2 + False + False + + + LSFT CAN (VNET B) + net51 + LSFT CAN (VNET B) + 125000 + 1 + 2 + False + False + + + J1708 (VNET B) + net52 + J1708 (VNET B) + 9600 + 13 + 2 + False + False + + + neoVI (VNET B) + net53 + neoVI (VNET B) + 500000 + 1 + 2 + False + False + + + HS CAN2 (VNET B) + net54 + HS CAN2 (VNET B) + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN3 (VNET B) + net55 + HS CAN3 (VNET B) + 500000 + 1 + 2000000 + 2 + False + False + + + LIN (VNET B) + net56 + LIN (VNET B) + 10417 + 12 + 2 + False + False + + + LIN2 (VNET B) + net57 + LIN2 (VNET B) + 10417 + 12 + 2 + False + False + + + LIN3 (VNET B) + net58 + LIN3 (VNET B) + 10417 + 12 + 2 + False + False + + + LIN4 (VNET B) + net59 + LIN4 (VNET B) + 10417 + 12 + 2 + False + False + + + CGI (VNET B) + net60 + CGI (VNET B) + 625000 + 18 + 2 + False + False + + + ISO9141/KW2K (VNET B) + net61 + ISO9141/KW2K (VNET B) + 10417 + 6 + 2 + False + False + + + ISO9141/KW2K 2 (VNET B) + net62 + ISO9141/KW2K 2 (VNET B) + 10417 + 6 + 2 + False + False + + + ISO9141/KW2K 3 (VNET B) + net63 + ISO9141/KW2K 3 (VNET B) + 10417 + 6 + 2 + False + False + + + ISO9141/KW2K 4 (VNET B) + net64 + ISO9141/KW2K 4 (VNET B) + 10417 + 6 + 2 + False + False + + + HS CAN4 (VNET A) + net65 + HS CAN4 (VNET A) + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN5 (VNET A) + net66 + HS CAN5 (VNET A) + 500000 + 1 + 2000000 + 2 + False + False + + + LIN5 (VNET A) + net67 + LIN5 (VNET A) + 10417 + 12 + 2 + False + False + + + HS CAN4 (VNET B) + net68 + HS CAN4 (VNET B) + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN5 (VNET B) + net69 + HS CAN5 (VNET B) + 500000 + 1 + 2000000 + 2 + False + False + + + LIN5 (VNET B) + net70 + LIN5 (VNET B) + 10417 + 12 + 2 + False + False + + + Ethernet DAQ + net71 + Ethernet DAQ (neoVI 3G) + 0 + 29 + 2 + False + False + + + Ethernet + net72 + Ethernet 10 : Solo 10G Thunderbolt 3 Edition #3 + 29 + True + Ethernet PCAP + icsenet.dll + 2 + False + False + + + MOST (VNET B) + net73 + MOST (VNET B) + 1000000 + 17 + 2 + False + False + + + FlexRay1A (VNET B) + net74 + FlexRay1A (VNET B) + 5000000 + 16 + 2 + False + False + + + FlexRay1B (VNET B) + net75 + FlexRay1B (VNET B) + 5000000 + 16 + 2 + False + False + + + FlexRay2A (VNET B) + net76 + FlexRay2A (VNET B) + 5000000 + 16 + 2 + False + False + + + FlexRay2B (VNET B) + net77 + FlexRay2B (VNET B) + 5000000 + 16 + 2 + False + False + + + SW CAN2 + net78 + SW CAN2 (neoVI 3G) + 33333 + 1 + 2 + False + False + + + SW CAN2 (VNET A) + net79 + SW CAN2 (VNET A) + 33333 + 1 + 2 + False + False + + + SW CAN2 (VNET B) + net80 + SW CAN2 (VNET B) + 33333 + 1 + 2 + False + False + + + FSA + net81 + (FSA Virtual) + 31 + 2 + False + False + + + TCP + net82 + (TCP Virtual) + 32 + 2 + False + False + + + HS CAN6 + net83 + HS CAN6 + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN7 + net84 + HS CAN7 + 500000 + 1 + 2000000 + 2 + False + False + + + LIN6 + net85 + LIN6 + 10417 + 12 + 2 + False + False + + + LSFT CAN2 + net86 + LSFT CAN2 + 125000 + 1 + 2 + False + False + + + OP (BR) ETH01 + net87 + OP (BR) ETH1 + 100 + 29 + 2 + False + False + + + OP (BR) ETH02 + net88 + OP (BR) ETH2 + 100 + 29 + 2 + False + False + + + OP (BR) ETH03 + net89 + OP (BR) ETH3 + 100 + 29 + 2 + False + False + + + OP (BR) ETH04 + net90 + OP (BR) ETH4 + 100 + 29 + 2 + False + False + + + OP (BR) ETH05 + net91 + OP (BR) ETH5 + 100 + 29 + 2 + False + False + + + OP (BR) ETH06 + net92 + OP (BR) ETH6 + 100 + 29 + 2 + False + False + + + OP (BR) ETH07 + net93 + OP (BR) ETH7 + 100 + 29 + 2 + False + False + + + OP (BR) ETH08 + net94 + OP (BR) ETH8 + 100 + 29 + 2 + False + False + + + OP (BR) ETH09 + net95 + OP (BR) ETH9 + 100 + 29 + 2 + False + False + + + OP (BR) ETH10 + net96 + OP (BR) ETH10 + 100 + 29 + 2 + False + False + + + OP (BR) ETH11 + net97 + OP (BR) ETH11 + 100 + 29 + 2 + False + False + + + OP (BR) ETH12 + net98 + OP (BR) ETH12 + 100 + 29 + 2 + False + False + + + FlexRay + net99 + FlexRay + 10000000 + 16 + 2 + False + False + + + FlexRay2 + net100 + FlexRay2 + 10000000 + 16 + 2 + False + False + + + LIN6 (VNET A) + net101 + LIN6 (VNET A) + 10417 + 12 + 2 + False + False + + + LIN6 (VNET B) + net102 + LIN6 (VNET B) + 10417 + 12 + 2 + False + False + + + HS CAN6 (VNET A) + net103 + HS CAN6 (VNET A) + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN6 (VNET B) + net104 + HS CAN6 (VNET B) + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN7 (VNET A) + net105 + HS CAN7 (VNET A) + 500000 + 1 + 2000000 + 2 + False + False + + + HS CAN7 (VNET B) + net106 + HS CAN7 (VNET B) + 500000 + 1 + 2000000 + 2 + False + False + + + LSFT CAN2 (VNET A) + net107 + LSFT CAN2 (VNET A) + 125000 + 1 + 2 + False + False + + + LSFT CAN2 (VNET B) + net108 + LSFT CAN2 (VNET B) + 125000 + 1 + 2 + False + False + + + Ethernet (VNET A) + net109 + Ethernet (VNET A) + 0 + 29 + 2 + False + False + + + Ethernet (VNET B) + net110 + Ethernet (VNET B) + 0 + 29 + 2 + False + False + + + UDP + net111 + (UDP Virtual) + 33 + 2 + False + False + + + AUTOSAR + net112 + (AUTOSAR Virtual) + 34 + 2 + False + False + + + I2C1 + net113 + I2C1 + 10417 + 21 + 2 + False + False + + + I2C2 + net114 + I2C2 + 10417 + 21 + 2 + False + False + + + I2C3 + net115 + I2C3 + 10417 + 21 + 2 + False + False + + + I2C4 + net116 + I2C4 + 10417 + 21 + 2 + False + False + + + Ethernet2 + net117 + Ethernet2 + 0 + 29 + 2 + False + False + + + + + PHY Read Reg (2 Bytes) (Alternate addr) (I2C2) + in0 + 040 + net114 + 1 + False + 3B002ADA-247C02FB + + + Register Value + sig0 + 1 + {Raw Value}|0,1,0,16 + 65535 + 0 + 16 + 4 + + + + + RX raw MACsec encrypted + in2 + 0x88E5 + 0,0,0,0,0,0,0 + 00:FC:70:00:00:01 + 00:FC:70:00:00:02 + net117 + 255 + + + Destination MAC Address + sig0 + 1 + {Raw Value}|0,1,0,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:02 + 1084210806786 + True + 48 + 3 + + + Source MAC Address + sig1 + 1 + {Raw Value}|0,1,48,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:01 + 1084210806785 + True + 48 + 48 + 3 + + + EtherType or Length + sig2 + 3 + PTP@35063|IPv4@2048|ARP@2054|IEEE1722@8944|RARP@32821|802.1Q Virtual LAN@33024|802.1CB R-Tag@61889|IPv6@34525|802.1ad Provider Bridge (Q-in-Q)@34984|Raw Ethernet@0|MVRP@35061|MSRP@8938~0,1,96,16 + + 11 + + PTP + 35063 + + + IPv4 + 2048 + + + ARP + 2054 + + + IEEE1722 + 8944 + + + RARP + 32821 + + + 802.1Q Virtual LAN + 33024 + + + 802.1CB R-Tag + 61889 + + + IPv6 + 34525 + + + 802.1ad Provider Bridge (Q-in-Q) + 34984 + + + MVRP + 35061 + + + MSRP + 8938 + + + 61889 + 0 + 35045 + 35045 + True + 96 + 16 + 3 + + + + + SFP02_in_from MACsec + in3 + IPv4 + 0,0,0,0,0,0,0 + UDP + 10.0.0.1 + 60001 + 10.0.0.2 + 60002 + net117 + 8388736 + False + + + Destination MAC Address + sig0 + 1 + {Raw Value}|0,1,0,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:02 + 1084210806786 + True + 48 + 3 + + + Source MAC Address + sig1 + 1 + {Raw Value}|0,1,48,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:01 + 1084210806785 + True + 48 + 48 + 3 + + + EtherType or Length + sig2 + 3 + PTP@35063|IPv4@2048|ARP@2054|IEEE1722@8944|RARP@32821|802.1Q Virtual LAN@33024|802.1CB R-Tag@61889|IPv6@34525|802.1ad Provider Bridge (Q-in-Q)@34984|Raw Ethernet@0|MVRP@35061|MSRP@8938~0,1,96,16 + + 11 + + PTP + 35063 + + + IPv4 + 2048 + + + ARP + 2054 + + + IEEE1722 + 8944 + + + RARP + 32821 + + + 802.1Q Virtual LAN + 33024 + + + 802.1CB R-Tag + 61889 + + + IPv6 + 34525 + + + 802.1ad Provider Bridge (Q-in-Q) + 34984 + + + MVRP + 35061 + + + MSRP + 8938 + + + 61889 + 0 + IPv4 + 2048 + True + 96 + 16 + 3 + + + IP Version + sig3 + 1 + {Raw Value}|0,1,112,4 + 255 + 0 + 4 + 4 + True + 112 + 4 + 2 + + + Internet Header Length + sig4 + 1 + {Raw Value}|0,1,116,4 + 15 + 0 + 5 + 5 + True + 116 + 4 + 2 + + + Differentiated Services Code Point + sig5 + 1 + {Raw Value}|0,1,120,6 + 63 + 0 + 0 + 0 + True + 120 + 6 + 2 + + + Explicit Congestion Notification + sig6 + 1 + {Raw Value}|0,1,126,2 + 3 + 0 + 0 + 0 + True + 126 + 2 + 2 + + + Total Length + sig7 + 1 + {Raw Value}|0,1,128,16 + 65535 + 0 + 20 + 29 + True + 128 + 16 + 2 + + + Identification + sig8 + 1 + {Raw Value}|0,1,144,16 + 65535 + 0 + 0 + 0 + True + 144 + 16 + 2 + + + Flag_Reserved + sig9 + 2 + bit7({B21}) + True/False + False + 0 + True + 160 + 1 + 2 + + + Flag_DF + sig10 + 2 + bit6({B21}) + True/False + False + 0 + True + 161 + 1 + 2 + + + Flag_MF + sig11 + 2 + bit5({B21}) + True/False + False + 0 + True + 162 + 1 + 2 + + + Fragment Offset + sig12 + 1 + {Raw Value}|0,1,163,13 + 8191 + 0 + 0 + 0 + True + 163 + 13 + 2 + + + Time To Live + sig13 + 1 + {Raw Value}|0,1,176,8 + 255 + 0 + 128 + 128 + True + 176 + 8 + 2 + + + Protocol + sig14 + 3 + ICMPv4@1|IGMP@2|GGP@3|IP-in-IP@4|ST@5|TCP@6|CBT@7|EGP@8|IGP@9|BBN-RCC-MON@10|NVP-II@11|PUP@12|ARGUS@13|EMCON@14|XNET@15|CHAOS@16|UDP@17|IPv6@41|IPv6-ICMP@58|Reserved@255~0,1,184,8 + + 20 + + ICMPv4 + 1 + + + IGMP + 2 + + + GGP + 3 + + + IP-in-IP + 4 + + + ST + 5 + + + TCP + 6 + + + CBT + 7 + + + EGP + 8 + + + IGP + 9 + + + BBN-RCC-MON + 10 + + + NVP-II + 11 + + + PUP + 12 + + + ARGUS + 13 + + + EMCON + 14 + + + XNET + 15 + + + CHAOS + 16 + + + UDP + 17 + + + IPv6 + 41 + + + IPv6-ICMP + 58 + + + Reserved + 255 + + + 255 + 0 + UDP + 17 + True + 184 + 8 + 2 + + + IPv4 Header Checksum + sig15 + 1 + {Raw Value}|0,1,192,16 + 65535 + 0 + 0 + 9934 + True + 192 + 16 + 2 + + + Source IP Address + sig16 + 1 + {Raw Value}|0,1,208,32 + IPv4 Address + 255 + 0 + 10.0.0.1 + 167772161 + True + 208 + 32 + 2 + + + Destination IP Address + sig17 + 1 + {Raw Value}|0,1,240,32 + IPv4 Address + 255 + 0 + 10.0.0.2 + 167772162 + True + 240 + 32 + 2 + + + Source Port + sig18 + 1 + {Raw Value}|0,1,272,16 + 65535 + 0 + 60001 + 60001 + True + 272 + 16 + 1 + + + Destination Port + sig19 + 1 + {Raw Value}|0,1,288,16 + 65535 + 0 + 60002 + 60002 + True + 288 + 16 + 1 + + + UDP Header + Data Length + sig20 + 1 + {Raw Value}|0,1,304,16 + 65535 + 0 + 8 + 9 + True + 304 + 16 + 1 + + + UDP Checksum + sig21 + 1 + {Raw Value}|0,1,320,16 + 65535 + 0 + 0 + 65535 + True + 320 + 16 + 1 + + + Signal 22 + sig22 + 1 + {Raw Value}|0,1,336,8 + 255 + 0 + 336 + 8 + + + + + MACsec + in7 + 0x88E5 + 0,0,0,0,0,0,0 + 00:FC:70:00:00:01 + 00:FC:70:00:00:02 + net72 + 255 + + + Destination MAC Address + sig0 + 1 + {Raw Value}|0,1,0,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:02 + 1084210806786 + True + 48 + 3 + + + Source MAC Address + sig1 + 1 + {Raw Value}|0,1,48,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:01 + 1084210806785 + True + 48 + 48 + 3 + + + EtherType or Length + sig2 + 3 + PTP@35063|IPv4@2048|ARP@2054|IEEE1722@8944|RARP@32821|802.1Q Virtual LAN@33024|802.1CB R-Tag@61889|IPv6@34525|802.1ad Provider Bridge (Q-in-Q)@34984|Raw Ethernet@0|MVRP@35061|MSRP@8938~0,1,96,16 + + 11 + + PTP + 35063 + + + IPv4 + 2048 + + + ARP + 2054 + + + IEEE1722 + 8944 + + + RARP + 32821 + + + 802.1Q Virtual LAN + 33024 + + + 802.1CB R-Tag + 61889 + + + IPv6 + 34525 + + + 802.1ad Provider Bridge (Q-in-Q) + 34984 + + + MVRP + 35061 + + + MSRP + 8938 + + + 61889 + 0 + 35045 + 35045 + True + 96 + 16 + 3 + + + + + SFP01_in (decoded by MACSec) + in8 + IPv4 + 0,0,0,0,0,0,0 + UDP + 10.0.2.1 + 60001 + 10.0.2.2 + 60002 + net72 + 16711680 + False + + + Destination MAC Address + sig0 + 1 + {Raw Value}|0,1,0,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:02 + 1084210806786 + True + 48 + 3 + + + Source MAC Address + sig1 + 1 + {Raw Value}|0,1,48,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:01 + 1084210806785 + True + 48 + 48 + 3 + + + EtherType or Length + sig2 + 3 + PTP@35063|IPv4@2048|ARP@2054|IEEE1722@8944|RARP@32821|802.1Q Virtual LAN@33024|802.1CB R-Tag@61889|IPv6@34525|802.1ad Provider Bridge (Q-in-Q)@34984|Raw Ethernet@0|MVRP@35061|MSRP@8938~0,1,96,16 + + 11 + + PTP + 35063 + + + IPv4 + 2048 + + + ARP + 2054 + + + IEEE1722 + 8944 + + + RARP + 32821 + + + 802.1Q Virtual LAN + 33024 + + + 802.1CB R-Tag + 61889 + + + IPv6 + 34525 + + + 802.1ad Provider Bridge (Q-in-Q) + 34984 + + + MVRP + 35061 + + + MSRP + 8938 + + + 61889 + 0 + IPv4 + 2048 + True + 96 + 16 + 3 + + + IP Version + sig3 + 1 + {Raw Value}|0,1,112,4 + 255 + 0 + 4 + 4 + True + 112 + 4 + 2 + + + Internet Header Length + sig4 + 1 + {Raw Value}|0,1,116,4 + 15 + 0 + 5 + 5 + True + 116 + 4 + 2 + + + Differentiated Services Code Point + sig5 + 1 + {Raw Value}|0,1,120,6 + 63 + 0 + 0 + 0 + True + 120 + 6 + 2 + + + Explicit Congestion Notification + sig6 + 1 + {Raw Value}|0,1,126,2 + 3 + 0 + 0 + 0 + True + 126 + 2 + 2 + + + Total Length + sig7 + 1 + {Raw Value}|0,1,128,16 + 65535 + 0 + 20 + 29 + True + 128 + 16 + 2 + + + Identification + sig8 + 1 + {Raw Value}|0,1,144,16 + 65535 + 0 + 0 + 0 + True + 144 + 16 + 2 + + + Flag_Reserved + sig9 + 2 + bit7({B21}) + True/False + False + 0 + True + 160 + 1 + 2 + + + Flag_DF + sig10 + 2 + bit6({B21}) + True/False + False + 0 + True + 161 + 1 + 2 + + + Flag_MF + sig11 + 2 + bit5({B21}) + True/False + False + 0 + True + 162 + 1 + 2 + + + Fragment Offset + sig12 + 1 + {Raw Value}|0,1,163,13 + 8191 + 0 + 0 + 0 + True + 163 + 13 + 2 + + + Time To Live + sig13 + 1 + {Raw Value}|0,1,176,8 + 255 + 0 + 128 + 128 + True + 176 + 8 + 2 + + + Protocol + sig14 + 3 + ICMPv4@1|IGMP@2|GGP@3|IP-in-IP@4|ST@5|TCP@6|CBT@7|EGP@8|IGP@9|BBN-RCC-MON@10|NVP-II@11|PUP@12|ARGUS@13|EMCON@14|XNET@15|CHAOS@16|UDP@17|IPv6@41|IPv6-ICMP@58|Reserved@255~0,1,184,8 + + 20 + + ICMPv4 + 1 + + + IGMP + 2 + + + GGP + 3 + + + IP-in-IP + 4 + + + ST + 5 + + + TCP + 6 + + + CBT + 7 + + + EGP + 8 + + + IGP + 9 + + + BBN-RCC-MON + 10 + + + NVP-II + 11 + + + PUP + 12 + + + ARGUS + 13 + + + EMCON + 14 + + + XNET + 15 + + + CHAOS + 16 + + + UDP + 17 + + + IPv6 + 41 + + + IPv6-ICMP + 58 + + + Reserved + 255 + + + 255 + 0 + UDP + 17 + True + 184 + 8 + 2 + + + IPv4 Header Checksum + sig15 + 1 + {Raw Value}|0,1,192,16 + 65535 + 0 + 0 + 8910 + True + 192 + 16 + 2 + + + Source IP Address + sig16 + 1 + {Raw Value}|0,1,208,32 + IPv4 Address + 255 + 0 + 10.0.2.1 + 167772673 + True + 208 + 32 + 2 + + + Destination IP Address + sig17 + 1 + {Raw Value}|0,1,240,32 + IPv4 Address + 255 + 0 + 10.0.2.2 + 167772674 + True + 240 + 32 + 2 + + + Source Port + sig18 + 1 + {Raw Value}|0,1,272,16 + 65535 + 0 + 60001 + 60001 + True + 272 + 16 + 1 + + + Destination Port + sig19 + 1 + {Raw Value}|0,1,288,16 + 65535 + 0 + 60002 + 60002 + True + 288 + 16 + 1 + + + UDP Header + Data Length + sig20 + 1 + {Raw Value}|0,1,304,16 + 65535 + 0 + 8 + 9 + True + 304 + 16 + 1 + + + UDP Checksum + sig21 + 1 + {Raw Value}|0,1,320,16 + 65535 + 0 + 0 + 65535 + True + 320 + 16 + 1 + + + Signal 22 + sig22 + 1 + {Raw Value}|0,1,336,8 + 255 + 0 + 336 + 8 + + + + + RX messages + in5 + 0 + 0,0,0,0,0,0,0 + XX:XX:XX:XX:XX:XX + XX:XX:XX:XX:XX:XX + net117 + + + Destination MAC Address + sig0 + 1 + {Raw Value}|0,1,0,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:02 + 1084210806786 + True + 48 + 3 + + + Source MAC Address + sig1 + 1 + {Raw Value}|0,1,48,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:01 + 1084210806785 + True + 48 + 48 + 3 + + + EtherType or Length + sig2 + 3 + PTP@35063|IPv4@2048|ARP@2054|IEEE1722@8944|RARP@32821|802.1Q Virtual LAN@33024|802.1CB R-Tag@61889|IPv6@34525|802.1ad Provider Bridge (Q-in-Q)@34984|Raw Ethernet@0|MVRP@35061|MSRP@8938~0,1,96,16 + + 11 + + PTP + 35063 + + + IPv4 + 2048 + + + ARP + 2054 + + + IEEE1722 + 8944 + + + RARP + 32821 + + + 802.1Q Virtual LAN + 33024 + + + 802.1CB R-Tag + 61889 + + + IPv6 + 34525 + + + 802.1ad Provider Bridge (Q-in-Q) + 34984 + + + MVRP + 35061 + + + MSRP + 8938 + + + 61889 + 0 + 0 + 2048 + True + 96 + 16 + 3 + + + + + + + out16 + + + PHY Request ID1 Reg (Standard addr) (I2C3) + out16 + 056 + L,21,00,02 + net115 + 0 + 3 + 1 + False + + + + + out7 + + + PHY Request ID2 Reg (Standard addr) (I2C3) + out7 + 056 + L,21,00,03 + net115 + 0 + 3 + 1 + False + + + + + out18 + + + PHY Read Reg (Standard addr) (I2C3) + out18 + 056 + 00 + net115 + 2 + 0 + 1 + False + + + + + out26 + + + Read SFP MSA (I2C3) + out26 + 050 + 00 + net115 + 128 + 1 + 1 + False + + + + + out19 + + + Set SFP Module ICS Sleep (I2C3) + out19 + 01C + 00 + net115 + 0 + 1 + 1 + False + + + + + out21 + + + Set SFP Module ICS Phy Update - 1000M/Slave/IEEE/AutoNeg Disabled/Enable (I2C3) + out21 + 01C + 02 + L,02,02,00,00,01 + net115 + 5 + 1 + 1 + False + + + + + out25 + + + Set SFP Module ICS Phy Update - 100M/Slave/IEEE/AutoNeg Disabled/Enable (I2C3) + out25 + 01C + 02 + L,01,02,00,00,01 + net115 + 5 + 1 + 1 + False + + + + + out28 + + + Set SFP Module ICS Phy Update - 1000M/Master/IEEE/AutoNeg Disabled/Enable (I2C3) + out28 + 01C + 02 + L,02,01,00,00,01 + net115 + 5 + 1 + 1 + False + + + + + out30 + + + Set SFP Module ICS Phy Update - 1000M/Slave/IEEE/AutoNeg Disabled/Disable (I2C3) + out30 + 01C + 02 + L,02,02,00,00,00 + net115 + 5 + 1 + 1 + False + + + + + out32 + + + Set SFP Module ICS Phy Update - 1000M/Slave/Legacy/AutoNeg Disabled/Enable (I2C3) + out32 + 01C + 02 + L,02,02,01,00,01 + net115 + 5 + 1 + 1 + False + + + + + out34 + + + Set SFP Module ICS Phy Update - 1000M/Slave/IEEE/AutoNeg Enabled/Enable (I2C3) + out34 + 01C + 02 + L,02,02,00,01,01 + net115 + 5 + 1 + 1 + False + + + + + out36 + + + Set SFP Module ICS Bootloader (I2C3) + out36 + 01C + 01 + net115 + 0 + 1 + 1 + False + + + + + out40 + + + Read SFP MSA (I2C2) + out40 + 050 + 00 + net114 + 128 + 1 + 1 + False + + + + + out48 + + + PHY Request ID1 Reg (Alternate addr) (I2C2) + out48 + 040 + L,21,00,02 + net114 + 0 + 3 + 1 + False + + + + + out51 + + + PHY Request ID2 Reg (Alternate addr) (I2C2) + out51 + 040 + L,21,00,03 + net114 + 0 + 3 + 1 + False + + + + + out23 + + + Set SFP Module ICS Phy Update - 1000M/Auto/IEEE/AutoNeg Disabled/Enable (I2C3) + out23 + 01C + 02 + L,02,00,00,00,01 + net114 + 5 + 1 + 1 + False + + + + + out29 + + + Get SFP Module ICS Phy Temperature (I2C3) + out29 + 01C + 07 + net115 + 1 + 1 + 1 + 1 + False + + + + + out31 + + + Tx Message Ethernet2 + out31 + 0x0000 + 0,0,0,0,0,0,0 + 00:FC:70:00:00:01 + 00:FC:70:00:00:02 + net117 + 100 + False + + + Destination MAC Address + sig0 + 1 + {Raw Value}|0,1,0,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:02 + 1084210806786 + True + 48 + 3 + + + Source MAC Address + sig1 + 1 + {Raw Value}|0,1,48,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:01 + 1084210806785 + True + 48 + 48 + 3 + + + EtherType or Length + sig2 + 3 + PTP@35063|IPv4@2048|ARP@2054|IEEE1722@8944|RARP@32821|802.1Q Virtual LAN@33024|IPv6@34525|802.1ad Provider Bridge (Q-in-Q)@34984|Raw Ethernet@0|MVRP@35061|MSRP@8938~0,1,96,16 + + 10 + + PTP + 35063 + + + IPv4 + 2048 + + + ARP + 2054 + + + IEEE1722 + 8944 + + + RARP + 32821 + + + 802.1Q Virtual LAN + 33024 + + + IPv6 + 34525 + + + 802.1ad Provider Bridge (Q-in-Q) + 34984 + + + MVRP + 35061 + + + MSRP + 8938 + + + 35063 + 0 + 0 + 0 + True + 96 + 16 + 3 + + + + + + + out33 + + + Set SFP Module ICS Phy Update - 100M/Slave/IEEE/AutoNeg Enabled/Enable (I2C3) + out33 + 01C + 02 + L,01,02,00,01,01 + net114 + 5 + 1 + 1 + False + + + + + out37 + + + Set SFP Module ICS Phy Update - 100M/Master/IEEE/AutoNeg Enabled/Enable (I2C3) + out37 + 01C + 02 + L,01,01,00,01,01 + net115 + 5 + 1 + 1 + False + + + + + out39 + + + Set SFP Module ICS Phy Update - 100M/Master/Legacy/AutoNeg Enabled/Enable (I2C3) + out39 + 01C + 02 + L,01,01,01,01,01 + net115 + 5 + 1 + 1 + False + + + + + out41 + + + Set SFP Module ICS Phy Update - 100M/Auto/IEEE/AutoNeg Enabled/Enable (I2C3) + out41 + 01C + 02 + L,01,03,00,01,01 + net114 + 5 + 1 + 1 + False + + + + + out38 + + + PHY Request ID1 Reg (Alternate addr) (I2C3) + out38 + 040 + L,21,00,02 + net115 + 0 + 3 + 1 + False + + + + + out42 + + + PHY Request ID2 Reg (Alternate addr) (I2C3) + out42 + 040 + L,21,00,03 + net115 + 0 + 3 + 1 + False + + + + + out46 + + + PHY Read Reg (Alternate addr) (I2C3) + out46 + 040 + 00 + net115 + 2 + 0 + 1 + False + + + + + out47 + + + Set SFP Module ICS TC10 Wakeup (I2C2) + out47 + 01C + 03 + net114 + 0 + 1 + 1 + False + + + + + out49 + + + PHY 88Q2221M - Initiate TC10 Sleep (100M) (Alternate addr) (I2C2) + out49 + 040 + L,03,87,02 + L,00,01 + net114 + 2 + 3 + 1 + False + + + + + out54 + + + PHY 88Q2221M - Initiate TC10 Sleep (1000M) (Alternate addr) (I2C2) + out54 + 040 + L,03,80,22 + L,00,01 + net114 + 2 + 3 + 1 + False + + + + + out56 + + + PHY 88Q2221M - Initiate TC10 Wakeup (100M) (Alternate addr) (I2C2) + out56 + 040 + L,03,87,02 + L,00,10 + net114 + 2 + 3 + 1 + False + + + + + out58 + + + PHY 88Q2221M - Initiate TC10 Wakeup (1000M) (Alternate addr) (I2C2) + out58 + 040 + L,03,80,22 + L,00,10 + net114 + 2 + 3 + 1 + False + + + + + out53 + + + PHY Read Reg (2 Bytes) (Alternate addr) (I2C2) ** + out53 + 040 + 00 + net114 + 2 + 0 + 1 + False + + + + + out50 + + + Set SFP Module ICS TC10 Wakeup (I2C3) + out50 + 01C + 03 + net115 + 0 + 1 + 1 + False + + + + + out62 + + + PHY 88Q2221M - Initiate TC10 Sleep (100M) (Alternate addr) (I2C3) + out62 + 040 + L,03,87,02 + L,00,01 + net115 + 2 + 3 + 1 + False + + + + + out64 + + + PHY 88Q2221M - Initiate TC10 Sleep (1000M) (Alternate addr) (I2C3) + out64 + 040 + L,03,80,22 + L,00,01 + net115 + 2 + 3 + 1 + False + + + + + out66 + + + PHY 88Q2221M - Initiate TC10 Wakeup (100M) (Alternate addr) (I2C3) + out66 + 040 + L,03,87,02 + L,00,10 + net115 + 2 + 3 + 1 + False + + + + + out68 + + + PHY 88Q2221M - Initiate TC10 Wakeup (1000M) (Alternate addr) (I2C3) + out68 + 040 + L,03,80,22 + L,00,10 + net115 + 2 + 3 + 1 + False + + + + + out44 + + + PHY 88Q2221M - Initiate TC10 Wakeup (1000M) (Alternate addr) (I2C3) + out44 + 040 + L,03,80,22 + L,00,10 + net115 + 2 + 3 + 1 + False + + + + + out45 + + + Write Address (GP) + out45 + 040 + L,23,FD,9D + L,00,00 + net114 + 2 + 3 + False + + + + + out43 + + + I2C2 - 1.0834 + out43 + 040 + L,01,08,34 + net114 + 2 + 3 + 1 + False + + + Speed if forced + sig0 + 1 + {Raw Value}|0,1,15,1 + 1 + 0 + 1 + True + 15 + 1 + 4 + + + + + + + out52 + + + I2C2 - 1.0000 (I2C2) + out52 + 040 + L,01,00,00 + net114 + 2 + 3 + 1 + 1 + False + + + Signal 0 + sig0 + 1 + {Raw Value}|0,1,0,8 + 255 + 0 + 1 + True + 8 + 4 + + + Signal 1 + sig1 + 1 + {Raw Value}|0,1,8,8 + 255 + 0 + 0 + True + 8 + 8 + 4 + + + Signal 2 + sig2 + 1 + {Raw Value}|0,1,16,8 + 255 + 0 + 0 + True + 16 + 8 + 4 + + + Signal 3 + sig3 + 1 + {Raw Value}|0,1,24,8 + 255 + 0 + 0 + True + 24 + 8 + 4 + + + + + + + out55 + + + Store Register Address 0x834 to be read + out55 + 040 + L,21,08,34 + net116 + 3 + 1 + False + + + + + out59 + + + Set SFP Module ICS Sleep + out59 + 01C + 00 + net113 + 0 + 1 + 1 + False + + + + + out77 + + + Set SFP Module ICS Bootloader + out77 + 01C + 01 + net113 + 0 + 1 + 1 + False + + + + + out61 + + + Set SFP Module ICS Phy Update - 1000M/Slave/IEEE/AutoNeg Disabled/Enable + out61 + 01C + 02 + L,02,02,00,00,01 + net113 + 5 + 1 + 1 + False + + + + + out81 + + + Get SFP Module ICS Phy Temperature + out81 + 01C + 07 + net113 + 1 + 1 + 1 + 1 + False + + + + + out60 + + + I2C2 - 3.0901 + out60 + 040 + L,01,09,01 + net114 + 2 + 3 + 1 + False + + + + + out67 + + + I2C2 - 7.8001 (M/S Auto Neg Enabled) + out67 + 040 + L,07,80,01 + net114 + 2 + 3 + 1 + False + + + Remote Receiver OK + sig0 + 2 + bit5({B1}) + True/False + False + 1 + True + 2 + 1 + 4 + + + Local Receiver OK + sig1 + 2 + bit4({B1}) + True/False + False + 1 + True + 3 + 1 + 4 + + + Signal 2 + sig2 + 1 + {Raw Value}|0,1,0,8 + 255 + 0 + 113 + True + 8 + 4 + + + + + + + out70 + + + I2C2 - 3.FD9D + out70 + 040 + L,03,FD,9D + net114 + 2 + 3 + 1 + False + + + Secret Link Status Bit + sig0 + 2 + bit0({B2}) + True/False + True + 1 + True + 15 + 1 + 4 + + + Signal 1 + sig1 + 1 + {Raw Value}|0,1,0,32 + 4294967295 + 0 + 62717952 + True + 32 + 4 + + + + + + + out72 + + + I2C2 - PHY Read Reg (2 Bytes) (Alternate addr) ** + out72 + 040 + 00 + net114 + 2 + 0 + 1 + False + + + + + out57 + + + Read 1G SQI + out57 + 040 + L,23,FC,D8 + net115 + 2 + 3 + 1 + False + + + + + out63 + + + Read 1G SQI -2 + out63 + 040 + L,23,FC,4C + net115 + 2 + 3 + 1 + False + + + + + out69 + + + I2C2 - 3.FCD8 + out69 + 040 + L,03,FC,D8 + net114 + 2 + 3 + 1 + False + + + 1G SQI + sig0 + 1 + {Raw Value}|0,1,13,3 + 7 + 0 + 7 + True + 13 + 3 + 4 + + + + + + + out71 + + + I2C2 - 7.0x0200 + out71 + 040 + L,07,02,00 + net114 + 2 + 3 + 1 + False + + + SFP1 Autoneg Status + sig0 + 1 + {Raw Value}|0,1,3,1 + 1 + 0 + 1 + True + 3 + 1 + 4 + + + + + + + out74 + + + I2C2 - 7.801a + out74 + 040 + L,07,80,1A + net114 + 2 + 3 + 1 + False + + + Speed if Autoneg + sig0 + 1 + {Raw Value}|0,1,1,1 + 1 + 0 + 1 + True + 1 + 1 + 4 + + + + + + + out73 + + + I2C2 - 3.8230 + out73 + 040 + L,03,82,30 + net114 + 2 + 3 + 1 + False + + + 100M SQI + sig0 + 1 + {Raw Value}|0,1,0,3 + 7 + 0 + 0 + True + 3 + 4 + + + + + + + out75 + + + I2C2 - 3.8109 + out75 + 040 + L,03,81,09 + net114 + 2 + 3 + 1 + False + + + Link Up 8109 + sig0 + 1 + {Raw Value}|0,1,13,1 + 1 + 0 + 0 + True + 13 + 1 + 4 + + + + + + + out78 + + + I2C2 - 3.8108 + out78 + 040 + L,03,81,08 + net114 + 2 + 3 + 1 + False + + + Local Receiver OK + sig0 + 1 + {Raw Value}|0,1,2,1 + 1 + 0 + 0 + True + 2 + 1 + 4 + + + Remote Receiver OK + sig1 + 2 + bit4({B1}) + True/False + False + 0 + True + 3 + 1 + 4 + + + + + + + out80 + + + I2C2 - 3.8230 + out80 + 040 + L,03,82,30 + net114 + 2 + 3 + 1 + False + + + Signal 0 + sig0 + 1 + {Raw Value}|0,1,0,3 + 7 + 0 + 0 + True + 3 + 4 + + + + + + + out83 + + + I2C3 - 1.0834 + out83 + 040 + L,01,08,34 + net115 + 2 + 3 + 1 + False + + + Speed if forced + sig0 + 1 + {Raw Value}|0,1,15,1 + 1 + 0 + 0 + True + 15 + 1 + 4 + + + + + + + out85 + + + I2C3 - 1.0000 (I2C2) + out85 + 040 + L,01,00,00 + net115 + 2 + 3 + 1 + 1 + False + + + Signal 0 + sig0 + 1 + {Raw Value}|0,1,0,8 + 255 + 0 + 1 + True + 8 + 4 + + + Signal 1 + sig1 + 1 + {Raw Value}|0,1,8,8 + 255 + 0 + 0 + True + 8 + 8 + 4 + + + Signal 2 + sig2 + 1 + {Raw Value}|0,1,16,8 + 255 + 0 + 0 + True + 16 + 8 + 4 + + + Signal 3 + sig3 + 1 + {Raw Value}|0,1,24,8 + 255 + 0 + 0 + True + 24 + 8 + 4 + + + + + + + out87 + + + I2C3 - 3.0901 + out87 + 040 + L,01,09,01 + net115 + 2 + 3 + 1 + False + + + + + out89 + + + I2C3 - 7.8001 (M/S Auto Neg Enabled) + out89 + 040 + L,07,80,01 + net115 + 2 + 3 + 1 + False + + + SFP 2 Remote Receiver OK + sig0 + 2 + bit5({B1}) + True/False + False + 1 + True + 2 + 1 + 4 + + + SFP 2 Local Receiver OK + sig1 + 2 + bit4({B1}) + True/False + False + 1 + True + 3 + 1 + 4 + + + Signal 2 + sig2 + 1 + {Raw Value}|0,1,0,8 + 255 + 0 + 49 + True + 8 + 4 + + + + + + + out91 + + + I2C3 - 3.FD9D + out91 + 040 + L,03,FD,9D + net115 + 2 + 3 + 1 + False + + + SFP 2 Secret Link Status Bit + sig0 + 2 + bit0({B2}) + True/False + True + 1 + True + 15 + 1 + 4 + + + Signal 1 + sig1 + 1 + {Raw Value}|0,1,0,32 + 4294967295 + 0 + 66650112 + True + 32 + 4 + + + + + + + out93 + + + I2C3 - PHY Read Reg (2 Bytes) (Alternate addr) ** + out93 + 040 + 00 + net115 + 2 + 0 + 1 + False + + + + + out95 + + + I2C3 - 3.FCD8 + out95 + 040 + L,03,FC,D8 + net115 + 2 + 3 + 1 + False + + + SFP 2 1G SQI + sig0 + 1 + {Raw Value}|0,1,13,3 + 7 + 0 + 7 + True + 13 + 3 + 4 + + + + + + + out97 + + + I2C3 - 7.0x0200 + out97 + 040 + L,07,02,00 + net115 + 2 + 3 + 1 + False + + + SFP2 Autoneg Status + sig0 + 1 + {Raw Value}|0,1,3,1 + 1 + 0 + 1 + True + 3 + 1 + 4 + + + + + + + out99 + + + I2C3 - 7.801a + out99 + 040 + L,07,80,1A + net115 + 2 + 3 + 1 + False + + + SFP 2 Speed if Autoneg + sig0 + 1 + {Raw Value}|0,1,1,1 + 1 + 0 + 1 + True + 1 + 1 + 4 + + + + + + + out101 + + + I2C3 - 3.8230 + out101 + 040 + L,03,82,30 + net115 + 2 + 3 + 1 + False + + + SFP 2 100M SQI + sig0 + 1 + {Raw Value}|0,1,0,3 + 7 + 0 + 0 + True + 3 + 4 + + + + + + + out103 + + + I2C3 - 3.8109 + out103 + 040 + L,03,81,09 + net115 + 2 + 3 + 1 + False + + + SFP 2 Link Up 8109 + sig0 + 1 + {Raw Value}|0,1,13,1 + 1 + 0 + 0 + True + 13 + 1 + 4 + + + + + + + out105 + + + I2C3 - 3.8108 + out105 + 040 + L,03,81,08 + net115 + 2 + 3 + 1 + False + + + SFP 2 Local Receiver OK + sig0 + 1 + {Raw Value}|0,1,2,1 + 1 + 0 + 0 + True + 2 + 1 + 4 + + + SFP 2 Remote Receiver OK + sig1 + 2 + bit4({B1}) + True/False + False + 1 + True + 3 + 1 + 4 + + + + + + + out107 + + + I2C3 - 3.8230 + out107 + 040 + L,03,82,30 + net115 + 2 + 3 + 1 + False + + + SFP2 100M SQI + sig0 + 1 + {Raw Value}|0,1,0,3 + 7 + 0 + 0 + True + 3 + 4 + + + + + + + out76 + 2 + 100 + + + Tx Message Ethernet 72 + out76 + IPv4 + 0,0,0,0,0,0,0 + UDP + 10.0.0.1 + 60001 + 10.0.0.2 + 60002 + net72 + False + + + Destination MAC Address + sig0 + 1 + {Raw Value}|0,1,0,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:02 + 1084210806786 + True + 48 + 3 + + + Source MAC Address + sig1 + 1 + {Raw Value}|0,1,48,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:01 + 1084210806785 + True + 48 + 48 + 3 + + + EtherType or Length + sig2 + 3 + PTP@35063|IPv4@2048|ARP@2054|IEEE1722@8944|RARP@32821|802.1Q Virtual LAN@33024|802.1CB R-Tag@61889|IPv6@34525|802.1ad Provider Bridge (Q-in-Q)@34984|Raw Ethernet@0|MVRP@35061|MSRP@8938~0,1,96,16 + + 11 + + PTP + 35063 + + + IPv4 + 2048 + + + ARP + 2054 + + + IEEE1722 + 8944 + + + RARP + 32821 + + + 802.1Q Virtual LAN + 33024 + + + 802.1CB R-Tag + 61889 + + + IPv6 + 34525 + + + 802.1ad Provider Bridge (Q-in-Q) + 34984 + + + MVRP + 35061 + + + MSRP + 8938 + + + 61889 + 0 + IPv4 + 2048 + True + 96 + 16 + 3 + + + IP Version + sig3 + 1 + {Raw Value}|0,1,112,4 + 255 + 0 + 4 + 4 + True + 112 + 4 + 2 + + + Internet Header Length + sig4 + 1 + {Raw Value}|0,1,116,4 + 15 + 0 + 5 + 5 + True + 116 + 4 + 2 + + + Differentiated Services Code Point + sig5 + 1 + {Raw Value}|0,1,120,6 + 63 + 0 + 0 + 0 + True + 120 + 6 + 2 + + + Explicit Congestion Notification + sig6 + 1 + {Raw Value}|0,1,126,2 + 3 + 0 + 0 + 0 + True + 126 + 2 + 2 + + + Total Length + sig7 + 1 + {Raw Value}|0,1,128,16 + 65535 + 0 + 29 + 29 + True + 128 + 16 + 2 + + + Identification + sig8 + 1 + {Raw Value}|0,1,144,16 + 65535 + 0 + 0 + 0 + True + 144 + 16 + 2 + + + Flag_Reserved + sig9 + 2 + bit7({B21}) + True/False + False + 0 + True + 160 + 1 + 2 + + + Flag_DF + sig10 + 2 + bit6({B21}) + True/False + False + 0 + True + 161 + 1 + 2 + + + Flag_MF + sig11 + 2 + bit5({B21}) + True/False + False + 0 + True + 162 + 1 + 2 + + + Fragment Offset + sig12 + 1 + {Raw Value}|0,1,163,13 + 8191 + 0 + 0 + 0 + True + 163 + 13 + 2 + + + Time To Live + sig13 + 1 + {Raw Value}|0,1,176,8 + 255 + 0 + 128 + 128 + True + 176 + 8 + 2 + + + Protocol + sig14 + 3 + ICMPv4@1|IGMP@2|GGP@3|IP-in-IP@4|ST@5|TCP@6|CBT@7|EGP@8|IGP@9|BBN-RCC-MON@10|NVP-II@11|PUP@12|ARGUS@13|EMCON@14|XNET@15|CHAOS@16|UDP@17|IPv6@41|IPv6-ICMP@58|Reserved@255~0,1,184,8 + + 20 + + ICMPv4 + 1 + + + IGMP + 2 + + + GGP + 3 + + + IP-in-IP + 4 + + + ST + 5 + + + TCP + 6 + + + CBT + 7 + + + EGP + 8 + + + IGP + 9 + + + BBN-RCC-MON + 10 + + + NVP-II + 11 + + + PUP + 12 + + + ARGUS + 13 + + + EMCON + 14 + + + XNET + 15 + + + CHAOS + 16 + + + UDP + 17 + + + IPv6 + 41 + + + IPv6-ICMP + 58 + + + Reserved + 255 + + + 255 + 0 + UDP + 17 + True + 184 + 8 + 2 + + + IPv4 Header Checksum + sig15 + 1 + {Raw Value}|0,1,192,16 + 65535 + 0 + 0 + 0 + True + 192 + 16 + 2 + + + Source IP Address + sig16 + 1 + {Raw Value}|0,1,208,32 + IPv4 Address + 255 + 0 + 10.0.0.1 + 167772161 + True + 208 + 32 + 2 + + + Destination IP Address + sig17 + 1 + {Raw Value}|0,1,240,32 + IPv4 Address + 255 + 0 + 10.0.0.2 + 167772162 + True + 240 + 32 + 2 + + + Source Port + sig18 + 1 + {Raw Value}|0,1,272,16 + 65535 + 0 + 60001 + 60001 + True + 272 + 16 + 1 + + + Destination Port + sig19 + 1 + {Raw Value}|0,1,288,16 + 65535 + 0 + 60002 + 60002 + True + 288 + 16 + 1 + + + UDP Header + Data Length + sig20 + 1 + {Raw Value}|0,1,304,16 + 65535 + 0 + 9 + 9 + True + 304 + 16 + 1 + + + UDP Checksum + sig21 + 1 + {Raw Value}|0,1,320,16 + 65535 + 0 + 0 + 0 + True + 320 + 16 + 1 + + + Sine + sig22 + 2 + 1 + {Raw Value}|0,1,336,8 + 255 + 0 + 1 + 0 + 255 + 0.05 + 0 + 180.7695051120149 + True + 336 + 8 + + + + + + + out79 + 16711935 + 100 + + + SFP01_out (to MACsec) + out79 + IPv4 + 0,0,0,0,0,0,0 + UDP + 10.0.0.1 + 60001 + 10.0.0.2 + 60002 + net72 + 16711935 + False + + + Destination MAC Address + sig0 + 1 + {Raw Value}|0,1,0,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:02 + 1084210806786 + True + 48 + 3 + + + Source MAC Address + sig1 + 1 + {Raw Value}|0,1,48,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:01 + 1084210806785 + True + 48 + 48 + 3 + + + EtherType or Length + sig2 + 3 + PTP@35063|IPv4@2048|ARP@2054|IEEE1722@8944|RARP@32821|802.1Q Virtual LAN@33024|802.1CB R-Tag@61889|IPv6@34525|802.1ad Provider Bridge (Q-in-Q)@34984|Raw Ethernet@0|MVRP@35061|MSRP@8938~0,1,96,16 + + 11 + + PTP + 35063 + + + IPv4 + 2048 + + + ARP + 2054 + + + IEEE1722 + 8944 + + + RARP + 32821 + + + 802.1Q Virtual LAN + 33024 + + + 802.1CB R-Tag + 61889 + + + IPv6 + 34525 + + + 802.1ad Provider Bridge (Q-in-Q) + 34984 + + + MVRP + 35061 + + + MSRP + 8938 + + + 61889 + 0 + IPv4 + 2048 + True + 96 + 16 + 3 + + + IP Version + sig3 + 1 + {Raw Value}|0,1,112,4 + 255 + 0 + 4 + 4 + True + 112 + 4 + 2 + + + Internet Header Length + sig4 + 1 + {Raw Value}|0,1,116,4 + 15 + 0 + 5 + 5 + True + 116 + 4 + 2 + + + Differentiated Services Code Point + sig5 + 1 + {Raw Value}|0,1,120,6 + 63 + 0 + 0 + 0 + True + 120 + 6 + 2 + + + Explicit Congestion Notification + sig6 + 1 + {Raw Value}|0,1,126,2 + 3 + 0 + 0 + 0 + True + 126 + 2 + 2 + + + Total Length + sig7 + 1 + {Raw Value}|0,1,128,16 + 65535 + 0 + 29 + 29 + True + 128 + 16 + 2 + + + Identification + sig8 + 1 + {Raw Value}|0,1,144,16 + 65535 + 0 + 0 + 0 + True + 144 + 16 + 2 + + + Flag_Reserved + sig9 + 2 + bit7({B21}) + True/False + False + 0 + True + 160 + 1 + 2 + + + Flag_DF + sig10 + 2 + bit6({B21}) + True/False + False + 0 + True + 161 + 1 + 2 + + + Flag_MF + sig11 + 2 + bit5({B21}) + True/False + False + 0 + True + 162 + 1 + 2 + + + Fragment Offset + sig12 + 1 + {Raw Value}|0,1,163,13 + 8191 + 0 + 0 + 0 + True + 163 + 13 + 2 + + + Time To Live + sig13 + 1 + {Raw Value}|0,1,176,8 + 255 + 0 + 128 + 128 + True + 176 + 8 + 2 + + + Protocol + sig14 + 3 + ICMPv4@1|IGMP@2|GGP@3|IP-in-IP@4|ST@5|TCP@6|CBT@7|EGP@8|IGP@9|BBN-RCC-MON@10|NVP-II@11|PUP@12|ARGUS@13|EMCON@14|XNET@15|CHAOS@16|UDP@17|IPv6@41|IPv6-ICMP@58|Reserved@255~0,1,184,8 + + 20 + + ICMPv4 + 1 + + + IGMP + 2 + + + GGP + 3 + + + IP-in-IP + 4 + + + ST + 5 + + + TCP + 6 + + + CBT + 7 + + + EGP + 8 + + + IGP + 9 + + + BBN-RCC-MON + 10 + + + NVP-II + 11 + + + PUP + 12 + + + ARGUS + 13 + + + EMCON + 14 + + + XNET + 15 + + + CHAOS + 16 + + + UDP + 17 + + + IPv6 + 41 + + + IPv6-ICMP + 58 + + + Reserved + 255 + + + 255 + 0 + UDP + 17 + True + 184 + 8 + 2 + + + IPv4 Header Checksum + sig15 + 1 + {Raw Value}|0,1,192,16 + 65535 + 0 + 0 + 0 + True + 192 + 16 + 2 + + + Source IP Address + sig16 + 1 + {Raw Value}|0,1,208,32 + IPv4 Address + 255 + 0 + 10.0.0.1 + 167772161 + True + 208 + 32 + 2 + + + Destination IP Address + sig17 + 1 + {Raw Value}|0,1,240,32 + IPv4 Address + 255 + 0 + 10.0.0.2 + 167772162 + True + 240 + 32 + 2 + + + Source Port + sig18 + 1 + {Raw Value}|0,1,272,16 + 65535 + 0 + 60001 + 60001 + True + 272 + 16 + 1 + + + Destination Port + sig19 + 1 + {Raw Value}|0,1,288,16 + 65535 + 0 + 60002 + 60002 + True + 288 + 16 + 1 + + + UDP Header + Data Length + sig20 + 1 + {Raw Value}|0,1,304,16 + 65535 + 0 + 9 + 9 + True + 304 + 16 + 1 + + + UDP Checksum + sig21 + 1 + {Raw Value}|0,1,320,16 + 65535 + 0 + 0 + 0 + True + 320 + 16 + 1 + + + RAMP_0.5Hz + sig22 + 2 + 1 + {Raw Value}|0,1,336,8 + 255 + 0 + 2 + 0 + 255 + 0.05 + 0 + 128 + 168.3637500002078 + True + 336 + 8 + + + + + + + out82 + 8388608 + 100 + + + SFP02_out_undecoded + out82 + IPv4 + 0,0,0,0,0,0,0 + UDP + 10.0.2.1 + 60001 + 10.0.2.2 + 60002 + net117 + 8388608 + False + + + Destination MAC Address + sig0 + 1 + {Raw Value}|0,1,0,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:02 + 1084210806786 + True + 48 + 3 + + + Source MAC Address + sig1 + 1 + {Raw Value}|0,1,48,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:01 + 1084210806785 + True + 48 + 48 + 3 + + + EtherType or Length + sig2 + 3 + PTP@35063|IPv4@2048|ARP@2054|IEEE1722@8944|RARP@32821|802.1Q Virtual LAN@33024|802.1CB R-Tag@61889|IPv6@34525|802.1ad Provider Bridge (Q-in-Q)@34984|Raw Ethernet@0|MVRP@35061|MSRP@8938~0,1,96,16 + + 11 + + PTP + 35063 + + + IPv4 + 2048 + + + ARP + 2054 + + + IEEE1722 + 8944 + + + RARP + 32821 + + + 802.1Q Virtual LAN + 33024 + + + 802.1CB R-Tag + 61889 + + + IPv6 + 34525 + + + 802.1ad Provider Bridge (Q-in-Q) + 34984 + + + MVRP + 35061 + + + MSRP + 8938 + + + 61889 + 0 + IPv4 + 2048 + True + 96 + 16 + 3 + + + IP Version + sig3 + 1 + {Raw Value}|0,1,112,4 + 255 + 0 + 4 + 4 + True + 112 + 4 + 2 + + + Internet Header Length + sig4 + 1 + {Raw Value}|0,1,116,4 + 15 + 0 + 5 + 5 + True + 116 + 4 + 2 + + + Differentiated Services Code Point + sig5 + 1 + {Raw Value}|0,1,120,6 + 63 + 0 + 0 + 0 + True + 120 + 6 + 2 + + + Explicit Congestion Notification + sig6 + 1 + {Raw Value}|0,1,126,2 + 3 + 0 + 0 + 0 + True + 126 + 2 + 2 + + + Total Length + sig7 + 1 + {Raw Value}|0,1,128,16 + 65535 + 0 + 29 + 29 + True + 128 + 16 + 2 + + + Identification + sig8 + 1 + {Raw Value}|0,1,144,16 + 65535 + 0 + 0 + 0 + True + 144 + 16 + 2 + + + Flag_Reserved + sig9 + 2 + bit7({B21}) + True/False + False + 0 + True + 160 + 1 + 2 + + + Flag_DF + sig10 + 2 + bit6({B21}) + True/False + False + 0 + True + 161 + 1 + 2 + + + Flag_MF + sig11 + 2 + bit5({B21}) + True/False + False + 0 + True + 162 + 1 + 2 + + + Fragment Offset + sig12 + 1 + {Raw Value}|0,1,163,13 + 8191 + 0 + 0 + 0 + True + 163 + 13 + 2 + + + Time To Live + sig13 + 1 + {Raw Value}|0,1,176,8 + 255 + 0 + 128 + 128 + True + 176 + 8 + 2 + + + Protocol + sig14 + 3 + ICMPv4@1|IGMP@2|GGP@3|IP-in-IP@4|ST@5|TCP@6|CBT@7|EGP@8|IGP@9|BBN-RCC-MON@10|NVP-II@11|PUP@12|ARGUS@13|EMCON@14|XNET@15|CHAOS@16|UDP@17|IPv6@41|IPv6-ICMP@58|Reserved@255~0,1,184,8 + + 20 + + ICMPv4 + 1 + + + IGMP + 2 + + + GGP + 3 + + + IP-in-IP + 4 + + + ST + 5 + + + TCP + 6 + + + CBT + 7 + + + EGP + 8 + + + IGP + 9 + + + BBN-RCC-MON + 10 + + + NVP-II + 11 + + + PUP + 12 + + + ARGUS + 13 + + + EMCON + 14 + + + XNET + 15 + + + CHAOS + 16 + + + UDP + 17 + + + IPv6 + 41 + + + IPv6-ICMP + 58 + + + Reserved + 255 + + + 255 + 0 + UDP + 17 + True + 184 + 8 + 2 + + + IPv4 Header Checksum + sig15 + 1 + {Raw Value}|0,1,192,16 + 65535 + 0 + 0 + 0 + True + 192 + 16 + 2 + + + Source IP Address + sig16 + 1 + {Raw Value}|0,1,208,32 + IPv4 Address + 255 + 0 + 10.0.2.1 + 167772673 + True + 208 + 32 + 2 + + + Destination IP Address + sig17 + 1 + {Raw Value}|0,1,240,32 + IPv4 Address + 255 + 0 + 10.0.2.2 + 167772674 + True + 240 + 32 + 2 + + + Source Port + sig18 + 1 + {Raw Value}|0,1,272,16 + 65535 + 0 + 60001 + 60001 + True + 272 + 16 + 1 + + + Destination Port + sig19 + 1 + {Raw Value}|0,1,288,16 + 65535 + 0 + 60002 + 60002 + True + 288 + 16 + 1 + + + UDP Header + Data Length + sig20 + 1 + {Raw Value}|0,1,304,16 + 65535 + 0 + 9 + 9 + True + 304 + 16 + 1 + + + UDP Checksum + sig21 + 1 + {Raw Value}|0,1,320,16 + 65535 + 0 + 0 + 0 + True + 320 + 16 + 1 + + + SAW_0.1HZ + sig22 + 2 + 1 + {Raw Value}|0,1,336,8 + 255 + 0 + 3 + 0 + 255 + .01 + 0 + 10 + 118.3455000002686 + True + 336 + 8 + + + + + + + out90 + 16711680 + 7E0 + 00 + + + SFP01_in (decoded by MACSec) + out90 + IPV4 + 0,0,0,0,0,0,0 + UDP + 10.0.2.1 + 60001 + 10.0.2.2 + 60002 + net72 + 16711680 + False + + + Destination MAC Address + sig0 + 1 + {Raw Value}|0,1,0,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:02 + 1084210806786 + True + 48 + 3 + + + Source MAC Address + sig1 + 1 + {Raw Value}|0,1,48,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:01 + 1084210806785 + True + 48 + 48 + 3 + + + EtherType or Length + sig2 + 3 + PTP@35063|IPv4@2048|ARP@2054|IEEE1722@8944|RARP@32821|802.1Q Virtual LAN@33024|802.1CB R-Tag@61889|IPv6@34525|802.1ad Provider Bridge (Q-in-Q)@34984|Raw Ethernet@0|MVRP@35061|MSRP@8938~0,1,96,16 + + 11 + + PTP + 35063 + + + IPv4 + 2048 + + + ARP + 2054 + + + IEEE1722 + 8944 + + + RARP + 32821 + + + 802.1Q Virtual LAN + 33024 + + + 802.1CB R-Tag + 61889 + + + IPv6 + 34525 + + + 802.1ad Provider Bridge (Q-in-Q) + 34984 + + + MVRP + 35061 + + + MSRP + 8938 + + + 61889 + 0 + IPv4 + 2048 + True + 96 + 16 + 3 + + + IP Version + sig3 + 1 + {Raw Value}|0,1,112,4 + 255 + 0 + 4 + 4 + True + 112 + 4 + 2 + + + Internet Header Length + sig4 + 1 + {Raw Value}|0,1,116,4 + 15 + 0 + 5 + 5 + True + 116 + 4 + 2 + + + Differentiated Services Code Point + sig5 + 1 + {Raw Value}|0,1,120,6 + 63 + 0 + 0 + 0 + True + 120 + 6 + 2 + + + Explicit Congestion Notification + sig6 + 1 + {Raw Value}|0,1,126,2 + 3 + 0 + 0 + 0 + True + 126 + 2 + 2 + + + Total Length + sig7 + 1 + {Raw Value}|0,1,128,16 + 65535 + 0 + 20 + 29 + True + 128 + 16 + 2 + + + Identification + sig8 + 1 + {Raw Value}|0,1,144,16 + 65535 + 0 + 0 + 0 + True + 144 + 16 + 2 + + + Flag_Reserved + sig9 + 2 + bit7({B21}) + True/False + False + 0 + True + 160 + 1 + 2 + + + Flag_DF + sig10 + 2 + bit6({B21}) + True/False + False + 0 + True + 161 + 1 + 2 + + + Flag_MF + sig11 + 2 + bit5({B21}) + True/False + False + 0 + True + 162 + 1 + 2 + + + Fragment Offset + sig12 + 1 + {Raw Value}|0,1,163,13 + 8191 + 0 + 0 + 0 + True + 163 + 13 + 2 + + + Time To Live + sig13 + 1 + {Raw Value}|0,1,176,8 + 255 + 0 + 128 + 128 + True + 176 + 8 + 2 + + + Protocol + sig14 + 3 + ICMPv4@1|IGMP@2|GGP@3|IP-in-IP@4|ST@5|TCP@6|CBT@7|EGP@8|IGP@9|BBN-RCC-MON@10|NVP-II@11|PUP@12|ARGUS@13|EMCON@14|XNET@15|CHAOS@16|UDP@17|IPv6@41|IPv6-ICMP@58|Reserved@255~0,1,184,8 + + 20 + + ICMPv4 + 1 + + + IGMP + 2 + + + GGP + 3 + + + IP-in-IP + 4 + + + ST + 5 + + + TCP + 6 + + + CBT + 7 + + + EGP + 8 + + + IGP + 9 + + + BBN-RCC-MON + 10 + + + NVP-II + 11 + + + PUP + 12 + + + ARGUS + 13 + + + EMCON + 14 + + + XNET + 15 + + + CHAOS + 16 + + + UDP + 17 + + + IPv6 + 41 + + + IPv6-ICMP + 58 + + + Reserved + 255 + + + 255 + 0 + UDP + 17 + True + 184 + 8 + 2 + + + IPv4 Header Checksum + sig15 + 1 + {Raw Value}|0,1,192,16 + 65535 + 0 + 0 + 8910 + True + 192 + 16 + 2 + + + Source IP Address + sig16 + 1 + {Raw Value}|0,1,208,32 + IPv4 Address + 255 + 0 + 10.0.2.1 + 167772673 + True + 208 + 32 + 2 + + + Destination IP Address + sig17 + 1 + {Raw Value}|0,1,240,32 + IPv4 Address + 255 + 0 + 10.0.2.2 + 167772674 + True + 240 + 32 + 2 + + + Source Port + sig18 + 1 + {Raw Value}|0,1,272,16 + 65535 + 0 + 60001 + 60001 + True + 272 + 16 + 1 + + + Destination Port + sig19 + 1 + {Raw Value}|0,1,288,16 + 65535 + 0 + 60002 + 60002 + True + 288 + 16 + 1 + + + UDP Header + Data Length + sig20 + 1 + {Raw Value}|0,1,304,16 + 65535 + 0 + 8 + 9 + True + 304 + 16 + 1 + + + UDP Checksum + sig21 + 1 + {Raw Value}|0,1,320,16 + 65535 + 0 + 0 + 65535 + True + 320 + 16 + 1 + + + Signal 22 + sig22 + 1 + {Raw Value}|0,1,336,8 + 255 + 0 + 0 + True + 336 + 8 + + + + + + + out92 + 255 + 7E0 + 00 + + + MACsec + out92 + 0X88E5 + 0,0,0,0,0,0,0 + 00:FC:70:00:00:01 + 00:FC:70:00:00:02 + net72 + 255 + False + + + Destination MAC Address + sig0 + 1 + {Raw Value}|0,1,0,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:02 + 1084210806786 + True + 48 + 3 + + + Source MAC Address + sig1 + 1 + {Raw Value}|0,1,48,48 + MAC Address + 1099511627775 + 0 + 00:FC:70:00:00:01 + 1084210806785 + True + 48 + 48 + 3 + + + EtherType or Length + sig2 + 3 + PTP@35063|IPv4@2048|ARP@2054|IEEE1722@8944|RARP@32821|802.1Q Virtual LAN@33024|802.1CB R-Tag@61889|IPv6@34525|802.1ad Provider Bridge (Q-in-Q)@34984|Raw Ethernet@0|MVRP@35061|MSRP@8938~0,1,96,16 + + 11 + + PTP + 35063 + + + IPv4 + 2048 + + + ARP + 2054 + + + IEEE1722 + 8944 + + + RARP + 32821 + + + 802.1Q Virtual LAN + 33024 + + + 802.1CB R-Tag + 61889 + + + IPv6 + 34525 + + + 802.1ad Provider Bridge (Q-in-Q) + 34984 + + + MVRP + 35061 + + + MSRP + 8938 + + + 61889 + 0 + 35045 + 35045 + True + 96 + 16 + 3 + + + + + + + + + Read SFP MSA (I2C2) + tst27 + 8 + Capture File Function Block 1 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + {\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}} +\viewkind4\uc1\pard\lang1033\f0\fs16\par +} + + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp1 + 1 + 12 + out40 + Read SFP MSA (I2C2) + + + stp3 + 8 + 100 + -1 + txt + + 100 + + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + Read SFP MSA (I2C3) + tst9 + 8 + Capture File Function Block 1 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + {\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}} +\viewkind4\uc1\pard\lang1033\f0\fs16\par +} + + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp1 + 1 + 3 + out26 + Read SFP MSA (I2C3) + + + stp3 + 8 + 100 + -1 + txt + + 100 + + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + PHY Read ID 1 Reg (Alternate addr) (I2C3) + tst25 + 8 + Capture File Function Block 1 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + {\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}} +\viewkind4\uc1\pard\lang1033\f0\fs16\par +} + + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp1 + 1 + 22 + out38 + PHY Request ID1 Reg (Alternate addr) (I2C3) + + + stp10 + 2 + -1 + txt + + 1 + + + + stp2 + 1 + 24 + out46 + PHY Read Reg (Alternate addr) (I2C3) + + + stp3 + 8 + 100 + -1 + txt + + 100 + + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + PHY Read ID 2 Reg (Alternate addr) (I2C3) + tst26 + 8 + Capture File Function Block 1 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + {\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}} +\viewkind4\uc1\pard\lang1033\f0\fs16\par +} + + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp1 + 1 + 23 + out42 + PHY Request ID2 Reg (Alternate addr) (I2C3) + + + stp10 + 2 + -1 + txt + + 1 + + + + stp2 + 1 + 24 + out46 + PHY Read Reg (Alternate addr) (I2C3) + + + stp3 + 8 + 100 + -1 + txt + + 100 + + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + PHY Read ID 1 Reg (Standard addr) (I2C3) + tst0 + 8 + Capture File Function Block 1 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + {\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}} +\viewkind4\uc1\pard\lang1033\f0\fs16\par +} + + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp1 + 1 + 0 + out16 + PHY Request ID1 Reg (Standard addr) (I2C3) + + + stp10 + 2 + -1 + txt + + 1 + + + + stp2 + 1 + 2 + out18 + PHY Read Reg (Standard addr) (I2C3) + + + stp3 + 8 + 100 + -1 + txt + + 100 + + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + PHY Read ID 2 Reg (Standard addr) (I2C3) + tst2 + 8 + Capture File Function Block 1 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + {\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}} +\viewkind4\uc1\pard\lang1033\f0\fs16\par +} + + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp1 + 1 + out7 + PHY Request ID2 Reg (Standard addr) (I2C3) + + + stp10 + 2 + -1 + txt + + 1 + + + + stp2 + 1 + 2 + out18 + PHY Read Reg (Standard addr) (I2C3) + + + stp3 + 8 + 100 + -1 + txt + + 100 + + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + PHY Read ID 1 Reg (Alternate addr) (I2C2) + tst28 + 8 + Capture File Function Block 1 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + {\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}} +\viewkind4\uc1\pard\lang1033\f0\fs16\par +} + + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp1 + 1 + 13 + out48 + PHY Request ID1 Reg (Alternate addr) (I2C2) + + + stp10 + 2 + -1 + txt + + 1 + + + + stp2 + 1 + 30 + out53 + PHY Read Reg (2 Bytes) (Alternate addr) (I2C2) ** + + + stp3 + 8 + 100 + -1 + txt + + 100 + + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + PHY Read ID 2 Reg (Alternate addr) (I2C2) + tst29 + 8 + Capture File Function Block 1 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + {\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}} +\viewkind4\uc1\pard\lang1033\f0\fs16\par +} + + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp1 + 1 + 14 + out51 + PHY Request ID2 Reg (Alternate addr) (I2C2) + + + stp10 + 2 + -1 + txt + + 1 + + + + stp2 + 1 + 30 + out53 + PHY Read Reg (2 Bytes) (Alternate addr) (I2C2) ** + + + stp3 + 8 + 100 + -1 + txt + + 100 + + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + GP Read Register (I2c2) + tst12 + 8 + Capture File Function Block 13 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp0 + 1 + 37 + out45 + TODO: Add step commands here + Write Address (GP) + + + stp1 + 2 + 10 + -1 + txt + + 10 + + + + stp2 + 1 + 30 + out53 + PHY Read Reg (2 Bytes) (Alternate addr) (I2C2) ** + + + stp3 + 8 + txt + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + Set Control Bytes (I2C2) + tst13 + 8 + Capture File Function Block 9 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp2 + 3 + txt + + Stored Values to Trigger Byte Update [0] + ({Stored Values to Trigger Byte Update :sig4-index(0)}<>{Device (Value) :sig0-0}) OR +({Stored Values to Trigger Byte Update :sig4-index(1)}<>{Register (Value) :sig1-0}) + XXXX hex + 0 + 415029 + + + + stp20 + 6 + txt + + {Register Byte 1 (Value) :sig3-0} + {Register (Value) :sig1-0}>>8 + XXXX hex + 0 + 415029 + {Register Byte 1 (Value) :sig5-0} + {Register Byte 1 (Value) :sig5-0} + + + + stp21 + 6 + txt + + {Register Byte 2 (Value) :sig6-0} + {Register (Value) :sig1-0} mod 256 + XXXX hex + 0 + 415029 + {Register Byte 2 (Value) :sig6-0} + {Register Byte 2 (Value) :sig6-0} + + + + stp12 + 6 + txt + + {Write Address (GP) (Control Bytes) :out45-116} + {Device+Register (Value) :sig2-0} + {Write Address (GP) (Control Bytes) :out45-116} + {Write Address (GP) (Control Bytes) :out45-116} + + + + stp23 + 6 + txt + + {Device+Register (Value) :sig2-0} + L,{Device (Value) :sig0-0},{Register Byte 1 (Value) :sig5-0},{Register Byte 2 (Value) :sig6-0} + 0 + 0 + 597 + True + {Device+Register (Value) :sig2-0} + {Device+Register (Value) :sig2-0} + + + + stp22 + 13 + -1 + -1 + txt + + Device+Register (Value) + tx(out45).ByteString1 {Device+Register (Value) :sig2-0} + 0 + True + + + + stp19 + 13 + -1 + -1 + txt + + tx.refresh + True + + + + stp0 + 6 + txt + + {Stored Values to Trigger Byte Update :sig7-index(0)} + {Device (Value) :sig0-0} + XX hex + 0 + 597 + {Stored Values to Trigger Byte Update :sig4-index(0)} + {Stored Values to Trigger Byte Update :sig4-index(0)} + + + + stp1 + 6 + txt + + {Stored Values to Trigger Byte Update :sig7-index(1)} + {Register (Value) :sig1-0} + 0 + 415029 + {Stored Values to Trigger Byte Update :sig4-index(1)} + {Stored Values to Trigger Byte Update :sig4-index(1)} + + + + stp24 + txt + + + stp11 + 14 + txt + + + stp10 + 14 + txt + + + stp2 + 14 + txt + + + stp3 + 14 + txt + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + PHY 88Q2221M - Initiate TC10 Sleep (100M) (Alternate addr) (I2C3) + tst11 + 8 + Capture File Function Block 2 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp1 + 1 + 32 + out62 + PHY 88Q2221M - Initiate TC10 Sleep (100M) (Alternate addr) (I2C3) + + + stp3 + 8 + txt + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + PHY 88Q2221M - Initiate TC10 Sleep (1000M) (Alternate addr) (I2C3) + tst14 + 8 + Capture File Function Block 2 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp1 + 1 + 33 + out64 + PHY 88Q2221M - Initiate TC10 Sleep (1000M) (Alternate addr) (I2C3) + + + stp3 + 8 + txt + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + Set SFP Module ICS TC10 Wakeup pin (I2C3) + tst15 + 8 + Capture File Function Block 2 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp1 + 1 + 31 + out50 + Set SFP Module ICS TC10 Wakeup (I2C3) + + + stp3 + 8 + txt + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + PHY 88Q2221M - Initiate TC10 Wakeup (100M) (Alternate addr) (I2C3) + tst17 + 8 + Capture File Function Block 2 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp1 + 1 + 34 + out66 + PHY 88Q2221M - Initiate TC10 Wakeup (100M) (Alternate addr) (I2C3) + + + stp3 + 8 + txt + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + PHY 88Q2221M - Initiate TC10 Wakeup (1000M) (Alternate addr) (I2C3) + tst18 + 8 + Capture File Function Block 2 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp1 + 1 + 35 + out68 + PHY 88Q2221M - Initiate TC10 Wakeup (1000M) (Alternate addr) (I2C3) + + + stp3 + 8 + txt + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + Set SFP Module ICS TC10 Wakeup pin (I2C2) + tst19 + 8 + Capture File Function Block 2 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp1 + 1 + 25 + out47 + Set SFP Module ICS TC10 Wakeup (I2C2) + + + stp3 + 8 + txt + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + PHY 88Q2221M - Initiate TC10 Sleep (100M) (Alternate addr) (I2C2) + tst20 + 8 + Capture File Function Block 2 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp1 + 1 + 26 + out49 + PHY 88Q2221M - Initiate TC10 Sleep (100M) (Alternate addr) (I2C2) + + + stp3 + 8 + txt + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + PHY 88Q2221M - Initiate TC10 Sleep (1000M) (Alternate addr) (I2C2) + tst21 + 8 + Capture File Function Block 2 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp1 + 1 + 27 + out54 + PHY 88Q2221M - Initiate TC10 Sleep (1000M) (Alternate addr) (I2C2) + + + stp3 + 8 + txt + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + PHY 88Q2221M - Initiate TC10 Wakeup (100M) (Alternate addr) (I2C2) + tst22 + 8 + Capture File Function Block 2 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp1 + 1 + 28 + out56 + PHY 88Q2221M - Initiate TC10 Wakeup (100M) (Alternate addr) (I2C2) + + + stp3 + 8 + txt + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + PHY 88Q2221M - Initiate TC10 Wakeup (1000M) (Alternate addr) (I2C2) + tst23 + 8 + Capture File Function Block 2 + 1 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp0 + 14 + TODO: Add step commands here + txt + + + stp1 + 1 + 29 + out58 + PHY 88Q2221M - Initiate TC10 Wakeup (1000M) (Alternate addr) (I2C2) + + + stp3 + 8 + txt + + + stp4 + 14 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + Get Auto Neg Status (Speed) + tst24 + 8 + Capture File Function Block 25 + True + 1 + 5000 + 1 + 1 + 1 + True + {\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}} +\viewkind4\uc1\pard\lang1031\f0\fs16\par +} + + out1 + 1 + + + stp0 + 2 + 0 + -1 + TODO: Add step commands here + txt + + .1 + .1 + + + + stp10 + 1 + 52 + out71 + I2C2 - 7.0x0200 + + + stp3 + 6 + txt + + {SFP1 Autoneg Enabled (Value) :sig13-0} + {SFP1 Autoneg Status (Value) :out71-sig0-0} + True=1/False=0 + 0 + 1 + True + {SFP1 Autoneg Enabled (Value) :sig13-0} + {SFP1 Autoneg Enabled (Value) :sig13-0} + + + + stp10 + 1 + 65 + out97 + I2C3 - 7.0x0200 + + + stp3 + 6 + txt + + {SFP2 Autoneg Enabled (Value) :sig14-0} + {SFP2 Autoneg Status (Value) :out97-sig0-0} + 0 + 1 + {SFP2 Autoneg Enabled (Value) :sig14-0} + {SFP2 Autoneg Enabled (Value) :sig14-0} + + + + stp16 + 14 + txt + + + stp15 + 14 + txt + + + stp14 + 14 + txt + + + stp13 + 14 + txt + + + stp12 + 14 + txt + + + stp11 + 14 + txt + + + stp4 + txt + + + stp5 + 14 + txt + + + stp6 + 14 + txt + + + stp7 + 14 + txt + + + stp8 + 14 + txt + + + stp9 + 14 + txt + + + + + Get Link Speed + tst30 + 8 + Capture File Function Block 31 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp0 + 2 + 50 + -1 + TODO: Add step commands here + txt + + 50 + + + + stp2 + 15 + 9 + 16 + txt + + SFP1 Autoneg Enabled (Value) + {SFP1 Autoneg Enabled (Value) :sig13-0} + True=1/False=0 + 0 + 1 + True + + + + stp3 + 1 + 53 + out74 + I2C2 - 7.801a + + + stp16 + 15 + 6 + 8 + txt + + Speed if Autoneg (Value) + {Speed if Autoneg (Value) :out74-sig0-0}=1 + 0 + 1 + + + + stp13 + 6 + txt + + {SFP1 Link Speed (Value) :sig11-0} + 1000 + 0 + {SFP1 Link Speed (Value) :sig11-0} + {SFP1 Link Speed (Value) :sig11-0} + + + + stp12 + 17 + 8 + txt + + + stp15 + 6 + txt + + {SFP1 Link Speed (Value) :sig11-0} + 100 + 0 + {SFP1 Link Speed (Value) :sig11-0} + {SFP1 Link Speed (Value) :sig11-0} + + + + stp14 + 18 + txt + + + stp5 + 17 + 16 + txt + + + stp6 + 1 + 38 + out43 + I2C2 - 1.0834 + + + stp7 + 15 + 13 + 15 + txt + + Speed if forced (Value) + {Speed if forced (Value) :out43-sig0-0}=1 + 0 + 1 + {SFP1 Link Speed (Value) :sig11-0} + {SFP1 Link Speed (Value) :sig11-0} + + + + stp13 + 6 + txt + + {SFP1 Link Speed (Value) :sig11-0} + 1000 + 0 + {SFP1 Link Speed (Value) :sig11-0} + {SFP1 Link Speed (Value) :sig11-0} + + + + stp12 + 17 + 15 + txt + + + stp15 + 6 + txt + + {SFP1 Link Speed (Value) :sig11-0} + 100 + 0 + {SFP1 Link Speed (Value) :sig11-0} + {SFP1 Link Speed (Value) :sig11-0} + + + + stp14 + 18 + txt + + + stp11 + 18 + txt + + + stp40 + 14 + txt + + + stp39 + 14 + txt + + + stp2 + 15 + 26 + 33 + txt + + SFP2 Autoneg Enabled (Value) + {SFP2 Autoneg Enabled (Value) :sig14-0} + True=1/False=0 + 0 + 1 + True + + + + stp3 + 1 + 66 + out99 + I2C3 - 7.801a + + + stp16 + 15 + 23 + 25 + txt + + SFP 2 Speed if Autoneg (Value) + {SFP 2 Speed if Autoneg (Value) :out99-sig0-0}=1 + 0 + 1 + + + + stp13 + 6 + txt + + {SFP2 Link Speed (Value) :sig12-0} + 1000 + 0 + {SFP2 Link Speed (Value) :sig12-0} + {SFP2 Link Speed (Value) :sig12-0} + + + + stp12 + 17 + 25 + txt + + + stp15 + 6 + txt + + {SFP2 Link Speed (Value) :sig12-0} + 100 + 0 + {SFP2 Link Speed (Value) :sig12-0} + {SFP2 Link Speed (Value) :sig12-0} + + + + stp14 + 18 + txt + + + stp5 + 17 + 33 + txt + + + stp6 + 1 + 58 + out83 + I2C3 - 1.0834 + + + stp7 + 15 + 30 + 32 + txt + + Speed if forced (Value) + {Speed if forced (Value) :out83-sig0-0}=1 + 0 + 1 + {SFP1 Link Speed (Value) :sig11-0} + {SFP1 Link Speed (Value) :sig11-0} + + + + stp13 + 6 + txt + + {SFP2 Link Speed (Value) :sig12-0} + 1000 + 0 + {SFP2 Link Speed (Value) :sig12-0} + {SFP2 Link Speed (Value) :sig12-0} + + + + stp12 + 17 + 32 + txt + + + stp15 + 6 + txt + + {SFP2 Link Speed (Value) :sig12-0} + 100 + 0 + {SFP2 Link Speed (Value) :sig12-0} + {SFP2 Link Speed (Value) :sig12-0} + + + + stp14 + 18 + txt + + + stp11 + 18 + txt + + + stp8 + txt + + + + + Get Link SQI + tst31 + 8 + Capture File Function Block 32 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp0 + 2 + 50 + -1 + TODO: Add step commands here + txt + + 50 + + + + stp1 + 15 + 5 + 8 + txt + + SFP1 Link Speed (Value) + {SFP1 Link Speed (Value) :sig11-0}=1000 + 0 + + + + stp2 + 1 + 51 + out69 + I2C2 - 3.FCD8 + + + stp3 + 6 + txt + + {SFP1 SQI (Value) :sig9-0} + {1G SQI (Value) :out69-sig0-0} + 0 + 7 + {SFP1 SQI (Value) :sig9-0} + {SFP1 SQI (Value) :sig9-0} + + + + stp4 + 16 + 8 + 8 + txt + + SFP1 Link Speed (Value) + {SFP1 Link Speed (Value) :sig11-0}=100 + 0 + + + + stp5 + 1 + 54 + out73 + I2C2 - 3.8230 + + + stp6 + 6 + txt + + {SFP1 SQI (Value) :sig9-0} + {100M SQI (Value) :out73-sig0-0} + XX hex + 0 + 7 + {SFP1 SQI (Value) :sig9-0} + {SFP1 SQI (Value) :sig9-0} + + + + stp7 + 18 + txt + + + stp17 + 14 + txt + + + stp1 + 15 + 13 + 16 + txt + + SFP2 Link Speed (Value) + {SFP2 Link Speed (Value) :sig12-0}=1000 + 0 + + + + stp2 + 1 + 64 + out95 + I2C3 - 3.FCD8 + + + stp3 + 6 + txt + + {SFP2 SQI (Value) :sig10-0} + {SFP 2 1G SQI (Value) :out95-sig0-0} + 0 + 7 + {SFP2 SQI (Value) :sig10-0} + {SFP2 SQI (Value) :sig10-0} + + + + stp4 + 16 + 16 + 16 + txt + + SFP2 Link Speed (Value) + {SFP2 Link Speed (Value) :sig12-0}=100 + 0 + + + + stp5 + 1 + 70 + out107 + I2C3 - 3.8230 + + + stp6 + 6 + txt + + {SFP2 SQI (Value) :sig10-0} + {SFP2 100M SQI (Value) :out107-sig0-0} + 0 + 7 + {SFP2 SQI (Value) :sig10-0} + {SFP2 SQI (Value) :sig10-0} + + + + stp7 + 18 + txt + + + stp8 + txt + + + + + Get Link Status + tst32 + 8 + Capture File Function Block 33 + True + 1 + 5000 + 1 + 1 + 1 + True + out1 + 1 + + + stp0 + 2 + 50 + -1 + TODO: Add step commands here + txt + + 50 + + + + stp1 + 15 + 7 + 12 + txt + + SFP1 Link Speed (Value) + {SFP1 Link Speed (Value) :sig11-0}=1000 + 0 + + + + stp2 + 1 + 45 + out60 + I2C2 - 3.0901 + + + stp3 + 1 + 46 + out67 + I2C2 - 7.8001 (M/S Auto Neg Enabled) + + + stp4 + 1 + 47 + out70 + I2C2 - 3.FD9D + + + stp5 + 6 + txt + + {SFP1 Link Status (Value) :sig7-0} + {Local Receiver OK (Value) :out67-sig1-0} and {Remote Receiver OK (Value) :out67-sig0-0} and {Secret Link Status Bit (Value) :out70-sig0-0} + Up=1/Down=0 + 0 + 1 + True + {SFP1 Link Status (Value) :sig7-0} + {SFP1 Link Status (Value) :sig7-0} + + + + stp6 + 17 + 12 + txt + + + stp7 + 1 + 55 + out75 + I2C2 - 3.8109 + + + stp8 + 1 + 56 + out78 + I2C2 - 3.8108 + + + stp9 + 1 + 54 + out73 + I2C2 - 3.8230 + + + stp5 + 6 + txt + + {SFP1 Link Status (Value) :sig7-0} + {Local Receiver OK (Value) :out78-sig0-0} and {Remote Receiver OK (Value) :out78-sig1-0} and {Link Up 8109 (Value) :out75-sig0-0} + 0 + 1 + {SFP1 Link Status (Value) :sig7-0} + {SFP1 Link Status (Value) :sig7-0} + + + + stp12 + 18 + txt + + + stp25 + 14 + txt + + + stp1 + 15 + 19 + 24 + txt + + SFP2 Link Speed (Value) + {SFP2 Link Speed (Value) :sig12-0}=1000 + 0 + + + + stp2 + 1 + 60 + out87 + I2C3 - 3.0901 + + + stp3 + 1 + 61 + out89 + I2C3 - 7.8001 (M/S Auto Neg Enabled) + + + stp4 + 1 + 62 + out91 + I2C3 - 3.FD9D + + + stp5 + 6 + txt + + {SFP2 Link Status (Value) :sig8-0} + {SFP 2 Local Receiver OK (Value) :out89-sig1-0} and {SFP 2 Remote Receiver OK (Value) :out89-sig0-0} and {SFP 2 Secret Link Status Bit (Value) :out91-sig0-0} + Up=1/Down=0 + 0 + 1 + True + {SFP2 Link Status (Value) :sig8-0} + {SFP2 Link Status (Value) :sig8-0} + + + + stp6 + 17 + 24 + txt + + + stp7 + 1 + 68 + out103 + I2C3 - 3.8109 + + + stp8 + 1 + 69 + out105 + I2C3 - 3.8108 + + + stp9 + 1 + 70 + out107 + I2C3 - 3.8230 + + + stp5 + 6 + txt + + {SFP2 Link Status (Value) :sig8-0} + {SFP 2 Local Receiver OK (Value) :out105-sig0-0} and {SFP 2 Remote Receiver OK (Value) :out105-sig1-0} and {SFP 2 Link Up 8109 (Value) :out103-sig0-0} + Up=1/Down=0 + 0 + 1 + True + {SFP2 Link Status (Value) :sig8-0} + {SFP2 Link Status (Value) :sig8-0} + + + + stp12 + 18 + txt + + + stp11 + txt + + + + + + + Default + sgr0 + False + 10 + icsSpyLogFile + icsSpyLogFile + + 0 + + icsSpyLogFile + True + + + + + + TC10 + dia5 + + fbb0 + 140 + 60 + 65 + 32 + 12632256 + tst20 + 0 + 0 + 12 + Arial + 0 + Send Sleep Request + Send Sleep Request + 1 + 1 + + + txt0 + 120 + 30 + 35 + 42 + 12632256 + 1 + 0 + 16 + Arial + SFP1 Port + 1 + + + fbb1 + 140 + 60 + 125 + 32 + 12632256 + tst22 + 0 + 0 + 12 + Arial + 0 + Send Wakeup Request over MDIO + Send Wakeup Request over MDIO + 1 + 1 + + + fbb4 + 140 + 60 + 185 + 32 + 12632256 + tst19 + 0 + 0 + 12 + Arial + 0 + Send Wakeup Request over PHY WAKE pin + Send Wakeup Request over PHY WAKE pin + 1 + 1 + + + txt1 + 120 + 30 + 35 + 212 + 12632256 + 1 + 0 + 16 + Arial + SFP2 Port + 1 + + + txt2 + 130 + 30 + 14 + 120 + 12632256 + 1 + 0 + 16 + Arial + TC10 (100M) + 1 + + + gdp0 + 360 + 250 + 10 + 10 + 12632256 + 1 + 1 + Arial + 16711935 + + + gdp1 + 350 + 250 + 10 + 380 + 12632256 + 1 + 1 + Arial + 16711935 + + + fbb5 + 140 + 60 + 65 + 202 + 12632256 + tst11 + 0 + 0 + 12 + Arial + 0 + Send Sleep Request + Send Sleep Request + 1 + 1 + + + fbb6 + 140 + 60 + 125 + 202 + 12632256 + tst17 + 0 + 0 + 12 + Arial + 0 + Send Wakeup Request over MDIO + Send Wakeup Request over MDIO + 1 + 1 + + + fbb7 + 140 + 60 + 185 + 202 + 12632256 + tst15 + 0 + 0 + 12 + Arial + 0 + Send Wakeup Request over PHY WAKE pin + Send Wakeup Request over PHY WAKE pin + 1 + 1 + + + fbb8 + 140 + 60 + 65 + 400 + 12632256 + tst21 + 0 + 0 + 12 + Arial + 0 + Send Sleep Request + Send Sleep Request + 1 + 1 + + + txt4 + 120 + 30 + 35 + 410 + 12632256 + 1 + 0 + 16 + Arial + SFP1 Port + 1 + + + fbb9 + 140 + 60 + 125 + 400 + 12632256 + tst23 + 0 + 0 + 12 + Arial + 0 + Send Wakeup Request over MDIO + Send Wakeup Request over MDIO + 1 + 1 + + + fbb10 + 140 + 60 + 185 + 400 + 12632256 + tst19 + 0 + 0 + 12 + Arial + 0 + Send Wakeup Request over PHY WAKE pin + Send Wakeup Request over PHY WAKE pin + 1 + 1 + + + txt5 + 120 + 30 + 35 + 580 + 12632256 + 1 + 0 + 16 + Arial + SFP2 Port + 1 + + + fbb11 + 140 + 60 + 65 + 570 + 12632256 + tst14 + 0 + 0 + 12 + Arial + 0 + Send Sleep Request + Send Sleep Request + 1 + 1 + + + fbb12 + 140 + 60 + 125 + 570 + 12632256 + tst18 + 0 + 0 + 12 + Arial + 0 + Send Wakeup Request over MDIO + Send Wakeup Request over MDIO + 1 + 1 + + + fbb13 + 140 + 60 + 185 + 570 + 12632256 + tst15 + 0 + 0 + 12 + Arial + 0 + Send Wakeup Request over PHY WAKE pin + Send Wakeup Request over PHY WAKE pin + 1 + 1 + + + txt6 + 140 + 30 + 14 + 482 + 12632256 + 1 + 0 + 16 + Arial + TC10 (1000M) + 1 + + + txt7 + 160 + 30 + 160 + 840 + 12632256 + 1 + 0 + 16 + Arial + Read MSA table: + 1 + + + fbb14 + 140 + 40 + 200 + 760 + 12632256 + tst27 + 0 + 0 + 12 + Arial + 0 + SFP1 port + SFP1 port + 1 + 1 + + + fbb15 + 140 + 40 + 200 + 940 + 12632256 + tst9 + 0 + 0 + 12 + Arial + 0 + SFP2 port + SFP2 port + 1 + 1 + + + led0 + 20 + 20 + 40 + 910 + 12632256 + 1 + 0 + Arial + + 0 + 65280 + 16384 + + SFP1 Link Status (Value) + {SFP1 Link Status (Value) :sig7-0} + Up=1/Down=0 + 0 + 1 + True + + + + led1 + 20 + 20 + 40 + 1010 + 12632256 + 1 + 0 + Arial + + 0 + 65280 + 16384 + + SFP2 Link Status (Value) + {SFP2 Link Status (Value) :sig8-0} + Up=1/Down=0 + 0 + 1 + True + + + + bgr0 + 80 + 40 + 101 + 890 + 16777215 + 0 + 1 + 12 + Arial + True + + 1 + 7 + 0 + 7368704 + + {SFP1 SQI (Value) :sig9-0} + XX hex + + + + txt8 + 60 + 30 + 70 + 894 + 12632256 + 1 + 0 + 16 + Arial + True + 1000 + 1 + + SFP1 Link Speed (Value) + {SFP1 Link Speed (Value) :sig11-0} + 0 + + + + txt9 + 120 + 30 + 70 + 760 + 12632256 + 1 + 0 + 16 + Arial + True + Link Speed + 1 + 1 + + + txt10 + 120 + 30 + 17 + 868 + 12632256 + 1 + 0 + 16 + Arial + True + SFP01 + 1 + + + txt11 + 120 + 20 + 40 + 760 + 12632256 + 1 + 0 + 16 + Arial + True + Link Status + 1 + 1 + + + txt12 + 120 + 30 + 111 + 760 + 12632256 + 1 + 0 + 16 + Arial + True + SQI + 1 + 1 + + + txt13 + 60 + 30 + 71 + 995 + 12632256 + 1 + 0 + 16 + Arial + True + 1000 + 1 + + SFP2 Link Speed (Value) + {SFP2 Link Speed (Value) :sig12-0} + 0 + + + + bgr1 + 80 + 40 + 100 + 982 + 16777215 + 0 + 1 + 12 + Arial + True + + 1 + 7 + 0 + 7368704 + + {SFP2 SQI (Value) :sig10-0} + XX hex + + + + txt14 + 120 + 30 + 17 + 966 + 12632256 + 1 + 0 + 16 + Arial + True + SFP02 + 1 + + + gdp2 + 350 + 140 + 10 + 740 + 12632256 + 1 + 1 + Arial + 16711935 + + + gdp3 + 310 + 27 + 37 + 750 + 12632256 + 1 + 1 + Arial + 16711935 + + + gdp4 + 310 + 30 + 68 + 750 + 12632256 + 1 + 1 + Arial + 16711935 + + + fbb16 + 80 + 50 + 15 + 1102 + 12632256 + tst33 + 1 + 0 + Arial + 0 + Start + Stop + 1 + 4 + 1 + 1 + + + + MACsec Panel + dia3 + + txe2 + 749 + 821 + 14 + 821 + 8454143 + 1 + 4 + Arial + + + txe1 + 749 + 821 + 14 + 27 + 8454143 + 1 + 4 + Arial + + + hed0 + 166 + 406 + 47 + 45 + 16776960 + 1 + 0 + 16 + Arial + + {SFP01_out (to MACsec) (Message Data) :out79-31} + {SFP01_out (to MACsec) (Message Data) :out79-31} + True + {SFP01_out (to MACsec) (Message Data) :out79-31} + {SFP01_out (to MACsec) (Message Data) :out79-31} + + False + 00FC7000000200FC7000000108004500001D00000000801126CE0A0000010A000002EA61EA6200096F14A80000000000000000000000000000000000 + + + txt0 + 278 + 90 + 565 + 59 + 12632256 + 1 + 0 + 24 + Arial + MACsec encryption on ETH01 + 1 + + + hed1 + 166 + 751 + 47 + 408 + 8421631 + 1 + 0 + 16 + Arial + + {RX raw MACsec encrypted (Message Data) :in1-31} + {RX raw MACsec encrypted (Message Data) :in2-31} + True + {RX raw MACsec encrypted (Message Data) :in2-31} + {RX raw MACsec encrypted (Message Data) :in2-31} + + False + + + hed2 + 166 + 405 + 48 + 587 + 65280 + 1 + 0 + 16 + Arial + + {SFP02_in_from MACsec (Message Data) :in3-31} + {SFP02_in_from MACsec (Message Data) :in3-31} + True + {SFP02_in_from MACsec (Message Data) :in3-31} + {SFP02_in_from MACsec (Message Data) :in3-31} + + False + 00FC7000000200FC7000000108004500001D00000000801126CE0A0000010A000002EA61EA620009FFFFA80000000000000000000000000000000000A98A8C78 + + + ned0 + 166 + 46 + 464 + 44 + 16777215 + 1 + 0 + 24 + Arial + 255 + + 1 + + {RAMP_0.5Hz (Value) :out79-sig22-0} + {RAMP_0.5Hz (Value) :out79-sig22-0} + 0 + 255 + {RAMP_0.5Hz (Value) :out79-sig22-0} + {RAMP_0.5Hz (Value) :out79-sig22-0} + + + + ned1 + 166 + 46 + 464 + 584 + 16777215 + 1 + 0 + 24 + Arial + 255 + + 1 + + {Signal 22 (Value) :in3-sig22-0} + {Signal 22 (Value) :in3-sig22-0} + 0 + 255 + {Signal 22 (Value) :in3-sig22-0} + {Signal 22 (Value) :in3-sig22-0} + + + + hed3 + 166 + 406 + 47 + 839 + 16776960 + 1 + 0 + 16 + Arial + + {SFP02_out_undecoded (Message Data) :out82-31} + {SFP02_out_undecoded (Message Data) :out82-31} + True + {SFP02_out_undecoded (Message Data) :out82-31} + {SFP02_out_undecoded (Message Data) :out82-31} + + False + 00FC7000000200FC7000000108004500001D00000000801122CE0A0002010A000202EA61EA6200099D14760000000000000000000000000000000000 + + + txt1 + 265 + 76 + 572 + 856 + 12632256 + 1 + 0 + 24 + Arial + no MACsec ETH02 to ETH01 + 1 + + + hed4 + 166 + 751 + 47 + 1202 + 8421631 + 1 + 0 + 16 + Arial + + {MACsec (Message Data) :in7-31} + {MACsec (Message Data) :in7-31} + True + {MACsec (Message Data) :in7-31} + {MACsec (Message Data) :in7-31} + + False + 00FC7000000200FC7000000188E5200000001687AFAFAFAFAFAFFFFF08004500001D00000000801122CE0A0002010A000202EA61EA620009FFFF76000000000000000000000000000000000082964049CE6F4D965191F2EB6E0D22732B7820D5 + + + hed5 + 166 + 405 + 48 + 1381 + 65280 + 1 + 0 + 16 + Arial + + {SFP01_in (decoded by MACSec) (Message Data) :in8-31} + {SFP01_in (decoded by MACSec) (Message Data) :in8-31} + True + {SFP01_in (decoded by MACSec) (Message Data) :in8-31} + {SFP01_in (decoded by MACSec) (Message Data) :in8-31} + + False + + + ned2 + 166 + 46 + 464 + 838 + 16777215 + 1 + 0 + 24 + Arial + 255 + + 1 + + {SAW_0.1HZ (Value) :out82-sig22-0} + {SAW_0.1HZ (Value) :out82-sig22-0} + 0 + 255 + {SAW_0.1HZ (Value) :out82-sig22-0} + {SAW_0.1HZ (Value) :out82-sig22-0} + + + + ned3 + 166 + 46 + 464 + 1381 + 16777215 + 1 + 0 + 24 + Arial + 255 + + 1 + + {Signal 22 (Value) :in8-sig22-0} + {Signal 22 (Value) :in8-sig22-0} + 0 + 255 + {Signal 22 (Value) :in8-sig22-0} + {Signal 22 (Value) :in8-sig22-0} + + + + txt2 + 600 + 49 + 798 + 176 + 12632256 + 1 + 0 + 24 + Arial + ETH02 no MACsec decrypting + 1 + + + + MACsec Description + dia4 + + txt0 + 285 + 27 + 80 + 82 + 12632256 + 1 + 0 + 12 + Arial + 16711680 + Use two SFP-MV2221M modules + 0 + 1 + + + txt1 + 1186 + 27 + 106 + 82 + 12632256 + 1 + 0 + 12 + Arial + 16711680 + SFP01 is configured for MACsec, using the following YAML configuration (test_sfp_macsec_Rule_wildcard_SecY_256_strip_noEncrypt_onlyCheck_sci_SA_sak0.yml) + 0 + 1 + + + txt2 + 1415 + 41 + 194 + 82 + 12632256 + 1 + 0 + 12 + Arial + True + 32768 + Programming: + 0 + 1 + + + txt3 + 1415 + 41 + 302 + 137 + 12632256 + 1 + 0 + 12 + Arial + 32768 + python test_sfp_macsec_util.py GS0728 --sfp --config_netid NETID_I2C3 --yaml test_sfp_macsec_Rule_wildcard_SecY_256_strip_noEncrypt_onlyCheck_sci_SA_sak0.yml + 0 + 1 + + + txt4 + 1186 + 27 + 132 + 82 + 12632256 + 1 + 0 + 12 + Arial + 16711680 + SFP02 will not use MACsec en-/decryption configuration + 0 + 1 + + + txt5 + 1416 + 25 + 348 + 137 + 12632256 + 1 + 0 + 12 + Arial + True + 32768 + python test_sfp_macsec_util.py GS0728 --sfp --config_netid NETID_I2C3 --yaml test_sfp_macsec_Rule_wildcard_SecY_256_strip_noEncrypt_onlyCheck_sci_SA_sak0.yml --reset + 0 + 1 + + + txt6 + 1415 + 25 + 218 + 108 + 12632256 + 1 + 0 + 12 + Arial + True + 32768 + Setting the configuration for SFP01 of GS0728: + 0 + 1 + + + txt7 + 1414 + 25 + 326 + 108 + 12632256 + 1 + 0 + 12 + Arial + True + 32768 + Clearing the configuration on SFP02 of GS0728: + 0 + 1 + + + txt8 + 1415 + 41 + 374 + 108 + 12632256 + 1 + 0 + 12 + Arial + 32768 + or just + 0 + 1 + + + txt9 + 1416 + 25 + 398 + 137 + 12632256 + 1 + 0 + 12 + Arial + True + 32768 + python test_sfp_macsec_util.py GS0728 --sfp --config_netid NETID_I2C3 --reset + 0 + 1 + + + txt10 + 285 + 27 + 56 + 82 + 12632256 + 1 + 0 + 12 + Arial + True + 16711680 + Requirements: + 0 + 1 + + + txt11 + 1415 + 41 + 466 + 82 + 12632256 + 1 + 0 + 12 + Arial + True + 33023 + Showcase: + 0 + 1 + + + txt12 + 1416 + 26 + 490 + 82 + 12632256 + 1 + 0 + 12 + Arial + 33023 + In the MACsec panel you see both ways of UDS communication from ETH01 to ETH02 and from ETH02 to ETH01. + 0 + 1 + + + txt13 + 1416 + 26 + 516 + 82 + 12632256 + 1 + 0 + 12 + Arial + 33023 + * In the first case the generated message will be encrypted by the SFP module and is then send to ETH02. ETH02 receives the encrypted message that is shown in the red box. + 0 + 1 + + + txt14 + 1416 + 26 + 542 + 82 + 12632256 + 1 + 0 + 12 + Arial + 33023 + If you stop and set same configuration to SFP02 you will receive the correctly decoded data, visible in the green box + 0 + 1 + + + txt15 + 1415 + 25 + 278 + 108 + 12632256 + 1 + 0 + 12 + Arial + True + 32768 + Setting the configuration for SFP02 of GS0728: + 0 + 1 + + + txt16 + 1415 + 41 + 242 + 137 + 12632256 + 1 + 0 + 12 + Arial + 32768 + python test_sfp_macsec_util.py GS0728 --sfp --config_netid NETID_I2C2 --yaml test_sfp_macsec_Rule_wildcard_SecY_256_strip_noEncrypt_onlyCheck_sci_SA_sak0.yml + 0 + 1 + + + txt17 + 1245 + 25 + 566 + 82 + 12632256 + 1 + 0 + 12 + Arial + 33023 + * In the second case data is transmitted unchanged thru SFP02 module - this should NOT be configured to MACsec security. + 0 + 1 + + + txt18 + 1245 + 25 + 590 + 82 + 12632256 + 1 + 0 + 12 + Arial + 33023 + SFP01 module will receive a standard Ethertype and the message is passed as it is and will be shown in the green box, correctly decoded + 0 + 1 + + + + Panel 2 + dia0 + + txt7 + 160 + 30 + 20 + 20 + 12632256 + 1 + 0 + 16 + Arial + Read MSA table: + 1 + + + fbb14 + 140 + 40 + 10 + 190 + 12632256 + tst27 + 0 + 0 + 12 + Arial + 0 + SFP1 port + SFP1 port + 1 + 1 + + + fbb15 + 140 + 40 + 10 + 350 + 12632256 + tst9 + 0 + 0 + 12 + Arial + 0 + SFP2 port + SFP2 port + 1 + 1 + + + grd0 + 346 + 116 + 76 + 18 + 8421504 + 0 + 1 + Arial + + 0 + True + + Grid: + False + 10 + icsSpyLogFile + icsSpyLogFile + + 0 + + icsSpyLogFile + True + + + + Device (Value) + spc0 + {Device (Value) :sig0-0} + XX hex + 0 + 597 + True + + + Register Address (Hex) + spc1 + {Register (Value) :sig1-0} + XXXX hex + True + + + Register Value (Value) + spc2 + {Register Value (Value) :in0-sig0-0} + XXXX hex + 0 + 65535 + True + + + + + + fbb16 + 80 + 50 + 104 + 384 + 12632256 + tst12 + 1 + 0 + Arial + 0 + Start + Read Register + 1 + 1 + + + grd1 + 380 + 190 + 230 + 30 + 8421504 + 0 + 1 + Arial + + 0 + 64 + + Grid: + False + 10 + icsSpyLogFile + icsSpyLogFile + + 0 + + icsSpyLogFile + True + + + + SFP1 Link Status (Value) + spc1 + {SFP1 Link Status (Value) :sig7-0} + Up=1/Down=0 + 0 + 1 + True + + + SFP1 Link Speed (Value) + spc0 + {SFP1 Link Speed (Value) :sig11-0} + 0 + + + SFP1 Autoneg Enabled (Value) + spc6 + {SFP1 Autoneg Enabled (Value) :sig13-0} + True=1/False=0 + 0 + 1 + True + + + SFP1 SQI (Value) + spc2 + {SFP1 SQI (Value) :sig9-0} + XX hex + + + SFP2 Link Status (Value) + spc4 + {SFP2 Link Status (Value) :sig8-0} + Up=1/Down=0 + 0 + 1 + True + + + SFP2 Link Speed (Value) + spc3 + {SFP2 Link Speed (Value) :sig12-0} + 0 + + + SFP2 Autoneg Enabled (Value) + spc7 + {SFP2 Autoneg Enabled (Value) :sig14-0} + True=1/False=0 + 0 + 1 + True + + + SFP2 SQI (Value) + spc5 + {SFP2 SQI (Value) :sig10-0} + XX hex + + + + + + + + 1 + 1 + + + 19536194836880000 + 107 + + False + + + + tcp0 + 00:FC:70:0F:02:D8 + net72 + + -256 + 0 + 255 + 86400 + + + + + False + False + + + eyJ2ZXJzaW9uIjogMSwgImVjdXMiOiBbeyJhbGdvcml0aG0iOiAiZ2VuZXJpY19pc28xNDIyOSIsICJ2ZXJzaW9uIjogMSwgIm5hbWUiOiAiTmV3IEVDVSIsICJpc28xNTc2NSI6IHsibmV0d29yayI6ICIiLCAicGh5c2ljYWwiOiB7InJlcXVlc3RfaWQiOiAiIiwgInJlc3BvbnNlX2lkIjogIiIsICJmbG93X2NvbnRyb2xfdGltZW91dCI6IDAsICJmbG93X2NvbnRyb2xfd2FpdF90aW1lb3V0IjogMCwgInN0bWluIjogMCwgImJsb2NrX3NpemUiOiAwLCAicGFkZGluZyI6ICIiLCAicmVxdWVzdF9leHRlbmRlZF9hZGRyZXNzIjogIiIsICJyZXNwb25zZV9leHRlbmRlZF9hZGRyZXNzIjogIiIsICJyZXF1ZXN0X2lkX2lzXzI5Yml0IjogZmFsc2UsICJyZXNwb25zZV9pZF9pc18yOWJpdCI6IGZhbHNlLCAicmVxdWVzdF91c2VfZXh0ZW5kZWRfYWRkcmVzcyI6IGZhbHNlLCAicmVzcG9uc2VfdXNlX2V4dGVuZGVkX2FkZHJlc3MiOiBmYWxzZSwgInVzZV9zdG1pbiI6IGZhbHNlLCAidXNlX2Jsb2NrX3NpemUiOiBmYWxzZSwgInVzZV9wYWRkaW5nIjogZmFsc2UsICJ0eXBlIjogIiIsICJ0eF9kbCI6IDB9LCAiZnVuY3Rpb25hbCI6IHsicmVxdWVzdF9pZCI6ICIiLCAicmVzcG9uc2VfaWQiOiAiIiwgImZsb3dfY29udHJvbF90aW1lb3V0IjogMCwgImZsb3dfY29udHJvbF93YWl0X3RpbWVvdXQiOiAwLCAic3RtaW4iOiAwLCAiYmxvY2tfc2l6ZSI6IDAsICJwYWRkaW5nIjogIiIsICJyZXF1ZXN0X2V4dGVuZGVkX2FkZHJlc3MiOiAiIiwgInJlc3BvbnNlX2V4dGVuZGVkX2FkZHJlc3MiOiAiIiwgInJlcXVlc3RfaWRfaXNfMjliaXQiOiBmYWxzZSwgInJlc3BvbnNlX2lkX2lzXzI5Yml0IjogZmFsc2UsICJyZXF1ZXN0X3VzZV9leHRlbmRlZF9hZGRyZXNzIjogZmFsc2UsICJyZXNwb25zZV91c2VfZXh0ZW5kZWRfYWRkcmVzcyI6IGZhbHNlLCAidXNlX3N0bWluIjogZmFsc2UsICJ1c2VfYmxvY2tfc2l6ZSI6IGZhbHNlLCAidXNlX3BhZGRpbmciOiBmYWxzZSwgInR5cGUiOiAiIiwgInR4X2RsIjogMH19LCAiaXNvMTQyMjkiOiB7InRpbWVvdXQiOiAyMDAwfSwgInN0YWdlcyI6IFt7Im5hbWUiOiAiTmV3IFN0YWdlIiwgImFjdGlvbnMiOiBbeyJ0eXBlIjogIm5vbmUifV19XSwgImZhaWxfc3RhZ2UiOiB7Im5hbWUiOiAiZmFpbF9zdGFnZSIsICJhY3Rpb25zIjogW3sidHlwZSI6ICJub25lIn1dfX1dfQA= + + + + 0 + + + + + Gateway 1 + + + + True + + + WIL_2_0 + + + + Desktop 1 + 0 + 51 + QVFET0NLCAAAAAD5////AAAAAGsFAAB/BQAAAgAAAAAAAAAAvAIAADQDAAAAAAAAAAAAAAAAAAAAAAAAmwkAAAAAAACA1Hq4Ru70SIM1fakJBnUaAWIJAAABAAAAYyK1l9uP/UucXrWg1mizjAAAAABJAAAA5wkAAGAFAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////8IBAADIAAAA///////////CAQAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAOEGAAADAAAAqyc2l+wdpUOosij2QvanWAAAAABJAAAA5wkAAAoEAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////8IBAADIAAAA///////////CAQAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAKcAAAAAAAAAZYheWHVq60u2XsfC9K8ACQAAAABiAAAA5wkAAAoEAAAAAAAAAAAAAAASAAAAR3JhcGhpY2FsIFBhbmVscyA2AAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAOcJAACaAwAArgIAAG0BAACkBAAAxQIAAAAAAwAAAAEQg/j9d/pCRrv2a3YrPNIkAAAAAAAAAAAAAEsEAAACAAAAEIP4/Xf6Qka79mt2KzzSJAAAAABiAAAA5wkAAAoEAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAOcJAACaAwAA///////////CAQAAyAAAAAAAAwAAAAFliF5YdWrrS7Zex8L0rwAJAAAAAAAAAgAAANcBAAABAAAAAqMcqq8M6km/Z8c7Wey2iQAAAABiAAAA8QQAAAoEAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////8IBAADIAAAA///////////CAQAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAJ0AAAAAAAAAZYheWHVq60u2XsfC9K8ACgAAAABiAAAA8QQAADsCAAAAAAAAAAAAAAAIAAAAVFhfRVRIMDEAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////wgEAAMgAAACuAQAACQEAAKQGAACNAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnQAAAAAAAABliF5YdWrrS7Zex8L0rwAMAAAAAD8CAADxBAAACgQAAAAAAAAAAAAAAAgAAABUWF9FVEgwMgQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////CAQAAyAAAAK4BAAAJAQAApAYAAI0DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXAQAAAQAAAFI0UHkDApZEtQoNT2WbIqr1BAAAYgAAAOcJAAAKBAAAAAAAAAAAAAAAAAAAAAMABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////CAQAAyAAAAP//////////wgEAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAACdAAAAAAAAAGWIXlh1autLtl7HwvSvAAv1BAAAYgAAAOcJAAA7AgAAAAAAAAAAAAAACAAAAFJYX0VUSDAyAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD1BAAAYgAAAPIEAACaAwAArgEAAAkBAACkBgAAjQMAAAAAAAAAAAFliF5YdWrrS7Zex8L0rwAKAAMAAAAAAAAAAJ0AAAAAAAAAZYheWHVq60u2XsfC9K8ADfUEAAA/AgAA5wkAAAoEAAAAAAAAAAAAAAAIAAAAUlhfRVRIMDEEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////wgEAAMgAAACuAQAACQEAAKQGAACNAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoQAAAAAAAABliF5YdWrrS7Zex8L0rwABAAAAAGIAAADnCQAACgQAAAAAAAAAAAAAAAwAAABJMkMgbWVzc2FnZXMAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiAAAA5wkAAJoDAAD//////////1gCAAAsAQAAAAADAAAAAWWIXlh1autLtl7HwvSvAAkAAAAAAAAAAAAApAAAAAAAAABliF5YdWrrS7Zex8L0rwAOAAAAAGIAAADnCQAACgQAAAAAAAAAAAAAAA8AAABGdW5jdGlvbiBCbG9ja3MAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPUEAABKAgAA8gQAALIBAAD//////////1gCAAAsAQAAAAADAAAAAWWIXlh1autLtl7HwvSvAA0AAAAAAAAAAAAAAAAAAADkAQAAAwAAAEB4Hg/zm8FDpXqUhUnkdGwAAAAADgQAAOcJAABgBQAAAAAAAAAAAAAAAAAAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////CAQAAyAAAAP//////////wgEAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAClAAAAAAAAAGWIXlh1autLtl7HwvSvAAYAAAAAJwQAAOcJAABgBQAAAAAAAAAAAAAAEAAAAEdyYXBoaWNhbCBQYW5lbHMAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHYBAAB4AAAAIQMAAGACAAAEAAAAKQEAAKAEAADMAgAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnQAAAAAAAABliF5YdWrrS7Zex8L0rwAIAAAAACcEAADnCQAAYAUAAAAAAAAAAAAAAAgAAABUeCBQYW5lbAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////CAQAAyAAAAP//////////WAIAACwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + 949431712 + + + 1 + 0 + PERlc2t0b3BEYXRhPg0KPEZpbHRlcldpZHRoPjIxMDwvRmlsdGVyV2lkdGg+DQo8RmlsdGVyQ29sdW1uV2lkdGhzPjQjMTIwLDIwLDIwLDI1IzAsMSwyLDMjMSwxLDEsMTwvRmlsdGVyQ29sdW1uV2lkdGhzPg0KPC9EZXNrdG9wRGF0YT4NCg== + + + 6 + 1 + PERlc2t0b3BEYXRhPg0KPEN1cnJlbnRWaWV3PjA8L0N1cnJlbnRWaWV3Pg0KPExvY2tDb250cm9scz5UcnVlPC9Mb2NrQ29udHJvbHM+DQo8U2hvd1Rvb2xiYXI+RmFsc2U8L1Nob3dUb29sYmFyPg0KPFNob3dQcm9wZXJ0aWVzPkZhbHNlPC9TaG93UHJvcGVydGllcz4NCjxTbmFwVG9HcmlkPkZhbHNlPC9TbmFwVG9HcmlkPg0KPFNob3dHcmlkPkZhbHNlPC9TaG93R3JpZD4NCjxHcmlkU2l6ZT4yPC9HcmlkU2l6ZT4NCjxHcmlkTXVsdD41PC9HcmlkTXVsdD4NCjxBc3BSYXRpbz40OjM8L0FzcFJhdGlvPg0KPC9EZXNrdG9wRGF0YT4NCg== + + + 8 + 2 + PERlc2t0b3BEYXRhPg0KPFNpZ25hbHNQYW5lbFdpZHRoPjE3MjU8L1NpZ25hbHNQYW5lbFdpZHRoPg0KPFNlbGVjdGVkUHJvdG9jb2w+MDwvU2VsZWN0ZWRQcm90b2NvbD4NCjxTaWduYWxTY3JpcHRHcmlkPg0KCTxOdW1PZkNvbHM+OTwvTnVtT2ZDb2xzPg0KCTxOdW1PZlJvd3M+MjQ8L051bU9mUm93cz4NCgk8Q29sPjU8L0NvbD4NCgk8Um93PjA8L1Jvdz4NCgk8Q29sU2VsPjU8L0NvbFNlbD4NCgk8Um93U2VsPjIzPC9Sb3dTZWw+DQoJPENPTD4NCgkJPENvbEluZGV4PjA8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjE8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjI8L0NvbEluZGV4Pg0KCQk8V2lkdGg+Mzc1MDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjM8L0NvbEluZGV4Pg0KCQk8V2lkdGg+MzAwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NDwvQ29sSW5kZXg+DQoJCTxXaWR0aD4zMDA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD41PC9Db2xJbmRleD4NCgkJPFdpZHRoPjMwMDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjY8L0NvbEluZGV4Pg0KCQk8V2lkdGg+OTc1PC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NzwvQ29sSW5kZXg+DQoJCTxXaWR0aD4xNTAwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+ODwvQ29sSW5kZXg+DQoJCTxXaWR0aD45NjA8L1dpZHRoPg0KCTwvQ09MPg0KPC9TaWduYWxTY3JpcHRHcmlkPg0KPEpvYlNjcmlwdEdyaWQ+DQoJPE51bU9mQ29scz4xNzwvTnVtT2ZDb2xzPg0KCTxOdW1PZlJvd3M+Nzg8L051bU9mUm93cz4NCgk8Q29sPjQ8L0NvbD4NCgk8Um93PjU1PC9Sb3c+DQoJPENvbFNlbD40PC9Db2xTZWw+DQoJPFJvd1NlbD41NTwvUm93U2VsPg0KCTxDT0w+DQoJCTxDb2xJbmRleD4wPC9Db2xJbmRleD4NCgkJPFdpZHRoPjE1PC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MTwvQ29sSW5kZXg+DQoJCTxXaWR0aD4zNjAwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MjwvQ29sSW5kZXg+DQoJCTxXaWR0aD4zMDA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD4zPC9Db2xJbmRleD4NCgkJPFdpZHRoPjk0NTwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjQ8L0NvbEluZGV4Pg0KCQk8V2lkdGg+OTQ1PC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+NTwvQ29sSW5kZXg+DQoJCTxXaWR0aD42MDA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD42PC9Db2xJbmRleD4NCgkJPFdpZHRoPjQ1MDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4Pjc8L0NvbEluZGV4Pg0KCQk8V2lkdGg+NDUwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+ODwvQ29sSW5kZXg+DQoJCTxXaWR0aD40NTA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD45PC9Db2xJbmRleD4NCgkJPFdpZHRoPjQ1MDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjEwPC9Db2xJbmRleD4NCgkJPFdpZHRoPjQ1MDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjExPC9Db2xJbmRleD4NCgkJPFdpZHRoPjQ1MDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjEyPC9Db2xJbmRleD4NCgkJPFdpZHRoPjQ1MDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjEzPC9Db2xJbmRleD4NCgkJPFdpZHRoPjQ1MDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjE0PC9Db2xJbmRleD4NCgkJPFdpZHRoPjQ1MDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjE1PC9Db2xJbmRleD4NCgkJPFdpZHRoPjc1MDwvV2lkdGg+DQoJPC9DT0w+DQoJPENPTD4NCgkJPENvbEluZGV4PjE2PC9Db2xJbmRleD4NCgkJPFdpZHRoPjYwMDwvV2lkdGg+DQoJPC9DT0w+DQo8L0pvYlNjcmlwdEdyaWQ+DQo8L0Rlc2t0b3BEYXRhPg0K + + + 9 + 3 + PERlc2t0b3BEYXRhPg0KPEN1cnJlbnRWaWV3PjE8L0N1cnJlbnRWaWV3Pg0KPExvY2tDb250cm9scz5UcnVlPC9Mb2NrQ29udHJvbHM+DQo8U2hvd1Rvb2xiYXI+RmFsc2U8L1Nob3dUb29sYmFyPg0KPFNob3dQcm9wZXJ0aWVzPkZhbHNlPC9TaG93UHJvcGVydGllcz4NCjxBc3BSYXRpbz40OjM8L0FzcFJhdGlvPg0KPC9EZXNrdG9wRGF0YT4NCg== + + + 10 + 4 + PERlc2t0b3BEYXRhPg0KPEZpbHRlcldpZHRoPjE8L0ZpbHRlcldpZHRoPg0KPEZpbHRlckNvbHVtbldpZHRocz40IzEyMCwyMCwyMCwyNSMwLDEsMiwzIzEsMSwxLDE8L0ZpbHRlckNvbHVtbldpZHRocz4NCjwvRGVza3RvcERhdGE+DQo= + + + 11 + 5 + PERlc2t0b3BEYXRhPg0KPEZpbHRlcldpZHRoPjE8L0ZpbHRlcldpZHRoPg0KPEZpbHRlckNvbHVtbldpZHRocz40IzEyMCwyMCwyMCwyNSMwLDEsMiwzIzEsMSwxLDE8L0ZpbHRlckNvbHVtbldpZHRocz4NCjwvRGVza3RvcERhdGE+DQo= + + + 12 + 6 + PERlc2t0b3BEYXRhPg0KPEZpbHRlcldpZHRoPjE8L0ZpbHRlcldpZHRoPg0KPEZpbHRlckNvbHVtbldpZHRocz40IzEyMCwyMCwyMCwyNSMwLDEsMiwzIzEsMSwxLDE8L0ZpbHRlckNvbHVtbldpZHRocz4NCjwvRGVza3RvcERhdGE+DQo= + + + 13 + 7 + PERlc2t0b3BEYXRhPg0KPEZpbHRlcldpZHRoPjE8L0ZpbHRlcldpZHRoPg0KPEZpbHRlckNvbHVtbldpZHRocz40IzEyMCwyMCwyMCwyNSMwLDEsMiwzIzEsMSwxLDE8L0ZpbHRlckNvbHVtbldpZHRocz4NCjwvRGVza3RvcERhdGE+DQo= + + + 14 + 8 + PERlc2t0b3BEYXRhPg0KPEN1cnJlbnRGQmxvY2tLZXk+dHN0MzI8L0N1cnJlbnRGQmxvY2tLZXk+DQo8Q3VycmVudFNwbGl0U2l6ZT40ODA8L0N1cnJlbnRTcGxpdFNpemU+DQo8RkJTY3JpcHRHcmlkPg0KCTxOdW1PZkNvbHM+NjwvTnVtT2ZDb2xzPg0KCTxOdW1PZlJvd3M+MjY8L051bU9mUm93cz4NCgk8Q29sPjQ8L0NvbD4NCgk8Um93PjE8L1Jvdz4NCgk8Q29sU2VsPjQ8L0NvbFNlbD4NCgk8Um93U2VsPjE8L1Jvd1NlbD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MDwvQ29sSW5kZXg+DQoJCTxXaWR0aD42MDA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD4xPC9Db2xJbmRleD4NCgkJPFdpZHRoPjYwPC9XaWR0aD4NCgk8L0NPTD4NCgk8Q09MPg0KCQk8Q29sSW5kZXg+MjwvQ29sSW5kZXg+DQoJCTxXaWR0aD42MDA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD4zPC9Db2xJbmRleD4NCgkJPFdpZHRoPjMwMDA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD40PC9Db2xJbmRleD4NCgkJPFdpZHRoPjQ1MDA8L1dpZHRoPg0KCTwvQ09MPg0KCTxDT0w+DQoJCTxDb2xJbmRleD41PC9Db2xJbmRleD4NCgkJPFdpZHRoPjMwMDA8L1dpZHRoPg0KCTwvQ09MPg0KPC9GQlNjcmlwdEdyaWQ+DQo8L0Rlc2t0b3BEYXRhPg0K + + + + +100M sqi speed 8109 8230 8108 secre receiver forced if fo + + + 0 + 1 + 0 + Messages + + + 6 + 6 + 0 + Graphical Panels + + + 5 + 8 + 0 + Tx Panel + + + 6 + 9 + 0 + Graphical Panels + + + 0 + 10 + 0 + Messages + + + 0 + 11 + 0 + Messages + + + 0 + 12 + 0 + Messages + + + 0 + 13 + 0 + Messages + + + 9 + 14 + 0 + Function Blocks + + + diff --git a/resources/TC10_MACse_Demo_GP.jpg b/resources/TC10_MACse_Demo_GP.jpg new file mode 100644 index 0000000..38808c0 Binary files /dev/null and b/resources/TC10_MACse_Demo_GP.jpg differ diff --git a/resources/TX_RX_MV2221M_GP.jpg b/resources/TX_RX_MV2221M_GP.jpg new file mode 100644 index 0000000..086f024 Binary files /dev/null and b/resources/TX_RX_MV2221M_GP.jpg differ diff --git a/resources/TX_RX_MV2221M_setup.jpg b/resources/TX_RX_MV2221M_setup.jpg new file mode 100644 index 0000000..3552a5f Binary files /dev/null and b/resources/TX_RX_MV2221M_setup.jpg differ