[RFC] net/tap: remove kernel side RSS via BPF

Message ID 20231215163155.181450-1-stephen@networkplumber.org (mailing list archive)
State Rejected, archived
Delegated to: Ferruh Yigit
Headers
Series [RFC] net/tap: remove kernel side RSS via BPF |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/intel-Functional success Functional PASS

Commit Message

Stephen Hemminger Dec. 15, 2023, 4:31 p.m. UTC
  The support of BPF in TAP device was problematic since the
API to BPF in kernel is not stable and keeps changing.

Since the RTE_FLOW_ACTION_TYPE_RSS is the only part using this
remove support for kernel side flow remapping.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 doc/guides/nics/tap.rst               |   74 --
 drivers/net/tap/bpf/Makefile          |   19 -
 drivers/net/tap/bpf/bpf_api.h         |  276 ----
 drivers/net/tap/bpf/bpf_elf.h         |   53 -
 drivers/net/tap/bpf/bpf_extract.py    |   86 --
 drivers/net/tap/bpf/tap_bpf_program.c |  255 ----
 drivers/net/tap/meson.build           |    5 -
 drivers/net/tap/rte_eth_tap.h         |    5 +-
 drivers/net/tap/tap_bpf.h             |  121 --
 drivers/net/tap/tap_bpf_api.c         |  190 ---
 drivers/net/tap/tap_bpf_insns.h       | 1743 -------------------------
 drivers/net/tap/tap_flow.c            |  496 +------
 drivers/net/tap/tap_flow.h            |   12 -
 drivers/net/tap/tap_tcmsgs.h          |    3 -
 14 files changed, 4 insertions(+), 3334 deletions(-)
 delete mode 100644 drivers/net/tap/bpf/Makefile
 delete mode 100644 drivers/net/tap/bpf/bpf_api.h
 delete mode 100644 drivers/net/tap/bpf/bpf_elf.h
 delete mode 100644 drivers/net/tap/bpf/bpf_extract.py
 delete mode 100644 drivers/net/tap/bpf/tap_bpf_program.c
 delete mode 100644 drivers/net/tap/tap_bpf.h
 delete mode 100644 drivers/net/tap/tap_bpf_api.c
 delete mode 100644 drivers/net/tap/tap_bpf_insns.h
  

Patch

diff --git a/doc/guides/nics/tap.rst b/doc/guides/nics/tap.rst
index d4f45c02a1e5..5779f5d08e31 100644
--- a/doc/guides/nics/tap.rst
+++ b/doc/guides/nics/tap.rst
@@ -123,7 +123,6 @@  Supported actions:
 - DROP
 - QUEUE
 - PASSTHRU
-- RSS (requires kernel 4.9)
 
 It is generally not possible to provide a "last" item. However, if the "last"
 item, once masked, is identical to the masked spec, then it is supported.
@@ -153,10 +152,6 @@  Drop UDP packets in vlan 3::
    testpmd> flow create 0 priority 3 ingress pattern eth / vlan vid is 3 / \
             ipv4 proto is 17 / end actions drop / end
 
-Distribute IPv4 TCP packets using RSS to a given MAC address over queues 0-3::
-
-   testpmd> flow create 0 priority 4 ingress pattern eth dst is 0a:0b:0c:0d:0e:0f \
-            / ipv4 / tcp / end actions rss queues 0 1 2 3 end / end
 
 Multi-process sharing
 ---------------------
@@ -227,80 +222,11 @@  size of the packets after you stop the traffic. Use pktgen ``help``
 command to see a list of all commands. You can also use the ``-f`` option to
 load commands at startup in command line or Lua script in pktgen.
 
-RSS specifics
--------------
-Packet distribution in TAP is done by the kernel which has a default
-distribution. This feature is adding RSS distribution based on eBPF code.
-The default eBPF code calculates RSS hash based on Toeplitz algorithm for
-a fixed RSS key. It is calculated on fixed packet offsets. For IPv4 and IPv6 it
-is calculated over src/dst addresses (8 or 32 bytes for IPv4 or IPv6
-respectively) and src/dst TCP/UDP ports (4 bytes).
-
-The RSS algorithm is written in file ``tap_bpf_program.c`` which
-does not take part in TAP PMD compilation. Instead this file is compiled
-in advance to eBPF object file. The eBPF object file is then parsed and
-translated into eBPF byte code in the format of C arrays of eBPF
-instructions. The C array of eBPF instructions is part of TAP PMD tree and
-is taking part in TAP PMD compilation. At run time the C arrays are uploaded to
-the kernel via BPF system calls and the RSS hash is calculated by the
-kernel.
-
-It is possible to support different RSS hash algorithms by updating file
-``tap_bpf_program.c``  In order to add a new RSS hash algorithm follow these
-steps:
-
-#. Write the new RSS implementation in file ``tap_bpf_program.c``
-
-   BPF programs which are uploaded to the kernel correspond to
-   C functions under different ELF sections.
-
-#. Install ``LLVM`` library and ``clang`` compiler versions 3.7 and above
-
-#. Use make to compile  `tap_bpf_program.c`` via ``LLVM`` into an object file
-   and extract the resulting instructions into ``tap_bpf_insn.h``::
-
-    cd bpf; make
-
-#. Recompile the TAP PMD.
-
-The C arrays are uploaded to the kernel using BPF system calls.
-
-``tc`` (traffic control) is a well known user space utility program used to
-configure the Linux kernel packet scheduler. It is usually packaged as
-part of the ``iproute2`` package.
-Since commit 11c39b5e9 ("tc: add eBPF support to f_bpf") ``tc`` can be used
-to uploads eBPF code to the kernel and can be patched in order to print the
-C arrays of eBPF instructions just before calling the BPF system call.
-Please refer to ``iproute2`` package file ``lib/bpf.c`` function
-``bpf_prog_load()``.
-
-An example utility for eBPF instruction generation in the format of C arrays will
-be added in next releases
-
-TAP reports on supported RSS functions as part of dev_infos_get callback:
-``RTE_ETH_RSS_IP``, ``RTE_ETH_RSS_UDP`` and ``RTE_ETH_RSS_TCP``.
-**Known limitation:** TAP supports all of the above hash functions together
-and not in partial combinations.
 
 Systems supporting flow API
 ---------------------------
 
 - "tc flower" classifier requires linux kernel above 4.2
-- eBPF/RSS requires linux kernel above 4.9
-
-+--------------------+-----------------------+
-| RH7.3              | No flow rule support  |
-+--------------------+-----------------------+
-| RH7.4              | No RSS action support |
-+--------------------+-----------------------+
-| RH7.5              | No RSS action support |
-+--------------------+-----------------------+
-| SLES 15,           | No limitation         |
-| kernel 4.12        |                       |
-+--------------------+-----------------------+
-| Azure Ubuntu 16.04,| No limitation         |
-| kernel 4.13        |                       |
-+--------------------+-----------------------+
 
 Limitations
 -----------
diff --git a/drivers/net/tap/bpf/Makefile b/drivers/net/tap/bpf/Makefile
deleted file mode 100644
index 9efeeb1bc704..000000000000
--- a/drivers/net/tap/bpf/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@ 
-# SPDX-License-Identifier: BSD-3-Clause
-# This file is not built as part of normal DPDK build.
-# It is used to generate the eBPF code for TAP RSS.
-
-CLANG=clang
-CLANG_OPTS=-O2
-TARGET=../tap_bpf_insns.h
-
-all: $(TARGET)
-
-clean:
-	rm tap_bpf_program.o $(TARGET)
-
-tap_bpf_program.o: tap_bpf_program.c
-	$(CLANG) $(CLANG_OPTS) -emit-llvm -c $< -o - | \
-	llc -march=bpf -filetype=obj -o $@
-
-$(TARGET): tap_bpf_program.o
-	python3 bpf_extract.py -stap_bpf_program.c -o $@ $<
diff --git a/drivers/net/tap/bpf/bpf_api.h b/drivers/net/tap/bpf/bpf_api.h
deleted file mode 100644
index 2638a8a4ac9a..000000000000
--- a/drivers/net/tap/bpf/bpf_api.h
+++ /dev/null
@@ -1,276 +0,0 @@ 
-/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */
-
-#ifndef __BPF_API__
-#define __BPF_API__
-
-/* Note:
- *
- * This file can be included into eBPF kernel programs. It contains
- * a couple of useful helper functions, map/section ABI (bpf_elf.h),
- * misc macros and some eBPF specific LLVM built-ins.
- */
-
-#include <stdint.h>
-
-#include <linux/pkt_cls.h>
-#include <linux/bpf.h>
-#include <linux/filter.h>
-
-#include <asm/byteorder.h>
-
-#include "bpf_elf.h"
-
-/** libbpf pin type. */
-enum libbpf_pin_type {
-	LIBBPF_PIN_NONE,
-	/* PIN_BY_NAME: pin maps by name (in /sys/fs/bpf by default) */
-	LIBBPF_PIN_BY_NAME,
-};
-
-/** Type helper macros. */
-
-#define __uint(name, val) int (*name)[val]
-#define __type(name, val) typeof(val) *name
-#define __array(name, val) typeof(val) *name[]
-
-/** Misc macros. */
-
-#ifndef __stringify
-# define __stringify(X)		#X
-#endif
-
-#ifndef __maybe_unused
-# define __maybe_unused		__attribute__((__unused__))
-#endif
-
-#ifndef offsetof
-# define offsetof(TYPE, MEMBER)	__builtin_offsetof(TYPE, MEMBER)
-#endif
-
-#ifndef likely
-# define likely(X)		__builtin_expect(!!(X), 1)
-#endif
-
-#ifndef unlikely
-# define unlikely(X)		__builtin_expect(!!(X), 0)
-#endif
-
-#ifndef htons
-# define htons(X)		__constant_htons((X))
-#endif
-
-#ifndef ntohs
-# define ntohs(X)		__constant_ntohs((X))
-#endif
-
-#ifndef htonl
-# define htonl(X)		__constant_htonl((X))
-#endif
-
-#ifndef ntohl
-# define ntohl(X)		__constant_ntohl((X))
-#endif
-
-#ifndef __inline__
-# define __inline__		__attribute__((always_inline))
-#endif
-
-/** Section helper macros. */
-
-#ifndef __section
-# define __section(NAME)						\
-	__attribute__((section(NAME), used))
-#endif
-
-#ifndef __section_tail
-# define __section_tail(ID, KEY)					\
-	__section(__stringify(ID) "/" __stringify(KEY))
-#endif
-
-#ifndef __section_xdp_entry
-# define __section_xdp_entry						\
-	__section(ELF_SECTION_PROG)
-#endif
-
-#ifndef __section_cls_entry
-# define __section_cls_entry						\
-	__section(ELF_SECTION_CLASSIFIER)
-#endif
-
-#ifndef __section_act_entry
-# define __section_act_entry						\
-	__section(ELF_SECTION_ACTION)
-#endif
-
-#ifndef __section_lwt_entry
-# define __section_lwt_entry						\
-	__section(ELF_SECTION_PROG)
-#endif
-
-#ifndef __section_license
-# define __section_license						\
-	__section(ELF_SECTION_LICENSE)
-#endif
-
-#ifndef __section_maps
-# define __section_maps							\
-	__section(ELF_SECTION_MAPS)
-#endif
-
-/** Declaration helper macros. */
-
-#ifndef BPF_LICENSE
-# define BPF_LICENSE(NAME)						\
-	char ____license[] __section_license = NAME
-#endif
-
-/** Classifier helper */
-
-#ifndef BPF_H_DEFAULT
-# define BPF_H_DEFAULT	-1
-#endif
-
-/** BPF helper functions for tc. Individual flags are in linux/bpf.h */
-
-#ifndef __BPF_FUNC
-# define __BPF_FUNC(NAME, ...)						\
-	(* NAME)(__VA_ARGS__) __maybe_unused
-#endif
-
-#ifndef BPF_FUNC
-# define BPF_FUNC(NAME, ...)						\
-	__BPF_FUNC(NAME, __VA_ARGS__) = (void *) BPF_FUNC_##NAME
-#endif
-
-/* Map access/manipulation */
-static void *BPF_FUNC(map_lookup_elem, void *map, const void *key);
-static int BPF_FUNC(map_update_elem, void *map, const void *key,
-		    const void *value, uint32_t flags);
-static int BPF_FUNC(map_delete_elem, void *map, const void *key);
-
-/* Time access */
-static uint64_t BPF_FUNC(ktime_get_ns);
-
-/* Debugging */
-
-/* FIXME: __attribute__ ((format(printf, 1, 3))) not possible unless
- * llvm bug https://llvm.org/bugs/show_bug.cgi?id=26243 gets resolved.
- * It would require ____fmt to be made const, which generates a reloc
- * entry (non-map).
- */
-static void BPF_FUNC(trace_printk, const char *fmt, int fmt_size, ...);
-
-#ifndef printt
-# define printt(fmt, ...)						\
-	({								\
-		char ____fmt[] = fmt;					\
-		trace_printk(____fmt, sizeof(____fmt), ##__VA_ARGS__);	\
-	})
-#endif
-
-/* Random numbers */
-static uint32_t BPF_FUNC(get_prandom_u32);
-
-/* Tail calls */
-static void BPF_FUNC(tail_call, struct __sk_buff *skb, void *map,
-		     uint32_t index);
-
-/* System helpers */
-static uint32_t BPF_FUNC(get_smp_processor_id);
-static uint32_t BPF_FUNC(get_numa_node_id);
-
-/* Packet misc meta data */
-static uint32_t BPF_FUNC(get_cgroup_classid, struct __sk_buff *skb);
-static int BPF_FUNC(skb_under_cgroup, void *map, uint32_t index);
-
-static uint32_t BPF_FUNC(get_route_realm, struct __sk_buff *skb);
-static uint32_t BPF_FUNC(get_hash_recalc, struct __sk_buff *skb);
-static uint32_t BPF_FUNC(set_hash_invalid, struct __sk_buff *skb);
-
-/* Packet redirection */
-static int BPF_FUNC(redirect, int ifindex, uint32_t flags);
-static int BPF_FUNC(clone_redirect, struct __sk_buff *skb, int ifindex,
-		    uint32_t flags);
-
-/* Packet manipulation */
-static int BPF_FUNC(skb_load_bytes, struct __sk_buff *skb, uint32_t off,
-		    void *to, uint32_t len);
-static int BPF_FUNC(skb_store_bytes, struct __sk_buff *skb, uint32_t off,
-		    const void *from, uint32_t len, uint32_t flags);
-
-static int BPF_FUNC(l3_csum_replace, struct __sk_buff *skb, uint32_t off,
-		    uint32_t from, uint32_t to, uint32_t flags);
-static int BPF_FUNC(l4_csum_replace, struct __sk_buff *skb, uint32_t off,
-		    uint32_t from, uint32_t to, uint32_t flags);
-static int BPF_FUNC(csum_diff, const void *from, uint32_t from_size,
-		    const void *to, uint32_t to_size, uint32_t seed);
-static int BPF_FUNC(csum_update, struct __sk_buff *skb, uint32_t wsum);
-
-static int BPF_FUNC(skb_change_type, struct __sk_buff *skb, uint32_t type);
-static int BPF_FUNC(skb_change_proto, struct __sk_buff *skb, uint32_t proto,
-		    uint32_t flags);
-static int BPF_FUNC(skb_change_tail, struct __sk_buff *skb, uint32_t nlen,
-		    uint32_t flags);
-
-static int BPF_FUNC(skb_pull_data, struct __sk_buff *skb, uint32_t len);
-
-/* Event notification */
-static int __BPF_FUNC(skb_event_output, struct __sk_buff *skb, void *map,
-		      uint64_t index, const void *data, uint32_t size) =
-		      (void *) BPF_FUNC_perf_event_output;
-
-/* Packet vlan encap/decap */
-static int BPF_FUNC(skb_vlan_push, struct __sk_buff *skb, uint16_t proto,
-		    uint16_t vlan_tci);
-static int BPF_FUNC(skb_vlan_pop, struct __sk_buff *skb);
-
-/* Packet tunnel encap/decap */
-static int BPF_FUNC(skb_get_tunnel_key, struct __sk_buff *skb,
-		    struct bpf_tunnel_key *to, uint32_t size, uint32_t flags);
-static int BPF_FUNC(skb_set_tunnel_key, struct __sk_buff *skb,
-		    const struct bpf_tunnel_key *from, uint32_t size,
-		    uint32_t flags);
-
-static int BPF_FUNC(skb_get_tunnel_opt, struct __sk_buff *skb,
-		    void *to, uint32_t size);
-static int BPF_FUNC(skb_set_tunnel_opt, struct __sk_buff *skb,
-		    const void *from, uint32_t size);
-
-/** LLVM built-ins, mem*() routines work for constant size */
-
-#ifndef lock_xadd
-# define lock_xadd(ptr, val)	((void) __sync_fetch_and_add(ptr, val))
-#endif
-
-#ifndef memset
-# define memset(s, c, n)	__builtin_memset((s), (c), (n))
-#endif
-
-#ifndef memcpy
-# define memcpy(d, s, n)	__builtin_memcpy((d), (s), (n))
-#endif
-
-#ifndef memmove
-# define memmove(d, s, n)	__builtin_memmove((d), (s), (n))
-#endif
-
-/* FIXME: __builtin_memcmp() is not yet fully usable unless llvm bug
- * https://llvm.org/bugs/show_bug.cgi?id=26218 gets resolved. Also
- * this one would generate a reloc entry (non-map), otherwise.
- */
-#if 0
-#ifndef memcmp
-# define memcmp(a, b, n)	__builtin_memcmp((a), (b), (n))
-#endif
-#endif
-
-unsigned long long load_byte(void *skb, unsigned long long off)
-	asm ("llvm.bpf.load.byte");
-
-unsigned long long load_half(void *skb, unsigned long long off)
-	asm ("llvm.bpf.load.half");
-
-unsigned long long load_word(void *skb, unsigned long long off)
-	asm ("llvm.bpf.load.word");
-
-#endif /* __BPF_API__ */
diff --git a/drivers/net/tap/bpf/bpf_elf.h b/drivers/net/tap/bpf/bpf_elf.h
deleted file mode 100644
index ea8a11c95c0f..000000000000
--- a/drivers/net/tap/bpf/bpf_elf.h
+++ /dev/null
@@ -1,53 +0,0 @@ 
-/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */
-#ifndef __BPF_ELF__
-#define __BPF_ELF__
-
-#include <asm/types.h>
-
-/* Note:
- *
- * Below ELF section names and bpf_elf_map structure definition
- * are not (!) kernel ABI. It's rather a "contract" between the
- * application and the BPF loader in tc. For compatibility, the
- * section names should stay as-is. Introduction of aliases, if
- * needed, are a possibility, though.
- */
-
-/* ELF section names, etc */
-#define ELF_SECTION_LICENSE	"license"
-#define ELF_SECTION_MAPS	"maps"
-#define ELF_SECTION_PROG	"prog"
-#define ELF_SECTION_CLASSIFIER	"classifier"
-#define ELF_SECTION_ACTION	"action"
-
-#define ELF_MAX_MAPS		64
-#define ELF_MAX_LICENSE_LEN	128
-
-/* Object pinning settings */
-#define PIN_NONE		0
-#define PIN_OBJECT_NS		1
-#define PIN_GLOBAL_NS		2
-
-/* ELF map definition */
-struct bpf_elf_map {
-	__u32 type;
-	__u32 size_key;
-	__u32 size_value;
-	__u32 max_elem;
-	__u32 flags;
-	__u32 id;
-	__u32 pinning;
-	__u32 inner_id;
-	__u32 inner_idx;
-};
-
-#define BPF_ANNOTATE_KV_PAIR(name, type_key, type_val)		\
-	struct ____btf_map_##name {				\
-		type_key key;					\
-		type_val value;					\
-	};							\
-	struct ____btf_map_##name				\
-	    __attribute__ ((section(".maps." #name), used))	\
-	    ____btf_map_##name = { }
-
-#endif /* __BPF_ELF__ */
diff --git a/drivers/net/tap/bpf/bpf_extract.py b/drivers/net/tap/bpf/bpf_extract.py
deleted file mode 100644
index b630c42b809f..000000000000
--- a/drivers/net/tap/bpf/bpf_extract.py
+++ /dev/null
@@ -1,86 +0,0 @@ 
-#!/usr/bin/env python3
-# SPDX-License-Identifier: BSD-3-Clause
-# Copyright (c) 2023 Stephen Hemminger <stephen@networkplumber.org>
-
-import argparse
-import sys
-import struct
-from tempfile import TemporaryFile
-from elftools.elf.elffile import ELFFile
-
-
-def load_sections(elffile):
-    """Get sections of interest from ELF"""
-    result = []
-    parts = [("cls_q", "cls_q_insns"), ("l3_l4", "l3_l4_hash_insns")]
-    for name, tag in parts:
-        section = elffile.get_section_by_name(name)
-        if section:
-            insns = struct.iter_unpack('<BBhL', section.data())
-            result.append([tag, insns])
-    return result
-
-
-def dump_section(name, insns, out):
-    """Dump the array of BPF instructions"""
-    print(f'\nstatic struct bpf_insn {name}[] = {{', file=out)
-    for bpf in insns:
-        code = bpf[0]
-        src = bpf[1] >> 4
-        dst = bpf[1] & 0xf
-        off = bpf[2]
-        imm = bpf[3]
-        print(f'\t{{{code:#04x}, {dst:4d}, {src:4d}, {off:8d}, {imm:#010x}}},',
-              file=out)
-    print('};', file=out)
-
-
-def parse_args():
-    """Parse command line arguments"""
-    parser = argparse.ArgumentParser()
-    parser.add_argument('-s',
-                        '--source',
-                        type=str,
-                        help="original source file")
-    parser.add_argument('-o', '--out', type=str, help="output C file path")
-    parser.add_argument("file",
-                        nargs='+',
-                        help="object file path or '-' for stdin")
-    return parser.parse_args()
-
-
-def open_input(path):
-    """Open the file or stdin"""
-    if path == "-":
-        temp = TemporaryFile()
-        temp.write(sys.stdin.buffer.read())
-        return temp
-    return open(path, 'rb')
-
-
-def write_header(out, source):
-    """Write file intro header"""
-    print("/* SPDX-License-Identifier: BSD-3-Clause", file=out)
-    if source:
-        print(f' * Auto-generated from {source}', file=out)
-    print(" * This not the original source file. Do NOT edit it.", file=out)
-    print(" */\n", file=out)
-    print("#include <tap_bpf.h>", file=out)
-
-
-def main():
-    '''program main function'''
-    args = parse_args()
-
-    with open(args.out, 'w',
-              encoding="utf-8") if args.out else sys.stdout as out:
-        write_header(out, args.source)
-        for path in args.file:
-            elffile = ELFFile(open_input(path))
-            sections = load_sections(elffile)
-            for name, insns in sections:
-                dump_section(name, insns, out)
-
-
-if __name__ == "__main__":
-    main()
diff --git a/drivers/net/tap/bpf/tap_bpf_program.c b/drivers/net/tap/bpf/tap_bpf_program.c
deleted file mode 100644
index f05aed021c30..000000000000
--- a/drivers/net/tap/bpf/tap_bpf_program.c
+++ /dev/null
@@ -1,255 +0,0 @@ 
-/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
- * Copyright 2017 Mellanox Technologies, Ltd
- */
-
-#include <stdint.h>
-#include <stdbool.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <asm/types.h>
-#include <linux/in.h>
-#include <linux/if.h>
-#include <linux/if_ether.h>
-#include <linux/ip.h>
-#include <linux/ipv6.h>
-#include <linux/if_tunnel.h>
-#include <linux/filter.h>
-
-#include "bpf_api.h"
-#include "bpf_elf.h"
-#include "../tap_rss.h"
-
-/** Create IPv4 address */
-#define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \
-		(((b) & 0xff) << 16) | \
-		(((c) & 0xff) << 8)  | \
-		((d) & 0xff))
-
-#define PORT(a, b) ((__u16)(((a) & 0xff) << 8) | \
-		((b) & 0xff))
-
-/*
- * The queue number is offset by a unique QUEUE_OFFSET, to distinguish
- * packets that have gone through this rule (skb->cb[1] != 0) from others.
- */
-#define QUEUE_OFFSET		0x7cafe800
-#define PIN_GLOBAL_NS		2
-
-#define KEY_IDX			0
-#define BPF_MAP_ID_KEY	1
-
-struct vlan_hdr {
-	__be16 proto;
-	__be16 tci;
-};
-
-struct bpf_elf_map __attribute__((section("maps"), used))
-map_keys = {
-	.type           =       BPF_MAP_TYPE_HASH,
-	.id             =       BPF_MAP_ID_KEY,
-	.size_key       =       sizeof(__u32),
-	.size_value     =       sizeof(struct rss_key),
-	.max_elem       =       256,
-	.pinning        =       PIN_GLOBAL_NS,
-};
-
-__section("cls_q") int
-match_q(struct __sk_buff *skb)
-{
-	__u32 queue = skb->cb[1];
-	/* queue is set by tap_flow_bpf_cls_q() before load */
-	volatile __u32 q = 0xdeadbeef;
-	__u32 match_queue = QUEUE_OFFSET + q;
-
-	/* printt("match_q$i() queue = %d\n", queue); */
-
-	if (queue != match_queue)
-		return TC_ACT_OK;
-
-	/* queue match */
-	skb->cb[1] = 0;
-	return TC_ACT_UNSPEC;
-}
-
-
-struct ipv4_l3_l4_tuple {
-	__u32    src_addr;
-	__u32    dst_addr;
-	__u16    dport;
-	__u16    sport;
-} __attribute__((packed));
-
-struct ipv6_l3_l4_tuple {
-	__u8        src_addr[16];
-	__u8        dst_addr[16];
-	__u16       dport;
-	__u16       sport;
-} __attribute__((packed));
-
-static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = {
-	0xd1, 0x81, 0xc6, 0x2c,
-	0xf7, 0xf4, 0xdb, 0x5b,
-	0x19, 0x83, 0xa2, 0xfc,
-	0x94, 0x3e, 0x1a, 0xdb,
-	0xd9, 0x38, 0x9e, 0x6b,
-	0xd1, 0x03, 0x9c, 0x2c,
-	0xa7, 0x44, 0x99, 0xad,
-	0x59, 0x3d, 0x56, 0xd9,
-	0xf3, 0x25, 0x3c, 0x06,
-	0x2a, 0xdc, 0x1f, 0xfc,
-};
-
-static __u32  __attribute__((always_inline))
-rte_softrss_be(const __u32 *input_tuple, const uint8_t *rss_key,
-		__u8 input_len)
-{
-	__u32 i, j, hash = 0;
-#pragma unroll
-	for (j = 0; j < input_len; j++) {
-#pragma unroll
-		for (i = 0; i < 32; i++) {
-			if (input_tuple[j] & (1U << (31 - i))) {
-				hash ^= ((const __u32 *)def_rss_key)[j] << i |
-				(__u32)((uint64_t)
-				(((const __u32 *)def_rss_key)[j + 1])
-					>> (32 - i));
-			}
-		}
-	}
-	return hash;
-}
-
-static int __attribute__((always_inline))
-rss_l3_l4(struct __sk_buff *skb)
-{
-	void *data_end = (void *)(long)skb->data_end;
-	void *data = (void *)(long)skb->data;
-	__u16 proto = (__u16)skb->protocol;
-	__u32 key_idx = 0xdeadbeef;
-	__u32 hash;
-	struct rss_key *rsskey;
-	__u64 off = ETH_HLEN;
-	int j;
-	__u8 *key = 0;
-	__u32 len;
-	__u32 queue = 0;
-	bool mf = 0;
-	__u16 frag_off = 0;
-
-	rsskey = map_lookup_elem(&map_keys, &key_idx);
-	if (!rsskey) {
-		printt("hash(): rss key is not configured\n");
-		return TC_ACT_OK;
-	}
-	key = (__u8 *)rsskey->key;
-
-	/* Get correct proto for 802.1ad */
-	if (skb->vlan_present && skb->vlan_proto == htons(ETH_P_8021AD)) {
-		if (data + ETH_ALEN * 2 + sizeof(struct vlan_hdr) +
-		    sizeof(proto) > data_end)
-			return TC_ACT_OK;
-		proto = *(__u16 *)(data + ETH_ALEN * 2 +
-				   sizeof(struct vlan_hdr));
-		off += sizeof(struct vlan_hdr);
-	}
-
-	if (proto == htons(ETH_P_IP)) {
-		if (data + off + sizeof(struct iphdr) + sizeof(__u32)
-			> data_end)
-			return TC_ACT_OK;
-
-		__u8 *src_dst_addr = data + off + offsetof(struct iphdr, saddr);
-		__u8 *frag_off_addr = data + off + offsetof(struct iphdr, frag_off);
-		__u8 *prot_addr = data + off + offsetof(struct iphdr, protocol);
-		__u8 *src_dst_port = data + off + sizeof(struct iphdr);
-		struct ipv4_l3_l4_tuple v4_tuple = {
-			.src_addr = IPv4(*(src_dst_addr + 0),
-					*(src_dst_addr + 1),
-					*(src_dst_addr + 2),
-					*(src_dst_addr + 3)),
-			.dst_addr = IPv4(*(src_dst_addr + 4),
-					*(src_dst_addr + 5),
-					*(src_dst_addr + 6),
-					*(src_dst_addr + 7)),
-			.sport = 0,
-			.dport = 0,
-		};
-		/** Fetch the L4-payer port numbers only in-case of TCP/UDP
-		 ** and also if the packet is not fragmented. Since fragmented
-		 ** chunks do not have L4 TCP/UDP header.
-		 **/
-		if (*prot_addr == IPPROTO_UDP || *prot_addr == IPPROTO_TCP) {
-			frag_off = PORT(*(frag_off_addr + 0),
-					*(frag_off_addr + 1));
-			mf = frag_off & 0x2000;
-			frag_off = frag_off & 0x1fff;
-			if (mf == 0 && frag_off == 0) {
-				v4_tuple.sport = PORT(*(src_dst_port + 0),
-						*(src_dst_port + 1));
-				v4_tuple.dport = PORT(*(src_dst_port + 2),
-						*(src_dst_port + 3));
-			}
-		}
-		__u8 input_len = sizeof(v4_tuple) / sizeof(__u32);
-		if (rsskey->hash_fields & (1 << HASH_FIELD_IPV4_L3))
-			input_len--;
-		hash = rte_softrss_be((__u32 *)&v4_tuple, key, 3);
-	} else if (proto == htons(ETH_P_IPV6)) {
-		if (data + off + sizeof(struct ipv6hdr) +
-					sizeof(__u32) > data_end)
-			return TC_ACT_OK;
-		__u8 *src_dst_addr = data + off +
-					offsetof(struct ipv6hdr, saddr);
-		__u8 *src_dst_port = data + off +
-					sizeof(struct ipv6hdr);
-		__u8 *next_hdr = data + off +
-					offsetof(struct ipv6hdr, nexthdr);
-
-		struct ipv6_l3_l4_tuple v6_tuple;
-		for (j = 0; j < 4; j++)
-			*((uint32_t *)&v6_tuple.src_addr + j) =
-				__builtin_bswap32(*((uint32_t *)
-						src_dst_addr + j));
-		for (j = 0; j < 4; j++)
-			*((uint32_t *)&v6_tuple.dst_addr + j) =
-				__builtin_bswap32(*((uint32_t *)
-						src_dst_addr + 4 + j));
-
-		/** Fetch the L4 header port-numbers only if next-header
-		 * is TCP/UDP **/
-		if (*next_hdr == IPPROTO_UDP || *next_hdr == IPPROTO_TCP) {
-			v6_tuple.sport = PORT(*(src_dst_port + 0),
-				      *(src_dst_port + 1));
-			v6_tuple.dport = PORT(*(src_dst_port + 2),
-				      *(src_dst_port + 3));
-		} else {
-			v6_tuple.sport = 0;
-			v6_tuple.dport = 0;
-		}
-
-		__u8 input_len = sizeof(v6_tuple) / sizeof(__u32);
-		if (rsskey->hash_fields & (1 << HASH_FIELD_IPV6_L3))
-			input_len--;
-		hash = rte_softrss_be((__u32 *)&v6_tuple, key, 9);
-	} else {
-		return TC_ACT_PIPE;
-	}
-
-	queue = rsskey->queues[(hash % rsskey->nb_queues) &
-				       (TAP_MAX_QUEUES - 1)];
-	skb->cb[1] = QUEUE_OFFSET + queue;
-	/* printt(">>>>> rss_l3_l4 hash=0x%x queue=%u\n", hash, queue); */
-
-	return TC_ACT_RECLASSIFY;
-}
-
-#define RSS(L)						\
-	__section(#L) int				\
-		L ## _hash(struct __sk_buff *skb)	\
-	{						\
-		return rss_ ## L (skb);			\
-	}
-
-RSS(l3_l4)
-
-BPF_LICENSE("Dual BSD/GPL");
diff --git a/drivers/net/tap/meson.build b/drivers/net/tap/meson.build
index 5099ccdff11b..f83f460a7808 100644
--- a/drivers/net/tap/meson.build
+++ b/drivers/net/tap/meson.build
@@ -7,7 +7,6 @@  if not is_linux
 endif
 sources = files(
         'rte_eth_tap.c',
-        'tap_bpf_api.c',
         'tap_flow.c',
         'tap_intr.c',
         'tap_netlink.c',
@@ -25,10 +24,6 @@  cflags += '-DTAP_MAX_QUEUES=16'
 args = [
         [ 'HAVE_TC_FLOWER', 'linux/pkt_cls.h', 'TCA_FLOWER_UNSPEC' ],
         [ 'HAVE_TC_VLAN_ID', 'linux/pkt_cls.h', 'TCA_FLOWER_KEY_VLAN_PRIO' ],
-        [ 'HAVE_TC_BPF', 'linux/pkt_cls.h', 'TCA_BPF_UNSPEC' ],
-        [ 'HAVE_TC_BPF_FD', 'linux/pkt_cls.h', 'TCA_BPF_FD' ],
-        [ 'HAVE_TC_ACT_BPF', 'linux/tc_act/tc_bpf.h', 'TCA_ACT_BPF_UNSPEC' ],
-        [ 'HAVE_TC_ACT_BPF_FD', 'linux/tc_act/tc_bpf.h', 'TCA_ACT_BPF_FD' ],
 ]
 config = configuration_data()
 foreach arg:args
diff --git a/drivers/net/tap/rte_eth_tap.h b/drivers/net/tap/rte_eth_tap.h
index 5ac93f93e961..e19824583651 100644
--- a/drivers/net/tap/rte_eth_tap.h
+++ b/drivers/net/tap/rte_eth_tap.h
@@ -79,11 +79,8 @@  struct pmd_internals {
 	int flow_isolate;                 /* 1 if flow isolation is enabled */
 	int flower_support;               /* 1 if kernel supports, else 0 */
 	int flower_vlan_support;          /* 1 if kernel supports, else 0 */
-	int rss_enabled;                  /* 1 if RSS is enabled, else 0 */
 	int persist;			  /* 1 if keep link up, else 0 */
-	/* implicit rules set when RSS is enabled */
-	int map_fd;                       /* BPF RSS map fd */
-	int bpf_fd[RTE_PMD_TAP_MAX_QUEUES];/* List of bpf fds per queue */
+
 	LIST_HEAD(tap_rss_flows, rte_flow) rss_flows;
 	LIST_HEAD(tap_flows, rte_flow) flows;        /* rte_flow rules */
 	/* implicit rte_flow rules set when a remote device is active */
diff --git a/drivers/net/tap/tap_bpf.h b/drivers/net/tap/tap_bpf.h
deleted file mode 100644
index 0d38bc111fe0..000000000000
--- a/drivers/net/tap/tap_bpf.h
+++ /dev/null
@@ -1,121 +0,0 @@ 
-/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
- * Copyright 2017 Mellanox Technologies, Ltd
- */
-
-#ifndef __TAP_BPF_H__
-#define __TAP_BPF_H__
-
-#include <tap_autoconf.h>
-
-/* Do not #include <linux/bpf.h> since eBPF must compile on different
- * distros which may include partial definitions for eBPF (while the
- * kernel itself may support eBPF). Instead define here all that is needed
- */
-
-/* BPF_MAP_UPDATE_ELEM command flags */
-#define	BPF_ANY	0 /* create a new element or update an existing */
-
-/* BPF architecture instruction struct */
-struct bpf_insn {
-	__u8	code;
-	__u8	dst_reg:4;
-	__u8	src_reg:4;
-	__s16	off;
-	__s32	imm; /* immediate value */
-};
-
-/* BPF program types */
-enum bpf_prog_type {
-	BPF_PROG_TYPE_UNSPEC,
-	BPF_PROG_TYPE_SOCKET_FILTER,
-	BPF_PROG_TYPE_KPROBE,
-	BPF_PROG_TYPE_SCHED_CLS,
-	BPF_PROG_TYPE_SCHED_ACT,
-};
-
-/* BPF commands types */
-enum bpf_cmd {
-	BPF_MAP_CREATE,
-	BPF_MAP_LOOKUP_ELEM,
-	BPF_MAP_UPDATE_ELEM,
-	BPF_MAP_DELETE_ELEM,
-	BPF_MAP_GET_NEXT_KEY,
-	BPF_PROG_LOAD,
-};
-
-/* BPF maps types */
-enum bpf_map_type {
-	BPF_MAP_TYPE_UNSPEC,
-	BPF_MAP_TYPE_HASH,
-};
-
-/* union of anonymous structs used with TAP BPF commands */
-union bpf_attr {
-	/* BPF_MAP_CREATE command */
-	struct {
-		__u32	map_type;
-		__u32	key_size;
-		__u32	value_size;
-		__u32	max_entries;
-		__u32	map_flags;
-		__u32	inner_map_fd;
-	};
-
-	/* BPF_MAP_UPDATE_ELEM, BPF_MAP_DELETE_ELEM commands */
-	struct {
-		__u32		map_fd;
-		__aligned_u64	key;
-		union {
-			__aligned_u64 value;
-			__aligned_u64 next_key;
-		};
-		__u64		flags;
-	};
-
-	/* BPF_PROG_LOAD command */
-	struct {
-		__u32		prog_type;
-		__u32		insn_cnt;
-		__aligned_u64	insns;
-		__aligned_u64	license;
-		__u32		log_level;
-		__u32		log_size;
-		__aligned_u64	log_buf;
-		__u32		kern_version;
-		__u32		prog_flags;
-	};
-} __rte_aligned(8);
-
-#ifndef __NR_bpf
-# if defined(__i386__)
-#  define __NR_bpf 357
-# elif defined(__x86_64__)
-#  define __NR_bpf 321
-# elif defined(__arm__)
-#  define __NR_bpf 386
-# elif defined(__aarch64__)
-#  define __NR_bpf 280
-# elif defined(__sparc__)
-#  define __NR_bpf 349
-# elif defined(__s390__)
-#  define __NR_bpf 351
-# elif defined(__powerpc__)
-#  define __NR_bpf 361
-# elif defined(__riscv)
-#  define __NR_bpf 280
-# elif defined(__loongarch__)
-#  define __NR_bpf 280
-# else
-#  error __NR_bpf not defined
-# endif
-#endif
-
-enum {
-	BPF_MAP_ID_KEY,
-	BPF_MAP_ID_SIMPLE,
-};
-
-static int bpf_load(enum bpf_prog_type type, const struct bpf_insn *insns,
-		size_t insns_cnt, const char *license);
-
-#endif /* __TAP_BPF_H__ */
diff --git a/drivers/net/tap/tap_bpf_api.c b/drivers/net/tap/tap_bpf_api.c
deleted file mode 100644
index 15283f8917ed..000000000000
--- a/drivers/net/tap/tap_bpf_api.c
+++ /dev/null
@@ -1,190 +0,0 @@ 
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2017 Mellanox Technologies, Ltd
- */
-
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/queue.h>
-
-#include <rte_malloc.h>
-#include <rte_eth_tap.h>
-#include <tap_flow.h>
-#include <tap_autoconf.h>
-#include <tap_tcmsgs.h>
-#include <tap_bpf.h>
-#include <tap_bpf_insns.h>
-
-/**
- * Load BPF program (section cls_q) into the kernel and return a bpf fd
- *
- * @param queue_idx
- *   Queue index matching packet cb
- *
- * @return
- *   -1 if the BPF program couldn't be loaded. An fd (int) otherwise.
- */
-int tap_flow_bpf_cls_q(__u32 queue_idx)
-{
-	cls_q_insns[1].imm = queue_idx;
-
-	return bpf_load(BPF_PROG_TYPE_SCHED_CLS,
-		(struct bpf_insn *)cls_q_insns,
-		RTE_DIM(cls_q_insns),
-		"Dual BSD/GPL");
-}
-
-/**
- * Load BPF program (section l3_l4) into the kernel and return a bpf fd.
- *
- * @param[in] key_idx
- *   RSS MAP key index
- *
- * @param[in] map_fd
- *   BPF RSS map file descriptor
- *
- * @return
- *   -1 if the BPF program couldn't be loaded. An fd (int) otherwise.
- */
-int tap_flow_bpf_calc_l3_l4_hash(__u32 key_idx, int map_fd)
-{
-	l3_l4_hash_insns[4].imm = key_idx;
-	l3_l4_hash_insns[9].imm = map_fd;
-
-	return bpf_load(BPF_PROG_TYPE_SCHED_ACT,
-		(struct bpf_insn *)l3_l4_hash_insns,
-		RTE_DIM(l3_l4_hash_insns),
-		"Dual BSD/GPL");
-}
-
-/**
- * Helper function to convert a pointer to unsigned 64 bits
- *
- * @param[in] ptr
- *   pointer to address
- *
- * @return
- *   64 bit unsigned long type of pointer address
- */
-static inline __u64 ptr_to_u64(const void *ptr)
-{
-	return (__u64)(unsigned long)ptr;
-}
-
-/**
- * Call BPF system call
- *
- * @param[in] cmd
- *   BPF command for program loading, map creation, map entry update, etc
- *
- * @param[in] attr
- *   System call attributes relevant to system call command
- *
- * @param[in] size
- *   size of attr parameter
- *
- * @return
- *   -1 if BPF system call failed, 0 otherwise
- */
-static inline int sys_bpf(enum bpf_cmd cmd, union bpf_attr *attr,
-			unsigned int size)
-{
-	return syscall(__NR_bpf, cmd, attr, size);
-}
-
-/**
- * Load BPF instructions to kernel
- *
- * @param[in] type
- *   BPF program type: classifier or action
- *
- * @param[in] insns
- *   Array of BPF instructions (equivalent to BPF instructions)
- *
- * @param[in] insns_cnt
- *   Number of BPF instructions (size of array)
- *
- * @param[in] license
- *   License string that must be acknowledged by the kernel
- *
- * @return
- *   -1 if the BPF program couldn't be loaded, fd (file descriptor) otherwise
- */
-static int bpf_load(enum bpf_prog_type type,
-		  const struct bpf_insn *insns,
-		  size_t insns_cnt,
-		  const char *license)
-{
-	union bpf_attr attr = {};
-
-	bzero(&attr, sizeof(attr));
-	attr.prog_type = type;
-	attr.insn_cnt = (__u32)insns_cnt;
-	attr.insns = ptr_to_u64(insns);
-	attr.license = ptr_to_u64(license);
-	attr.log_buf = ptr_to_u64(NULL);
-	attr.log_level = 0;
-	attr.kern_version = 0;
-
-	return sys_bpf(BPF_PROG_LOAD, &attr, sizeof(attr));
-}
-
-/**
- * Create BPF map for RSS rules
- *
- * @param[in] key_size
- *   map RSS key size
- *
- * @param[in] value_size
- *   Map RSS value size
- *
- * @param[in] max_entries
- *   Map max number of RSS entries (limit on max RSS rules)
- *
- * @return
- *   -1 if BPF map couldn't be created, map fd otherwise
- */
-int tap_flow_bpf_rss_map_create(unsigned int key_size,
-		unsigned int value_size,
-		unsigned int max_entries)
-{
-	union bpf_attr attr = {};
-
-	bzero(&attr, sizeof(attr));
-	attr.map_type    = BPF_MAP_TYPE_HASH;
-	attr.key_size    = key_size;
-	attr.value_size  = value_size;
-	attr.max_entries = max_entries;
-
-	return sys_bpf(BPF_MAP_CREATE, &attr, sizeof(attr));
-}
-
-/**
- * Update RSS entry in BPF map
- *
- * @param[in] fd
- *   RSS map fd
- *
- * @param[in] key
- *   Pointer to RSS key whose entry is updated
- *
- * @param[in] value
- *   Pointer to RSS new updated value
- *
- * @return
- *   -1 if RSS entry failed to be updated, 0 otherwise
- */
-int tap_flow_bpf_update_rss_elem(int fd, void *key, void *value)
-{
-	union bpf_attr attr = {};
-
-	bzero(&attr, sizeof(attr));
-
-	attr.map_type = BPF_MAP_TYPE_HASH;
-	attr.map_fd = fd;
-	attr.key = ptr_to_u64(key);
-	attr.value = ptr_to_u64(value);
-	attr.flags = BPF_ANY;
-
-	return sys_bpf(BPF_MAP_UPDATE_ELEM, &attr, sizeof(attr));
-}
diff --git a/drivers/net/tap/tap_bpf_insns.h b/drivers/net/tap/tap_bpf_insns.h
deleted file mode 100644
index 53fa76c4e6b0..000000000000
--- a/drivers/net/tap/tap_bpf_insns.h
+++ /dev/null
@@ -1,1743 +0,0 @@ 
-/* SPDX-License-Identifier: BSD-3-Clause
- * Auto-generated from tap_bpf_program.c
- * This not the original source file. Do NOT edit it.
- */
-
-#include <tap_bpf.h>
-
-static struct bpf_insn cls_q_insns[] = {
-	{0x61,    2,    1,       52, 0x00000000},
-	{0x18,    3,    0,        0, 0xdeadbeef},
-	{0x00,    0,    0,        0, 0x00000000},
-	{0x63,   10,    3,       -4, 0x00000000},
-	{0xb7,    0,    0,        0, 0x00000000},
-	{0x61,    3,   10,       -4, 0x00000000},
-	{0x07,    3,    0,        0, 0x7cafe800},
-	{0x67,    3,    0,        0, 0x00000020},
-	{0x77,    3,    0,        0, 0x00000020},
-	{0x5d,    2,    3,        4, 0x00000000},
-	{0xb7,    2,    0,        0, 0x00000000},
-	{0x63,    1,    2,       52, 0x00000000},
-	{0x18,    0,    0,        0, 0xffffffff},
-	{0x00,    0,    0,        0, 0x00000000},
-	{0x95,    0,    0,        0, 0x00000000},
-};
-
-static struct bpf_insn l3_l4_hash_insns[] = {
-	{0xbf,    7,    1,        0, 0x00000000},
-	{0x61,    6,    7,       16, 0x00000000},
-	{0x61,    8,    7,       76, 0x00000000},
-	{0x61,    9,    7,       80, 0x00000000},
-	{0x18,    1,    0,        0, 0xdeadbeef},
-	{0x00,    0,    0,        0, 0x00000000},
-	{0x63,   10,    1,       -4, 0x00000000},
-	{0xbf,    2,   10,        0, 0x00000000},
-	{0x07,    2,    0,        0, 0xfffffffc},
-	{0x18,    1,    0,        0, 0x00000000},
-	{0x00,    0,    0,        0, 0x00000000},
-	{0x85,    0,    0,        0, 0x00000001},
-	{0x55,    0,    0,       21, 0x00000000},
-	{0xb7,    1,    0,        0, 0x00000a64},
-	{0x6b,   10,    1,      -16, 0x00000000},
-	{0x18,    1,    0,        0, 0x69666e6f},
-	{0x00,    0,    0,        0, 0x65727567},
-	{0x7b,   10,    1,      -24, 0x00000000},
-	{0x18,    1,    0,        0, 0x6e207369},
-	{0x00,    0,    0,        0, 0x6320746f},
-	{0x7b,   10,    1,      -32, 0x00000000},
-	{0x18,    1,    0,        0, 0x20737372},
-	{0x00,    0,    0,        0, 0x2079656b},
-	{0x7b,   10,    1,      -40, 0x00000000},
-	{0x18,    1,    0,        0, 0x68736168},
-	{0x00,    0,    0,        0, 0x203a2928},
-	{0x7b,   10,    1,      -48, 0x00000000},
-	{0xb7,    7,    0,        0, 0x00000000},
-	{0x73,   10,    7,      -14, 0x00000000},
-	{0xbf,    1,   10,        0, 0x00000000},
-	{0x07,    1,    0,        0, 0xffffffd0},
-	{0xb7,    2,    0,        0, 0x00000023},
-	{0x85,    0,    0,        0, 0x00000006},
-	{0x05,    0,    0,     1680, 0x00000000},
-	{0xb7,    1,    0,        0, 0x0000000e},
-	{0x61,    2,    7,       20, 0x00000000},
-	{0x15,    2,    0,       10, 0x00000000},
-	{0x61,    2,    7,       28, 0x00000000},
-	{0x55,    2,    0,        8, 0x0000a888},
-	{0xbf,    2,    7,        0, 0x00000000},
-	{0xb7,    7,    0,        0, 0x00000000},
-	{0xbf,    1,    8,        0, 0x00000000},
-	{0x07,    1,    0,        0, 0x00000012},
-	{0x2d,    1,    9,     1670, 0x00000000},
-	{0xb7,    1,    0,        0, 0x00000012},
-	{0x69,    6,    8,       16, 0x00000000},
-	{0xbf,    7,    2,        0, 0x00000000},
-	{0x57,    6,    0,        0, 0x0000ffff},
-	{0x7b,   10,    7,      -56, 0x00000000},
-	{0x15,    6,    0,      443, 0x0000dd86},
-	{0xb7,    7,    0,        0, 0x00000003},
-	{0x55,    6,    0,     1662, 0x00000008},
-	{0x0f,    8,    1,        0, 0x00000000},
-	{0xb7,    7,    0,        0, 0x00000000},
-	{0xbf,    1,    8,        0, 0x00000000},
-	{0x07,    1,    0,        0, 0x00000018},
-	{0x2d,    1,    9,     1657, 0x00000000},
-	{0xb7,    1,    0,        0, 0x00000000},
-	{0x71,    3,    8,       12, 0x00000000},
-	{0x71,    2,    8,        9, 0x00000000},
-	{0x15,    2,    0,        1, 0x00000011},
-	{0x55,    2,    0,       21, 0x00000006},
-	{0x71,    2,    8,        7, 0x00000000},
-	{0x71,    4,    8,        6, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000008},
-	{0x57,    5,    0,        0, 0x00001f00},
-	{0x4f,    5,    2,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000020},
-	{0x4f,    4,    5,        0, 0x00000000},
-	{0x55,    4,    0,       12, 0x00000000},
-	{0xbf,    2,    8,        0, 0x00000000},
-	{0x07,    2,    0,        0, 0x00000014},
-	{0x71,    4,    2,        0, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000018},
-	{0x71,    1,    2,        1, 0x00000000},
-	{0x67,    1,    0,        0, 0x00000010},
-	{0x4f,    1,    4,        0, 0x00000000},
-	{0x71,    4,    2,        3, 0x00000000},
-	{0x4f,    1,    4,        0, 0x00000000},
-	{0x71,    2,    2,        2, 0x00000000},
-	{0x67,    2,    0,        0, 0x00000008},
-	{0x4f,    1,    2,        0, 0x00000000},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000038},
-	{0xc7,    4,    0,        0, 0x00000038},
-	{0xb7,    2,    0,        0, 0x00000000},
-	{0x65,    4,    0,        1, 0xffffffff},
-	{0xb7,    7,    0,        0, 0x2cc681d1},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000040},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x598d03a2},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000020},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xb31a0745},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000010},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x66340e8a},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000008},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xcc681d15},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000004},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x98d03a2b},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000002},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x31a07456},
-	{0x71,    4,    8,       13, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000001},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x6340e8ad},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000038},
-	{0xc7,    3,    0,        0, 0x00000038},
-	{0xbf,    5,    7,        0, 0x00000000},
-	{0xa7,    5,    0,        0, 0xc681d15b},
-	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    5,    7,        0, 0x00000000},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x8d03a2b7},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x1a07456f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x340e8ade},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000008},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x681d15bd},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000004},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd03a2b7b},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000002},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa07456f6},
-	{0x71,    3,    8,       14, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000001},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x40e8aded},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000038},
-	{0xc7,    4,    0,        0, 0x00000038},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xa7,    7,    0,        0, 0x81d15bdb},
-	{0x6d,    2,    4,        1, 0x00000000},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000040},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x03a2b7b7},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000020},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x07456f6f},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000010},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x0e8adedf},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000008},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x1d15bdbf},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000004},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x3a2b7b7e},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000002},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x7456f6fd},
-	{0x71,    4,    8,       15, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000001},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xe8adedfa},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000038},
-	{0xc7,    3,    0,        0, 0x00000038},
-	{0xbf,    5,    7,        0, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd15bdbf4},
-	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    5,    7,        0, 0x00000000},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa2b7b7e9},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x456f6fd3},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x8adedfa7},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000008},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x15bdbf4f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000004},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x2b7b7e9e},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000002},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x56f6fd3d},
-	{0x71,    3,    8,       16, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000001},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xadedfa7b},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000038},
-	{0xc7,    4,    0,        0, 0x00000038},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xa7,    7,    0,        0, 0x5bdbf4f7},
-	{0x6d,    2,    4,        1, 0x00000000},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000040},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xb7b7e9ef},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000020},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x6f6fd3df},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000010},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xdedfa7bf},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000008},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xbdbf4f7f},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000004},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x7b7e9eff},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000002},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xf6fd3dff},
-	{0x71,    4,    8,       17, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000001},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xedfa7bfe},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000038},
-	{0xc7,    3,    0,        0, 0x00000038},
-	{0xbf,    5,    7,        0, 0x00000000},
-	{0xa7,    5,    0,        0, 0xdbf4f7fc},
-	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    5,    7,        0, 0x00000000},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xb7e9eff9},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x6fd3dff2},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xdfa7bfe5},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000008},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xbf4f7fca},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000004},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x7e9eff94},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000002},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xfd3dff28},
-	{0x71,    3,    8,       18, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000001},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xfa7bfe51},
-	{0xbf,    6,    3,        0, 0x00000000},
-	{0x67,    6,    0,        0, 0x00000038},
-	{0xc7,    6,    0,        0, 0x00000038},
-	{0xbf,    4,    5,        0, 0x00000000},
-	{0xa7,    4,    0,        0, 0xf4f7fca2},
-	{0x6d,    2,    6,        1, 0x00000000},
-	{0xbf,    4,    5,        0, 0x00000000},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xe9eff945},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xd3dff28a},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xa7bfe514},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x4f7fca28},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x9eff9450},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x3dff28a0},
-	{0x71,    5,    8,       19, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000001},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x7bfe5141},
-	{0xbf,    3,    5,        0, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000038},
-	{0xc7,    3,    0,        0, 0x00000038},
-	{0xbf,    7,    4,        0, 0x00000000},
-	{0xa7,    7,    0,        0, 0xf7fca283},
-	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    7,    4,        0, 0x00000000},
-	{0xbf,    3,    5,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xeff94506},
-	{0xbf,    3,    5,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xdff28a0c},
-	{0xbf,    3,    5,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xbfe51418},
-	{0xbf,    3,    5,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000008},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x7fca2831},
-	{0xbf,    3,    5,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000004},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xff945063},
-	{0xbf,    3,    5,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000002},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xff28a0c6},
-	{0x57,    5,    0,        0, 0x00000001},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xfe51418c},
-	{0xbf,    4,    1,        0, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000020},
-	{0xc7,    4,    0,        0, 0x00000020},
-	{0xbf,    3,    7,        0, 0x00000000},
-	{0xa7,    3,    0,        0, 0xfca28319},
-	{0x6d,    2,    4,        1, 0x00000000},
-	{0xbf,    3,    7,        0, 0x00000000},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x40000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xf9450633},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x20000000},
-	{0x79,    6,   10,      -56, 0x00000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xf28a0c67},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x10000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xe51418ce},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x08000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xca28319d},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x04000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x9450633b},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x02000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x28a0c676},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x01000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x51418ced},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00800000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xa28319db},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00400000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x450633b6},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00200000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x8a0c676c},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00100000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x1418ced8},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00080000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x28319db1},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00040000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x50633b63},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00020000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xa0c676c6},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00010000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x418ced8d},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00008000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x8319db1a},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00004000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x0633b634},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00002000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x0c676c68},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00001000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x18ced8d1},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000800},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x319db1a3},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000400},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x633b6347},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000200},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xc676c68f},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000100},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x8ced8d1f},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000080},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x19db1a3e},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000040},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x33b6347d},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000020},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x676c68fa},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000010},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xced8d1f4},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000008},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x9db1a3e9},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000004},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x3b6347d2},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000002},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x76c68fa5},
-	{0x57,    1,    0,        0, 0x00000001},
-	{0x15,    1,    0,     1194, 0x00000000},
-	{0xa7,    3,    0,        0, 0xed8d1f4a},
-	{0x05,    0,    0,     1192, 0x00000000},
-	{0x0f,    8,    1,        0, 0x00000000},
-	{0xb7,    7,    0,        0, 0x00000000},
-	{0xbf,    1,    8,        0, 0x00000000},
-	{0x07,    1,    0,        0, 0x0000002c},
-	{0x2d,    1,    9,     1216, 0x00000000},
-	{0x61,    2,    8,        8, 0x00000000},
-	{0xdc,    2,    0,        0, 0x00000040},
-	{0xc7,    2,    0,        0, 0x00000020},
-	{0x71,    3,    8,        6, 0x00000000},
-	{0x15,    3,    0,        2, 0x00000011},
-	{0xb7,    1,    0,        0, 0x00000000},
-	{0x55,    3,    0,       12, 0x00000006},
-	{0xbf,    3,    8,        0, 0x00000000},
-	{0x07,    3,    0,        0, 0x00000028},
-	{0x71,    4,    3,        0, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000018},
-	{0x71,    1,    3,        1, 0x00000000},
-	{0x67,    1,    0,        0, 0x00000010},
-	{0x4f,    1,    4,        0, 0x00000000},
-	{0x71,    4,    3,        3, 0x00000000},
-	{0x4f,    1,    4,        0, 0x00000000},
-	{0x71,    3,    3,        2, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000008},
-	{0x4f,    1,    3,        0, 0x00000000},
-	{0xbf,    4,    2,        0, 0x00000000},
-	{0x77,    4,    0,        0, 0x0000001f},
-	{0x57,    4,    0,        0, 0x2cc681d1},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x40000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x598d03a2},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x20000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xb31a0745},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x10000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x66340e8a},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x08000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xcc681d15},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x04000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x98d03a2b},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x02000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x31a07456},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x01000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x6340e8ad},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00800000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xc681d15b},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00400000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x8d03a2b7},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00200000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x1a07456f},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00100000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x340e8ade},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00080000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x681d15bd},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00040000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xd03a2b7b},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00020000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xa07456f6},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00010000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x40e8aded},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00008000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x81d15bdb},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00004000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x03a2b7b7},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00002000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x07456f6f},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00001000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x0e8adedf},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000800},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x1d15bdbf},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000400},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x3a2b7b7e},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000200},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x7456f6fd},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000100},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xe8adedfa},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000080},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xd15bdbf4},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xa2b7b7e9},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x456f6fd3},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x8adedfa7},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000008},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x15bdbf4f},
-	{0x61,    3,    8,       12, 0x00000000},
-	{0xbf,    5,    2,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x2b7b7e9e},
-	{0xdc,    3,    0,        0, 0x00000040},
-	{0xbf,    5,    2,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x56f6fd3d},
-	{0xc7,    3,    0,        0, 0x00000020},
-	{0x57,    2,    0,        0, 0x00000001},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xadedfa7b},
-	{0xb7,    2,    0,        0, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0xa7,    5,    0,        0, 0x5bdbf4f7},
-	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x40000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xb7b7e9ef},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x20000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x6f6fd3df},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x10000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xdedfa7bf},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x08000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xbdbf4f7f},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x04000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x7b7e9eff},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x02000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xf6fd3dff},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xedfa7bfe},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00800000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xdbf4f7fc},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00400000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xb7e9eff9},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00200000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x6fd3dff2},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00100000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xdfa7bfe5},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00080000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xbf4f7fca},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00040000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x7e9eff94},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00020000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xfd3dff28},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00010000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xfa7bfe51},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00008000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xf4f7fca2},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00004000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xe9eff945},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00002000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd3dff28a},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00001000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa7bfe514},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000800},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x4f7fca28},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000400},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x9eff9450},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000200},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x3dff28a0},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000100},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x7bfe5141},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000080},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xf7fca283},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000040},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xeff94506},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000020},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xdff28a0c},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000010},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xbfe51418},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000008},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x7fca2831},
-	{0x61,    4,    8,       16, 0x00000000},
-	{0xbf,    6,    3,        0, 0x00000000},
-	{0x57,    6,    0,        0, 0x00000004},
-	{0x15,    6,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xff945063},
-	{0xdc,    4,    0,        0, 0x00000040},
-	{0xbf,    6,    3,        0, 0x00000000},
-	{0x57,    6,    0,        0, 0x00000002},
-	{0x15,    6,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xff28a0c6},
-	{0xc7,    4,    0,        0, 0x00000020},
-	{0x57,    3,    0,        0, 0x00000001},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xfe51418c},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xa7,    7,    0,        0, 0xfca28319},
-	{0x6d,    2,    4,        1, 0x00000000},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x40000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xf9450633},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x20000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xf28a0c67},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x10000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xe51418ce},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x08000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xca28319d},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x04000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x9450633b},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x02000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x28a0c676},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x01000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x51418ced},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00800000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xa28319db},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00400000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x450633b6},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00200000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x8a0c676c},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00100000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x1418ced8},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00080000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x28319db1},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00040000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x50633b63},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00020000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xa0c676c6},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00010000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x418ced8d},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00008000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x8319db1a},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00004000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x0633b634},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00002000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x0c676c68},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00001000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x18ced8d1},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000800},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x319db1a3},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000400},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x633b6347},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000200},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xc676c68f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000100},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x8ced8d1f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000080},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x19db1a3e},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x33b6347d},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x676c68fa},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xced8d1f4},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000008},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x9db1a3e9},
-	{0x61,    3,    8,       20, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x3b6347d2},
-	{0xdc,    3,    0,        0, 0x00000040},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x76c68fa5},
-	{0xc7,    3,    0,        0, 0x00000020},
-	{0x57,    4,    0,        0, 0x00000001},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xed8d1f4a},
-	{0xbf,    5,    7,        0, 0x00000000},
-	{0xa7,    5,    0,        0, 0xdb1a3e94},
-	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    5,    7,        0, 0x00000000},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x40000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xb6347d28},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x20000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x6c68fa51},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x10000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd8d1f4a3},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x08000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xb1a3e946},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x04000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x6347d28d},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x02000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xc68fa51a},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x8d1f4a35},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00800000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x1a3e946b},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00400000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x347d28d7},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00200000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x68fa51ae},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00100000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd1f4a35c},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00080000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa3e946b9},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00040000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x47d28d73},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00020000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x8fa51ae7},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00010000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x1f4a35cf},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00008000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x3e946b9e},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00004000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x7d28d73c},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00002000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xfa51ae78},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00001000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xf4a35cf1},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000800},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xe946b9e3},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000400},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd28d73c7},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000200},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa51ae78e},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000100},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x4a35cf1c},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000080},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x946b9e38},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000040},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x28d73c71},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000020},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x51ae78e3},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000010},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa35cf1c6},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000008},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x46b9e38d},
-	{0x61,    4,    8,       24, 0x00000000},
-	{0xbf,    6,    3,        0, 0x00000000},
-	{0x57,    6,    0,        0, 0x00000004},
-	{0x15,    6,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x8d73c71b},
-	{0xdc,    4,    0,        0, 0x00000040},
-	{0xbf,    6,    3,        0, 0x00000000},
-	{0x57,    6,    0,        0, 0x00000002},
-	{0x15,    6,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x1ae78e36},
-	{0xc7,    4,    0,        0, 0x00000020},
-	{0x57,    3,    0,        0, 0x00000001},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x35cf1c6c},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xa7,    7,    0,        0, 0x6b9e38d9},
-	{0x6d,    2,    4,        1, 0x00000000},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x40000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xd73c71b2},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x20000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xae78e364},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x10000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x5cf1c6c9},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x08000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xb9e38d92},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x04000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x73c71b25},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x02000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xe78e364b},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x01000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xcf1c6c96},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00800000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x9e38d92c},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00400000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x3c71b259},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00200000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x78e364b2},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00100000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xf1c6c964},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00080000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xe38d92c9},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00040000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xc71b2593},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00020000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x8e364b27},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00010000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x1c6c964e},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00008000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x38d92c9c},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00004000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x71b25938},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00002000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xe364b270},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00001000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xc6c964e0},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000800},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x8d92c9c0},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000400},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x1b259380},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000200},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x364b2700},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000100},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x6c964e01},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000080},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xd92c9c03},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xb2593807},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x64b2700f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xc964e01e},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000008},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x92c9c03d},
-	{0x61,    3,    8,       28, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x2593807a},
-	{0xdc,    3,    0,        0, 0x00000040},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x4b2700f4},
-	{0xc7,    3,    0,        0, 0x00000020},
-	{0x57,    4,    0,        0, 0x00000001},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x964e01e8},
-	{0xbf,    5,    7,        0, 0x00000000},
-	{0xa7,    5,    0,        0, 0x2c9c03d1},
-	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    5,    7,        0, 0x00000000},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x40000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x593807a3},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x20000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xb2700f46},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x10000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x64e01e8d},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x08000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xc9c03d1a},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x04000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x93807a35},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x02000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x2700f46b},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x4e01e8d6},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00800000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x9c03d1ad},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00400000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x3807a35b},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00200000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x700f46b6},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00100000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xe01e8d6c},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00080000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xc03d1ad9},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00040000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x807a35b3},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00020000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x00f46b66},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00010000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x01e8d6cc},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00008000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x03d1ad99},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00004000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x07a35b32},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00002000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x0f46b665},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00001000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x1e8d6cca},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000800},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x3d1ad994},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000400},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x7a35b328},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000200},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xf46b6651},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000100},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xe8d6cca2},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000080},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd1ad9944},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000040},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa35b3289},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000020},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x46b66512},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000010},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x8d6cca25},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000008},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x1ad9944a},
-	{0x61,    4,    8,       32, 0x00000000},
-	{0xbf,    6,    3,        0, 0x00000000},
-	{0x57,    6,    0,        0, 0x00000004},
-	{0x15,    6,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x35b32894},
-	{0xdc,    4,    0,        0, 0x00000040},
-	{0xbf,    6,    3,        0, 0x00000000},
-	{0x57,    6,    0,        0, 0x00000002},
-	{0x15,    6,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x6b665129},
-	{0xc7,    4,    0,        0, 0x00000020},
-	{0x57,    3,    0,        0, 0x00000001},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd6cca253},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xa7,    7,    0,        0, 0xad9944a7},
-	{0x6d,    2,    4,        1, 0x00000000},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x40000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x5b32894f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x20000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xb665129f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x10000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x6cca253e},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x08000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xd9944a7d},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x04000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xb32894fb},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x02000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x665129f6},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x01000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xcca253ec},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00800000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x9944a7d9},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00400000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x32894fb2},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00200000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x65129f65},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00100000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xca253eca},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00080000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x944a7d95},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00040000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x2894fb2a},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00020000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x5129f655},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00010000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xa253ecab},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00008000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x44a7d956},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00004000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x894fb2ac},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00002000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x129f6558},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00001000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x253ecab1},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000800},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x4a7d9563},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000400},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x94fb2ac7},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000200},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x29f6558f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000100},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x53ecab1e},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000080},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xa7d9563d},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x4fb2ac7a},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x9f6558f5},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x3ecab1ea},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000008},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x7d9563d5},
-	{0x61,    3,    8,       36, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xfb2ac7ab},
-	{0xdc,    3,    0,        0, 0x00000040},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xf6558f56},
-	{0xc7,    3,    0,        0, 0x00000020},
-	{0x57,    4,    0,        0, 0x00000001},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xecab1eac},
-	{0xbf,    4,    7,        0, 0x00000000},
-	{0xa7,    4,    0,        0, 0xd9563d59},
-	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    4,    7,        0, 0x00000000},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x40000000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xb2ac7ab2},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x20000000},
-	{0x79,    6,   10,      -56, 0x00000000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x6558f564},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x10000000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xcab1eac8},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x08000000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x9563d590},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x04000000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x2ac7ab20},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x02000000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x558f5641},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x01000000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xab1eac83},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00800000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x563d5906},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00400000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xac7ab20c},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00200000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x58f56418},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00100000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xb1eac831},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00080000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x63d59063},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00040000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xc7ab20c7},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00020000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x8f56418f},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00010000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x1eac831e},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00008000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x3d59063c},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00004000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x7ab20c78},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00002000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xf56418f0},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00001000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xeac831e1},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000800},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xd59063c2},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000400},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xab20c784},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000200},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x56418f09},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000100},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xac831e12},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000080},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x59063c25},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xb20c784b},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x6418f097},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xc831e12f},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x9063c25f},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x20c784be},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x418f097c},
-	{0x57,    3,    0,        0, 0x00000001},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x831e12f9},
-	{0xbf,    5,    1,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000020},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0xa7,    3,    0,        0, 0x063c25f3},
-	{0x6d,    2,    5,        1, 0x00000000},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x40000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x0c784be7},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x20000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x18f097cf},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x10000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x31e12f9f},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x08000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x63c25f3f},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x04000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xc784be7f},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x02000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x8f097cff},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x01000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x1e12f9fe},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00800000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x3c25f3fc},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00400000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x784be7f8},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00200000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xf097cff0},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00100000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xe12f9fe0},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00080000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xc25f3fc1},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00040000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x84be7f83},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00020000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x097cff07},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00010000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x12f9fe0f},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00008000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x25f3fc1f},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00004000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x4be7f83f},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00002000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x97cff07f},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00001000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x2f9fe0fe},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000800},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x5f3fc1fd},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000400},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xbe7f83fb},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000200},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x7cff07f7},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000100},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xf9fe0fee},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000080},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xf3fc1fdc},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000040},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xe7f83fb8},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000020},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xcff07f70},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000010},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x9fe0fee1},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000008},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x3fc1fdc2},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000004},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x7f83fb85},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000002},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xff07f70a},
-	{0x57,    1,    0,        0, 0x00000001},
-	{0x15,    1,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xfe0fee15},
-	{0x71,    1,    0,      201, 0x00000000},
-	{0x67,    1,    0,        0, 0x00000008},
-	{0x71,    2,    0,      200, 0x00000000},
-	{0x4f,    1,    2,        0, 0x00000000},
-	{0x71,    2,    0,      202, 0x00000000},
-	{0x67,    2,    0,        0, 0x00000010},
-	{0x71,    4,    0,      203, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000018},
-	{0x4f,    4,    2,        0, 0x00000000},
-	{0x4f,    4,    1,        0, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000020},
-	{0x77,    3,    0,        0, 0x00000020},
-	{0x9f,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x0000000f},
-	{0x67,    3,    0,        0, 0x00000002},
-	{0x0f,    0,    3,        0, 0x00000000},
-	{0x71,    1,    0,      137, 0x00000000},
-	{0x67,    1,    0,        0, 0x00000008},
-	{0x71,    2,    0,      136, 0x00000000},
-	{0x4f,    1,    2,        0, 0x00000000},
-	{0x71,    2,    0,      138, 0x00000000},
-	{0x67,    2,    0,        0, 0x00000010},
-	{0x71,    3,    0,      139, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000018},
-	{0x4f,    3,    2,        0, 0x00000000},
-	{0x4f,    3,    1,        0, 0x00000000},
-	{0x07,    3,    0,        0, 0x7cafe800},
-	{0x63,    6,    3,       52, 0x00000000},
-	{0xb7,    7,    0,        0, 0x00000001},
-	{0xbf,    0,    7,        0, 0x00000000},
-	{0x95,    0,    0,        0, 0x00000000},
-};
diff --git a/drivers/net/tap/tap_flow.c b/drivers/net/tap/tap_flow.c
index ed4d42f92f9f..84e816d80043 100644
--- a/drivers/net/tap/tap_flow.c
+++ b/drivers/net/tap/tap_flow.c
@@ -56,71 +56,6 @@  enum {
 	TCA_FLOWER_KEY_VLAN_ETH_TYPE,   /* be16 */
 };
 #endif
-/*
- * For kernels < 4.2 BPF related enums may not be defined.
- * Runtime checks will be carried out to gracefully report on TC messages that
- * are rejected by the kernel. Rejection reasons may be due to:
- * 1. enum is not defined
- * 2. enum is defined but kernel is not configured to support BPF system calls,
- *    BPF classifications or BPF actions.
- */
-#ifndef HAVE_TC_BPF
-enum {
-	TCA_BPF_UNSPEC,
-	TCA_BPF_ACT,
-	TCA_BPF_POLICE,
-	TCA_BPF_CLASSID,
-	TCA_BPF_OPS_LEN,
-	TCA_BPF_OPS,
-};
-#endif
-#ifndef HAVE_TC_BPF_FD
-enum {
-	TCA_BPF_FD = TCA_BPF_OPS + 1,
-	TCA_BPF_NAME,
-};
-#endif
-#ifndef HAVE_TC_ACT_BPF
-#define tc_gen \
-	__u32                 index; \
-	__u32                 capab; \
-	int                   action; \
-	int                   refcnt; \
-	int                   bindcnt
-
-struct tc_act_bpf {
-	tc_gen;
-};
-
-enum {
-	TCA_ACT_BPF_UNSPEC,
-	TCA_ACT_BPF_TM,
-	TCA_ACT_BPF_PARMS,
-	TCA_ACT_BPF_OPS_LEN,
-	TCA_ACT_BPF_OPS,
-};
-
-#endif
-#ifndef HAVE_TC_ACT_BPF_FD
-enum {
-	TCA_ACT_BPF_FD = TCA_ACT_BPF_OPS + 1,
-	TCA_ACT_BPF_NAME,
-};
-#endif
-
-/* RSS key management */
-enum bpf_rss_key_e {
-	KEY_CMD_GET = 1,
-	KEY_CMD_RELEASE,
-	KEY_CMD_INIT,
-	KEY_CMD_DEINIT,
-};
-
-enum key_status_e {
-	KEY_STAT_UNSPEC,
-	KEY_STAT_USED,
-	KEY_STAT_AVAILABLE,
-};
 
 #define ISOLATE_HANDLE 1
 #define REMOTE_PROMISCUOUS_HANDLE 2
@@ -128,8 +63,6 @@  enum key_status_e {
 struct rte_flow {
 	LIST_ENTRY(rte_flow) next; /* Pointer to the next rte_flow structure */
 	struct rte_flow *remote_flow; /* associated remote flow */
-	int bpf_fd[SEC_MAX]; /* list of bfs fds per ELF section */
-	uint32_t key_idx; /* RSS rule key index into BPF map */
 	struct nlmsg msg;
 };
 
@@ -157,11 +90,6 @@  struct action_data {
 			struct tc_skbedit skbedit;
 			uint16_t queue;
 		} skbedit;
-		struct bpf {
-			struct tc_act_bpf bpf;
-			int bpf_fd;
-			const char *annotation;
-		} bpf;
 	};
 };
 
@@ -185,10 +113,6 @@  tap_flow_create(struct rte_eth_dev *dev,
 		const struct rte_flow_action actions[],
 		struct rte_flow_error *error);
 
-static void
-tap_flow_free(struct pmd_internals *pmd,
-	struct rte_flow *flow);
-
 static int
 tap_flow_destroy(struct rte_eth_dev *dev,
 		 struct rte_flow *flow,
@@ -199,14 +123,6 @@  tap_flow_isolate(struct rte_eth_dev *dev,
 		 int set,
 		 struct rte_flow_error *error);
 
-static int bpf_rss_key(enum bpf_rss_key_e cmd, __u32 *key_idx);
-static int rss_enable(struct pmd_internals *pmd,
-			const struct rte_flow_attr *attr,
-			struct rte_flow_error *error);
-static int rss_add_actions(struct rte_flow *flow, struct pmd_internals *pmd,
-			const struct rte_flow_action_rss *rss,
-			struct rte_flow_error *error);
-
 static const struct rte_flow_ops tap_flow_ops = {
 	.validate = tap_flow_validate,
 	.create = tap_flow_create,
@@ -901,7 +817,7 @@  tap_flow_item_validate(const struct rte_flow_item *item,
 
 /**
  * Configure the kernel with a TC action and its configured parameters
- * Handled actions: "gact", "mirred", "skbedit", "bpf"
+ * Handled actions: "gact", "mirred", "skbedit"
  *
  * @param[in] flow
  *   Pointer to rte flow containing the netlink message
@@ -944,14 +860,6 @@  add_action(struct rte_flow *flow, size_t *act_index, struct action_data *adata)
 			   &adata->skbedit.skbedit);
 		tap_nlattr_add16(&msg->nh, TCA_SKBEDIT_QUEUE_MAPPING,
 			     adata->skbedit.queue);
-	} else if (strcmp("bpf", adata->id) == 0) {
-		tap_nlattr_add32(&msg->nh, TCA_ACT_BPF_FD, adata->bpf.bpf_fd);
-		tap_nlattr_add(&msg->nh, TCA_ACT_BPF_NAME,
-			   strlen(adata->bpf.annotation) + 1,
-			   adata->bpf.annotation);
-		tap_nlattr_add(&msg->nh, TCA_ACT_BPF_PARMS,
-			   sizeof(adata->bpf.bpf),
-			   &adata->bpf.bpf);
 	} else {
 		return -1;
 	}
@@ -1216,21 +1124,6 @@  priv_flow_process(struct pmd_internals *pmd,
 				err = add_actions(flow, 1, &adata,
 					TCA_FLOWER_ACT);
 			}
-		} else if (actions->type == RTE_FLOW_ACTION_TYPE_RSS) {
-			const struct rte_flow_action_rss *rss =
-				(const struct rte_flow_action_rss *)
-				actions->conf;
-
-			if (action++)
-				goto exit_action_not_supported;
-
-			if (!pmd->rss_enabled) {
-				err = rss_enable(pmd, attr, error);
-				if (err)
-					goto exit_action_not_supported;
-			}
-			if (flow)
-				err = rss_add_actions(flow, pmd, rss, error);
 		} else {
 			goto exit_action_not_supported;
 		}
@@ -1318,38 +1211,6 @@  tap_flow_set_handle(struct rte_flow *flow)
 	flow->msg.t.tcm_handle = handle;
 }
 
-/**
- * Free the flow opened file descriptors and allocated memory
- *
- * @param[in] flow
- *   Pointer to the flow to free
- *
- */
-static void
-tap_flow_free(struct pmd_internals *pmd, struct rte_flow *flow)
-{
-	int i;
-
-	if (!flow)
-		return;
-
-	if (pmd->rss_enabled) {
-		/* Close flow BPF file descriptors */
-		for (i = 0; i < SEC_MAX; i++)
-			if (flow->bpf_fd[i] != 0) {
-				close(flow->bpf_fd[i]);
-				flow->bpf_fd[i] = 0;
-			}
-
-		/* Release the map key for this RSS rule */
-		bpf_rss_key(KEY_CMD_RELEASE, &flow->key_idx);
-		flow->key_idx = 0;
-	}
-
-	/* Free flow allocated memory */
-	rte_free(flow);
-}
-
 /**
  * Create a flow.
  *
@@ -1466,8 +1327,7 @@  tap_flow_create(struct rte_eth_dev *dev,
 	return flow;
 fail:
 	rte_free(remote_flow);
-	if (flow)
-		tap_flow_free(pmd, flow);
+	rte_free(flow);
 	return NULL;
 }
 
@@ -1541,7 +1401,7 @@  tap_flow_destroy_pmd(struct pmd_internals *pmd,
 	}
 end:
 	rte_free(remote_flow);
-	tap_flow_free(pmd, flow);
+	rte_free(flow);
 	return ret;
 }
 
@@ -1812,356 +1672,6 @@  tap_flow_implicit_flush(struct pmd_internals *pmd, struct rte_flow_error *error)
 	return 0;
 }
 
-#define MAX_RSS_KEYS 256
-#define KEY_IDX_OFFSET (3 * MAX_RSS_KEYS)
-#define SEC_NAME_CLS_Q "cls_q"
-
-static const char *sec_name[SEC_MAX] = {
-	[SEC_L3_L4] = "l3_l4",
-};
-
-/**
- * Enable RSS on tap: create TC rules for queuing.
- *
- * @param[in, out] pmd
- *   Pointer to private structure.
- *
- * @param[in] attr
- *   Pointer to rte_flow to get flow group
- *
- * @param[out] error
- *   Pointer to error reporting if not NULL.
- *
- * @return 0 on success, negative value on failure.
- */
-static int rss_enable(struct pmd_internals *pmd,
-			const struct rte_flow_attr *attr,
-			struct rte_flow_error *error)
-{
-	struct rte_flow *rss_flow = NULL;
-	struct nlmsg *msg = NULL;
-	/* 4096 is the maximum number of instructions for a BPF program */
-	char annotation[64];
-	int i;
-	int err = 0;
-
-	/* unlimit locked memory */
-	struct rlimit memlock_limit = {
-		.rlim_cur = RLIM_INFINITY,
-		.rlim_max = RLIM_INFINITY,
-	};
-	setrlimit(RLIMIT_MEMLOCK, &memlock_limit);
-
-	 /* Get a new map key for a new RSS rule */
-	err = bpf_rss_key(KEY_CMD_INIT, NULL);
-	if (err < 0) {
-		rte_flow_error_set(
-			error, EINVAL, RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
-			"Failed to initialize BPF RSS keys");
-
-		return -1;
-	}
-
-	/*
-	 *  Create BPF RSS MAP
-	 */
-	pmd->map_fd = tap_flow_bpf_rss_map_create(sizeof(__u32), /* key size */
-				sizeof(struct rss_key),
-				MAX_RSS_KEYS);
-	if (pmd->map_fd < 0) {
-		TAP_LOG(ERR,
-			"Failed to create BPF map (%d): %s",
-				errno, strerror(errno));
-		rte_flow_error_set(
-			error, ENOTSUP, RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
-			"Kernel too old or not configured "
-			"to support BPF maps");
-
-		return -ENOTSUP;
-	}
-
-	/*
-	 * Add a rule per queue to match reclassified packets and direct them to
-	 * the correct queue.
-	 */
-	for (i = 0; i < pmd->dev->data->nb_rx_queues; i++) {
-		pmd->bpf_fd[i] = tap_flow_bpf_cls_q(i);
-		if (pmd->bpf_fd[i] < 0) {
-			TAP_LOG(ERR,
-				"Failed to load BPF section %s for queue %d",
-				SEC_NAME_CLS_Q, i);
-			rte_flow_error_set(
-				error, ENOTSUP, RTE_FLOW_ERROR_TYPE_HANDLE,
-				NULL,
-				"Kernel too old or not configured "
-				"to support BPF programs loading");
-
-			return -ENOTSUP;
-		}
-
-		rss_flow = rte_zmalloc(__func__, sizeof(struct rte_flow), 0);
-		if (!rss_flow) {
-			TAP_LOG(ERR,
-				"Cannot allocate memory for rte_flow");
-			return -1;
-		}
-		msg = &rss_flow->msg;
-		tc_init_msg(msg, pmd->if_index, RTM_NEWTFILTER, NLM_F_REQUEST |
-			    NLM_F_ACK | NLM_F_EXCL | NLM_F_CREATE);
-		msg->t.tcm_info = TC_H_MAKE(0, htons(ETH_P_ALL));
-		tap_flow_set_handle(rss_flow);
-		uint16_t group = attr->group << GROUP_SHIFT;
-		uint16_t prio = group | (i + PRIORITY_OFFSET);
-		msg->t.tcm_info = TC_H_MAKE(prio << 16, msg->t.tcm_info);
-		msg->t.tcm_parent = TC_H_MAKE(MULTIQ_MAJOR_HANDLE, 0);
-
-		tap_nlattr_add(&msg->nh, TCA_KIND, sizeof("bpf"), "bpf");
-		if (tap_nlattr_nested_start(msg, TCA_OPTIONS) < 0)
-			return -1;
-		tap_nlattr_add32(&msg->nh, TCA_BPF_FD, pmd->bpf_fd[i]);
-		snprintf(annotation, sizeof(annotation), "[%s%d]",
-			SEC_NAME_CLS_Q, i);
-		tap_nlattr_add(&msg->nh, TCA_BPF_NAME, strlen(annotation) + 1,
-			   annotation);
-		/* Actions */
-		{
-			struct action_data adata = {
-				.id = "skbedit",
-				.skbedit = {
-					.skbedit = {
-						.action = TC_ACT_PIPE,
-					},
-					.queue = i,
-				},
-			};
-			if (add_actions(rss_flow, 1, &adata, TCA_BPF_ACT) < 0)
-				return -1;
-		}
-		tap_nlattr_nested_finish(msg); /* nested TCA_OPTIONS */
-
-		/* Netlink message is now ready to be sent */
-		if (tap_nl_send(pmd->nlsk_fd, &msg->nh) < 0)
-			return -1;
-		err = tap_nl_recv_ack(pmd->nlsk_fd);
-		if (err < 0) {
-			TAP_LOG(ERR,
-				"Kernel refused TC filter rule creation (%d): %s",
-				errno, strerror(errno));
-			return err;
-		}
-		LIST_INSERT_HEAD(&pmd->rss_flows, rss_flow, next);
-	}
-
-	pmd->rss_enabled = 1;
-	return err;
-}
-
-/**
- * Manage bpf RSS keys repository with operations: init, get, release
- *
- * @param[in] cmd
- *   Command on RSS keys: init, get, release
- *
- * @param[in, out] key_idx
- *   Pointer to RSS Key index (out for get command, in for release command)
- *
- * @return -1 if couldn't get, release or init the RSS keys, 0 otherwise.
- */
-static int bpf_rss_key(enum bpf_rss_key_e cmd, __u32 *key_idx)
-{
-	__u32 i;
-	int err = 0;
-	static __u32 num_used_keys;
-	static __u32 rss_keys[MAX_RSS_KEYS] = {KEY_STAT_UNSPEC};
-	static __u32 rss_keys_initialized;
-	__u32 key;
-
-	switch (cmd) {
-	case KEY_CMD_GET:
-		if (!rss_keys_initialized) {
-			err = -1;
-			break;
-		}
-
-		if (num_used_keys == RTE_DIM(rss_keys)) {
-			err = -1;
-			break;
-		}
-
-		*key_idx = num_used_keys % RTE_DIM(rss_keys);
-		while (rss_keys[*key_idx] == KEY_STAT_USED)
-			*key_idx = (*key_idx + 1) % RTE_DIM(rss_keys);
-
-		rss_keys[*key_idx] = KEY_STAT_USED;
-
-		/*
-		 * Add an offset to key_idx in order to handle a case of
-		 * RSS and non RSS flows mixture.
-		 * If a non RSS flow is destroyed it has an eBPF map
-		 * index 0 (initialized on flow creation) and might
-		 * unintentionally remove RSS entry 0 from eBPF map.
-		 * To avoid this issue, add an offset to the real index
-		 * during a KEY_CMD_GET operation and subtract this offset
-		 * during a KEY_CMD_RELEASE operation in order to restore
-		 * the real index.
-		 */
-		*key_idx += KEY_IDX_OFFSET;
-		num_used_keys++;
-	break;
-
-	case KEY_CMD_RELEASE:
-		if (!rss_keys_initialized)
-			break;
-
-		/*
-		 * Subtract offset to restore real key index
-		 * If a non RSS flow is falsely trying to release map
-		 * entry 0 - the offset subtraction will calculate the real
-		 * map index as an out-of-range value and the release operation
-		 * will be silently ignored.
-		 */
-		key = *key_idx - KEY_IDX_OFFSET;
-		if (key >= RTE_DIM(rss_keys))
-			break;
-
-		if (rss_keys[key] == KEY_STAT_USED) {
-			rss_keys[key] = KEY_STAT_AVAILABLE;
-			num_used_keys--;
-		}
-	break;
-
-	case KEY_CMD_INIT:
-		for (i = 0; i < RTE_DIM(rss_keys); i++)
-			rss_keys[i] = KEY_STAT_AVAILABLE;
-
-		rss_keys_initialized = 1;
-		num_used_keys = 0;
-	break;
-
-	case KEY_CMD_DEINIT:
-		for (i = 0; i < RTE_DIM(rss_keys); i++)
-			rss_keys[i] = KEY_STAT_UNSPEC;
-
-		rss_keys_initialized = 0;
-		num_used_keys = 0;
-	break;
-
-	default:
-		break;
-	}
-
-	return err;
-}
-
-/**
- * Add RSS hash calculations and queue selection
- *
- * @param[in, out] pmd
- *   Pointer to internal structure. Used to set/get RSS map fd
- *
- * @param[in] rss
- *   Pointer to RSS flow actions
- *
- * @param[out] error
- *   Pointer to error reporting if not NULL.
- *
- * @return 0 on success, negative value on failure
- */
-static int rss_add_actions(struct rte_flow *flow, struct pmd_internals *pmd,
-			   const struct rte_flow_action_rss *rss,
-			   struct rte_flow_error *error)
-{
-	/* 4096 is the maximum number of instructions for a BPF program */
-	unsigned int i;
-	int err;
-	struct rss_key rss_entry = { .hash_fields = 0,
-				     .key_size = 0 };
-
-	/* Check supported RSS features */
-	if (rss->func != RTE_ETH_HASH_FUNCTION_DEFAULT)
-		return rte_flow_error_set
-			(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,
-			 "non-default RSS hash functions are not supported");
-	if (rss->level)
-		return rte_flow_error_set
-			(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,
-			 "a nonzero RSS encapsulation level is not supported");
-
-	/* Get a new map key for a new RSS rule */
-	err = bpf_rss_key(KEY_CMD_GET, &flow->key_idx);
-	if (err < 0) {
-		rte_flow_error_set(
-			error, EINVAL, RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
-			"Failed to get BPF RSS key");
-
-		return -1;
-	}
-
-	/* Update RSS map entry with queues */
-	rss_entry.nb_queues = rss->queue_num;
-	for (i = 0; i < rss->queue_num; i++)
-		rss_entry.queues[i] = rss->queue[i];
-	rss_entry.hash_fields =
-		(1 << HASH_FIELD_IPV4_L3_L4) | (1 << HASH_FIELD_IPV6_L3_L4);
-
-	/* Add this RSS entry to map */
-	err = tap_flow_bpf_update_rss_elem(pmd->map_fd,
-				&flow->key_idx, &rss_entry);
-
-	if (err) {
-		TAP_LOG(ERR,
-			"Failed to update BPF map entry #%u (%d): %s",
-			flow->key_idx, errno, strerror(errno));
-		rte_flow_error_set(
-			error, ENOTSUP, RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
-			"Kernel too old or not configured "
-			"to support BPF maps updates");
-
-		return -ENOTSUP;
-	}
-
-
-	/*
-	 * Load bpf rules to calculate hash for this key_idx
-	 */
-
-	flow->bpf_fd[SEC_L3_L4] =
-		tap_flow_bpf_calc_l3_l4_hash(flow->key_idx, pmd->map_fd);
-	if (flow->bpf_fd[SEC_L3_L4] < 0) {
-		TAP_LOG(ERR,
-			"Failed to load BPF section %s (%d): %s",
-				sec_name[SEC_L3_L4], errno, strerror(errno));
-		rte_flow_error_set(
-			error, ENOTSUP, RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
-			"Kernel too old or not configured "
-			"to support BPF program loading");
-
-		return -ENOTSUP;
-	}
-
-	/* Actions */
-	{
-		struct action_data adata[] = {
-			{
-				.id = "bpf",
-				.bpf = {
-					.bpf_fd = flow->bpf_fd[SEC_L3_L4],
-					.annotation = sec_name[SEC_L3_L4],
-					.bpf = {
-						.action = TC_ACT_PIPE,
-					},
-				},
-			},
-		};
-
-		if (add_actions(flow, RTE_DIM(adata), adata,
-			TCA_FLOWER_ACT) < 0)
-			return -1;
-	}
-
-	return 0;
-}
-
 /**
  * Get rte_flow operations.
  *
diff --git a/drivers/net/tap/tap_flow.h b/drivers/net/tap/tap_flow.h
index 240fbc3dfaef..099704437b2f 100644
--- a/drivers/net/tap/tap_flow.h
+++ b/drivers/net/tap/tap_flow.h
@@ -41,11 +41,6 @@  enum implicit_rule_index {
 	TAP_REMOTE_MAX_IDX,
 };
 
-enum bpf_fd_idx {
-	SEC_L3_L4,
-	SEC_MAX,
-};
-
 int tap_dev_flow_ops_get(struct rte_eth_dev *dev,
 			 const struct rte_flow_ops **ops);
 int tap_flow_flush(struct rte_eth_dev *dev, struct rte_flow_error *error);
@@ -56,11 +51,4 @@  int tap_flow_implicit_destroy(struct pmd_internals *pmd,
 			      enum implicit_rule_index idx);
 int tap_flow_implicit_flush(struct pmd_internals *pmd,
 			    struct rte_flow_error *error);
-
-int tap_flow_bpf_cls_q(__u32 queue_idx);
-int tap_flow_bpf_calc_l3_l4_hash(__u32 key_idx, int map_fd);
-int tap_flow_bpf_rss_map_create(unsigned int key_size, unsigned int value_size,
-			unsigned int max_entries);
-int tap_flow_bpf_update_rss_elem(int fd, void *key, void *value);
-
 #endif /* _TAP_FLOW_H_ */
diff --git a/drivers/net/tap/tap_tcmsgs.h b/drivers/net/tap/tap_tcmsgs.h
index a64cb29d6fa8..4b0413579749 100644
--- a/drivers/net/tap/tap_tcmsgs.h
+++ b/drivers/net/tap/tap_tcmsgs.h
@@ -14,9 +14,6 @@ 
 #include <linux/tc_act/tc_mirred.h>
 #include <linux/tc_act/tc_gact.h>
 #include <linux/tc_act/tc_skbedit.h>
-#ifdef HAVE_TC_ACT_BPF
-#include <linux/tc_act/tc_bpf.h>
-#endif
 #include <inttypes.h>
 
 #include <rte_ether.h>