├── count_min_Vanilla_P4 ├── README.md ├── Makefile ├── run.sh ├── user_config.json ├── hh.p4 └── result.txt ├── bitmap_P4_and_C_Sandbox ├── README.md ├── Makefile ├── run.sh ├── user_config.json ├── plugin.c └── bitmap.p4 ├── count_min_P4_and_C_Sandbox ├── README.md ├── Makefile ├── run.sh ├── user_config.json ├── plugin.c ├── hh.p4 └── result.txt ├── README.md ├── count_min_P4_and_C_Sandbox_with_Lock ├── README.md ├── Makefile ├── run.sh ├── user_config.json ├── plugin.c ├── hh.p4 └── result.txt ├── receive.py └── send.py /count_min_Vanilla_P4/README.md: -------------------------------------------------------------------------------- 1 | This is Count-Min with Vanilla P4 2 | -------------------------------------------------------------------------------- /bitmap_P4_and_C_Sandbox/README.md: -------------------------------------------------------------------------------- 1 | This is Bitmap with P4 and C Sandbox 2 | -------------------------------------------------------------------------------- /count_min_P4_and_C_Sandbox/README.md: -------------------------------------------------------------------------------- 1 | This is Count-Min with P4 and C Sandbox 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | All the TX is done by send.py 2 | 3 | All the RX is done by receive.py 4 | -------------------------------------------------------------------------------- /count_min_P4_and_C_Sandbox_with_Lock/README.md: -------------------------------------------------------------------------------- 1 | This is Count-Min with P4 and C Sandbox with Lock 2 | -------------------------------------------------------------------------------- /receive.py: -------------------------------------------------------------------------------- 1 | from scapy.all import * 2 | 3 | '''Sniff packets on particular port''' 4 | p1=sniff(iface = "veth6", prn = lambda x: hexdump(x)) 5 | 6 | -------------------------------------------------------------------------------- /count_min_Vanilla_P4/Makefile: -------------------------------------------------------------------------------- 1 | build: hh.p4 2 | nfp4build -p out/ -o hh.nffw -r -e -l starfighter1 -4 hh.p4 3 | 4 | clean: 5 | rm -rf *.list *.nffw ./out *.yml *~ Makefile-nfp4build 6 | -------------------------------------------------------------------------------- /count_min_P4_and_C_Sandbox/Makefile: -------------------------------------------------------------------------------- 1 | build: hh.p4 plugin.c 2 | nfp4build -p out/ -o hh.nffw -r -e -l starfighter1 -4 hh.p4 -c plugin.c 3 | 4 | clean: 5 | rm -rf *.list *.nffw ./out *.yml *~ Makefile-nfp4build 6 | -------------------------------------------------------------------------------- /bitmap_P4_and_C_Sandbox/Makefile: -------------------------------------------------------------------------------- 1 | build: bitmap.p4 2 | nfp4build -p out/ -o bitmap.nffw -r -e -l starfighter1 -4 bitmap.p4 -c plugin.c 3 | 4 | 5 | clean: 6 | rm -rf *.list *.nffw ./out *.yml *~ Makefile-nfp4build 7 | -------------------------------------------------------------------------------- /count_min_P4_and_C_Sandbox_with_Lock/Makefile: -------------------------------------------------------------------------------- 1 | build: hh.p4 plugin.c 2 | nfp4build -p out/ -o hh.nffw -r -e -l starfighter1 -4 hh.p4 -c plugin.c 3 | 4 | clean: 5 | rm -rf *.list *.nffw ./out *.yml *~ Makefile-nfp4build 6 | -------------------------------------------------------------------------------- /count_min_Vanilla_P4/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | CTL_SCRIPT=/opt/nfp_pif/scripts/pif_ctl_nfd.sh 3 | FW_FILE=hh.nffw 4 | DESIGN_FILE=./out/pif_design.json 5 | CFG_FILE=user_config.json 6 | pif_rte -n 0 -p 20206 -I -z -s $CTL_SCRIPT -f $FW_FILE -d $DESIGN_FILE -c $CFG_FILE --log_file /var/log/nfp-sdk6-rte.log 7 | -------------------------------------------------------------------------------- /count_min_P4_and_C_Sandbox/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | CTL_SCRIPT=/opt/nfp_pif/scripts/pif_ctl_nfd.sh 3 | FW_FILE=hh.nffw 4 | DESIGN_FILE=./out/pif_design.json 5 | CFG_FILE=user_config.json 6 | pif_rte -n 0 -p 20206 -I -z -s $CTL_SCRIPT -f $FW_FILE -d $DESIGN_FILE -c $CFG_FILE --log_file /var/log/nfp-sdk6-rte.log 7 | -------------------------------------------------------------------------------- /bitmap_P4_and_C_Sandbox/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | CTL_SCRIPT=/opt/nfp_pif/scripts/pif_ctl_nfd.sh 3 | FW_FILE=bitmap.nffw 4 | DESIGN_FILE=./out/pif_design.json 5 | CFG_FILE=user_config.json 6 | pif_rte -n 0 -p 20206 -I -z -s $CTL_SCRIPT -f $FW_FILE -d $DESIGN_FILE -c $CFG_FILE --log_file /var/log/nfp-sdk6-rte.log 7 | -------------------------------------------------------------------------------- /count_min_P4_and_C_Sandbox_with_Lock/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | CTL_SCRIPT=/opt/nfp_pif/scripts/pif_ctl_nfd.sh 3 | FW_FILE=hh.nffw 4 | DESIGN_FILE=./out/pif_design.json 5 | CFG_FILE=user_config.json 6 | pif_rte -n 0 -p 20206 -I -z -s $CTL_SCRIPT -f $FW_FILE -d $DESIGN_FILE -c $CFG_FILE --log_file /var/log/nfp-sdk6-rte.log 7 | -------------------------------------------------------------------------------- /bitmap_P4_and_C_Sandbox/user_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "doc": "Table configurations for bitmap.p4", 3 | "tables" : 4 | { 5 | "forward" : { 6 | "default_rule" : { 7 | "name" : "default", 8 | "action" : { "type" : "do_drop" } 9 | }, 10 | "rules" : [ 11 | { 12 | "name" : "rule_0", 13 | "match" : { 14 | "standard_metadata.ingress_port" : { "value" : "p0" } 15 | }, 16 | "action" : { 17 | "type" : "do_forward", 18 | "data" : { 19 | "port" : { "value" : "v0.0" } 20 | } 21 | } 22 | } 23 | ] 24 | }, 25 | "bitmap_finder" : { 26 | "default_rule" : { 27 | "name" : "default", 28 | "action" : { "type" : "do_bitmap_finder" } 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /send.py: -------------------------------------------------------------------------------- 1 | from scapy.all import * 2 | 3 | p1 = Ether(dst="aa:bb:cc:dd:ee:ff", src="aa:bb:cc:dd:ee:ff") / IP(src="10.0.1.1", dst="10.0.1.10") / TCP() / "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" 4 | p2 = Ether(dst="aa:bb:cc:dd:ee:ff", src="aa:bb:cc:dd:ee:ff") / IP(src="10.0.1.1", dst="10.0.1.20") / TCP() / "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" 5 | p3 = Ether(dst="aa:bb:cc:dd:ee:ff", src="aa:bb:cc:dd:ee:ff") / IP(src="10.0.1.1", dst="10.0.1.30") / TCP() / "cccccccccccccccccccccccccccccccccccccc" 6 | 7 | for i in range(0, 9): 8 | sendp(p1, iface = "veth4") 9 | 10 | for i in range(0, 1): 11 | sendp(p2, iface = "veth4") 12 | 13 | for i in range(0, 13): 14 | sendp(p2, iface = "veth4") 15 | 16 | for i in range(0, 7): 17 | sendp(p3, iface = "veth4") 18 | 19 | 20 | for i in range(0, 10): 21 | sendp(p3, iface = "veth4") 22 | -------------------------------------------------------------------------------- /count_min_P4_and_C_Sandbox/user_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "doc": "Table configurations for hh.p4", 3 | "tables" : 4 | { 5 | "forward" : { 6 | "default_rule" : { 7 | "name" : "default", 8 | "action" : { "type" : "do_drop" } 9 | }, 10 | "rules" : [ 11 | { 12 | "name" : "rule_0", 13 | "match" : { 14 | "standard_metadata.ingress_port" : { "value" : "p0" } 15 | }, 16 | "action" : { 17 | "type" : "do_forward", 18 | "data" : { 19 | "port" : { "value" : "v0.0" } 20 | } 21 | } 22 | }, 23 | { 24 | "name" : "rule_1", 25 | "match" : { 26 | "standard_metadata.ingress_port" : { "value" : "v0.1" } 27 | }, 28 | "action" : { 29 | "type" : "do_forward", 30 | "data" : { 31 | "port" : { "value" : "v0.2" } 32 | } 33 | } 34 | } 35 | ] 36 | }, 37 | "hh_finder" : { 38 | "default_rule" : { 39 | "name" : "default", 40 | "action" : { "type" : "do_hh_finder" } 41 | } 42 | }, 43 | "start_tstamp" : { 44 | "default_rule" : { 45 | "name" : "default", 46 | "action" : { "type" : "do_start_tstamp" } 47 | } 48 | }, 49 | "end_tstamp" : { 50 | "default_rule" : { 51 | "name" : "default", 52 | "action" : { "type" : "do_end_tstamp" } 53 | } 54 | } 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /count_min_P4_and_C_Sandbox_with_Lock/user_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "doc": "Table configurations for hh.p4", 3 | "tables" : 4 | { 5 | "forward" : { 6 | "default_rule" : { 7 | "name" : "default", 8 | "action" : { "type" : "do_drop" } 9 | }, 10 | "rules" : [ 11 | { 12 | "name" : "rule_0", 13 | "match" : { 14 | "standard_metadata.ingress_port" : { "value" : "p0" } 15 | }, 16 | "action" : { 17 | "type" : "do_forward", 18 | "data" : { 19 | "port" : { "value" : "v0.0" } 20 | } 21 | } 22 | }, 23 | { 24 | "name" : "rule_1", 25 | "match" : { 26 | "standard_metadata.ingress_port" : { "value" : "v0.1" } 27 | }, 28 | "action" : { 29 | "type" : "do_forward", 30 | "data" : { 31 | "port" : { "value" : "v0.2" } 32 | } 33 | } 34 | } 35 | ] 36 | }, 37 | "hh_finder" : { 38 | "default_rule" : { 39 | "name" : "default", 40 | "action" : { "type" : "do_hh_finder" } 41 | } 42 | }, 43 | "start_tstamp" : { 44 | "default_rule" : { 45 | "name" : "default", 46 | "action" : { "type" : "do_start_tstamp" } 47 | } 48 | }, 49 | "end_tstamp" : { 50 | "default_rule" : { 51 | "name" : "default", 52 | "action" : { "type" : "do_end_tstamp" } 53 | } 54 | } 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /count_min_Vanilla_P4/user_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "doc": "Table configurations for hh.p4", 3 | "tables" : 4 | { 5 | "forward" : { 6 | "default_rule" : { 7 | "name" : "default", 8 | "action" : { "type" : "do_drop" } 9 | }, 10 | "rules" : [ 11 | { 12 | "name" : "rule_0", 13 | "match" : { 14 | "standard_metadata.ingress_port" : { "value" : "p0" } 15 | }, 16 | "action" : { 17 | "type" : "do_forward", 18 | "data" : { 19 | "port" : { "value" : "v0.0" } 20 | } 21 | } 22 | }, 23 | { 24 | "name" : "rule_1", 25 | "match" : { 26 | "standard_metadata.ingress_port" : { "value" : "v0.1" } 27 | }, 28 | "action" : { 29 | "type" : "do_forward", 30 | "data" : { 31 | "port" : { "value" : "v0.2" } 32 | } 33 | } 34 | } 35 | ] 36 | }, 37 | "update_cm" : { 38 | "default_rule" : { 39 | "name" : "default", 40 | "action" : { "type" : "do_update_cm" } 41 | } 42 | }, 43 | "find_min1" : { 44 | "default_rule" : { 45 | "name" : "default", 46 | "action" : { "type" : "do_find_min1" } 47 | } 48 | }, 49 | "find_min2" : { 50 | "default_rule" : { 51 | "name" : "default", 52 | "action" : { "type" : "do_find_min2" } 53 | } 54 | }, 55 | "find_min3" : { 56 | "default_rule" : { 57 | "name" : "default", 58 | "action" : { "type" : "do_find_min3" } 59 | } 60 | }, 61 | "read_hh" : { 62 | "default_rule" : { 63 | "name" : "default", 64 | "action" : { "type" : "do_read_hh" } 65 | } 66 | }, 67 | "update_hh" : { 68 | "default_rule" : { 69 | "name" : "default", 70 | "action" : { "type" : "do_update_hh" } 71 | } 72 | }, 73 | "hh_encap" : { 74 | "default_rule" : { 75 | "name" : "default", 76 | "action" : { "type" : "do_hh_encap" } 77 | } 78 | }, 79 | "start_tstamp" : { 80 | "default_rule" : { 81 | "name" : "default", 82 | "action" : { "type" : "do_start_tstamp" } 83 | } 84 | }, 85 | "end_tstamp" : { 86 | "default_rule" : { 87 | "name" : "default", 88 | "action" : { "type" : "do_end_tstamp" } 89 | } 90 | } 91 | } 92 | 93 | } 94 | -------------------------------------------------------------------------------- /bitmap_P4_and_C_Sandbox/plugin.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017, ACANETS LAB, University of Massachusetts Lowell 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | //============================================================================================================= 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include "pif_plugin.h" 23 | //============================================================================================================= 24 | #define BITMAP_COLUMN_COUNT 128 25 | #define BITMAP_COLUMN_COUNT_MASK (BITMAP_COLUMN_COUNT-1) 26 | struct Bitmap { 27 | uint32_t count; 28 | }; 29 | __export __mem static struct Bitmap bitmap; //atomic? only 1 ME? 30 | __export __mem static int32_t sketch[BITMAP_COLUMN_COUNT]; //atomic? only 1 ME? 31 | //============================================================================================================= 32 | uint32_t hash_func1(uint32_t srcAddr, uint32_t dstAddr) 33 | { 34 | return (srcAddr ^ dstAddr) & BITMAP_COLUMN_COUNT_MASK; 35 | } 36 | //============================================================================================================= 37 | int pif_plugin_primitive_bitmap_finder(EXTRACTED_HEADERS_T *headers, MATCH_DATA_T *match_data) 38 | { 39 | //update sketch 40 | uint32_t i; 41 | __xread struct Bitmap in_xfer_bitmap; 42 | __gpr struct Bitmap out_reg_bitmap; 43 | __xwrite struct Bitmap out_xfer_bitmap; 44 | PIF_PLUGIN_ipv4_T *ipv4_header = pif_plugin_hdr_get_ipv4(headers); 45 | uint32_t srcAddr = PIF_HEADER_GET_ipv4___srcAddr(ipv4_header); 46 | uint32_t dstAddr = PIF_HEADER_GET_ipv4___dstAddr(ipv4_header); 47 | uint32_t hv0 = hash_func1(srcAddr, dstAddr); 48 | 49 | __xread uint32_t in_xfer_sketch; 50 | __gpr uint32_t out_reg_sketch; 51 | __gpr uint32_t count_reg_sketch = 0; 52 | __xwrite uint32_t out_xfer_sketch; 53 | 54 | mem_read32(&in_xfer_sketch, &sketch[hv0], sizeof(uint32_t)); 55 | out_reg_sketch = in_xfer_sketch; 56 | if(out_reg_sketch == 0) 57 | { 58 | out_reg_sketch = 1; 59 | out_xfer_sketch = out_reg_sketch; 60 | mem_write32(&out_xfer_sketch, &sketch[hv0], sizeof(uint32_t)); 61 | } 62 | 63 | //count how many 1s 64 | for(i=0; i 19 | #include 20 | #include 21 | #include 22 | #include "pif_plugin.h" 23 | //============================================================================================================= 24 | #define SKETCH_COLUMN_COUNT 128 25 | #define SKETCH_COLUMN_COUNT_MASK (SKETCH_COLUMN_COUNT-1) 26 | struct Heavy_Hitter { 27 | uint32_t srcAddr; 28 | uint32_t dstAddr; 29 | uint32_t count; 30 | }; 31 | __export __mem static struct Heavy_Hitter heavy_hitter; 32 | __export __mem static int32_t sketch[3][SKETCH_COLUMN_COUNT]; 33 | //============================================================================================================= 34 | uint32_t hash_func1(uint32_t srcAddr, uint32_t dstAddr) 35 | { 36 | return (srcAddr ^ dstAddr) & SKETCH_COLUMN_COUNT_MASK; 37 | } 38 | 39 | uint32_t hash_func2(uint32_t srcAddr, uint32_t dstAddr) 40 | { 41 | return (srcAddr | dstAddr) & SKETCH_COLUMN_COUNT_MASK; 42 | } 43 | 44 | uint32_t hash_func3(uint32_t srcAddr, uint32_t dstAddr) 45 | { 46 | return (srcAddr & dstAddr) & SKETCH_COLUMN_COUNT_MASK; 47 | } 48 | //============================================================================================================= 49 | int pif_plugin_primitive_hh_finder(EXTRACTED_HEADERS_T *headers, MATCH_DATA_T *match_data) 50 | { 51 | 52 | //update sketch 53 | __xread uint32_t in_xfer_sketch; 54 | __gpr uint32_t out_reg_sketch0, out_reg_sketch1, out_reg_sketch2, out_reg_sketch_min; 55 | __xwrite uint32_t out_xfer_sketch; 56 | __xread struct Heavy_Hitter in_xfer_hh; 57 | __gpr struct Heavy_Hitter out_reg_hh; 58 | __xwrite struct Heavy_Hitter out_xfer_hh; 59 | 60 | PIF_PLUGIN_ipv4_T *ipv4_header = pif_plugin_hdr_get_ipv4(headers); 61 | uint32_t srcAddr = PIF_HEADER_GET_ipv4___srcAddr(ipv4_header); 62 | uint32_t dstAddr = PIF_HEADER_GET_ipv4___dstAddr(ipv4_header); 63 | uint32_t hv0 = hash_func1(srcAddr, dstAddr); 64 | uint32_t hv1 = hash_func2(srcAddr, dstAddr); 65 | uint32_t hv2 = hash_func3(srcAddr, dstAddr); 66 | 67 | 68 | mem_read_atomic(&in_xfer_sketch, &sketch[0][hv0], sizeof(uint32_t)); 69 | out_reg_sketch0 = in_xfer_sketch; 70 | out_reg_sketch0 += 1; 71 | out_xfer_sketch = out_reg_sketch0; 72 | mem_write_atomic(&out_xfer_sketch, &sketch[0][hv0], sizeof(uint32_t)); 73 | 74 | 75 | mem_read_atomic(&in_xfer_sketch, &sketch[1][hv1], sizeof(uint32_t)); 76 | out_reg_sketch1 = in_xfer_sketch; 77 | out_reg_sketch1 += 1; 78 | out_xfer_sketch = out_reg_sketch1; 79 | mem_write_atomic(&out_xfer_sketch, &sketch[1][hv1], sizeof(uint32_t)); 80 | 81 | 82 | mem_read_atomic(&in_xfer_sketch, &sketch[2][hv2], sizeof(uint32_t)); 83 | out_reg_sketch2 = in_xfer_sketch; 84 | out_reg_sketch2 += 1; 85 | out_xfer_sketch = out_reg_sketch2; 86 | mem_write_atomic(&out_xfer_sketch, &sketch[2][hv2], sizeof(uint32_t)); 87 | 88 | 89 | out_reg_sketch_min = out_reg_sketch0; 90 | if(out_reg_sketch_min > out_reg_sketch1) { out_reg_sketch_min = out_reg_sketch1; } 91 | if(out_reg_sketch_min > out_reg_sketch2) { out_reg_sketch_min = out_reg_sketch2; } 92 | 93 | 94 | //update heavy hitter 95 | mem_read_atomic(&in_xfer_hh, &heavy_hitter, sizeof(struct Heavy_Hitter)); 96 | out_reg_hh = in_xfer_hh; 97 | if(out_reg_hh.count < out_reg_sketch_min) 98 | { 99 | out_reg_hh.count = out_reg_sketch_min; 100 | out_reg_hh.srcAddr = srcAddr; 101 | out_reg_hh.dstAddr = dstAddr; 102 | 103 | out_xfer_hh = out_reg_hh; 104 | mem_write_atomic(&out_xfer_hh, &heavy_hitter, sizeof(struct Heavy_Hitter)); 105 | } 106 | 107 | pif_plugin_meta_set__hh_report_meta__srcAddr(headers, heavy_hitter.srcAddr); //do they have pif_plugin_header_set? 108 | pif_plugin_meta_set__hh_report_meta__dstAddr(headers, heavy_hitter.dstAddr); 109 | pif_plugin_meta_set__hh_report_meta__hh_count(headers, heavy_hitter.count); 110 | 111 | return PIF_PLUGIN_RETURN_FORWARD; 112 | } 113 | -------------------------------------------------------------------------------- /count_min_P4_and_C_Sandbox_with_Lock/plugin.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017, ACANETS LAB, University of Massachusetts Lowell 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | //============================================================================================================= 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include "pif_plugin.h" 23 | //============================================================================================================= 24 | #define SKETCH_COLUMN_COUNT 128 25 | #define SKETCH_COLUMN_COUNT_MASK (SKETCH_COLUMN_COUNT-1) 26 | struct Heavy_Hitter { 27 | uint32_t srcAddr; 28 | uint32_t dstAddr; 29 | uint32_t count; 30 | }; 31 | __export __mem static struct Heavy_Hitter heavy_hitter; 32 | __export __mem static int32_t sketch[3][SKETCH_COLUMN_COUNT]; 33 | __export __mem uint32_t lock = 0; 34 | //============================================================================================================= 35 | uint32_t hash_func1(uint32_t srcAddr, uint32_t dstAddr) 36 | { 37 | return (srcAddr ^ dstAddr) & SKETCH_COLUMN_COUNT_MASK; 38 | } 39 | 40 | uint32_t hash_func2(uint32_t srcAddr, uint32_t dstAddr) 41 | { 42 | return (srcAddr | dstAddr) & SKETCH_COLUMN_COUNT_MASK; 43 | } 44 | 45 | uint32_t hash_func3(uint32_t srcAddr, uint32_t dstAddr) 46 | { 47 | return (srcAddr & dstAddr) & SKETCH_COLUMN_COUNT_MASK; 48 | } 49 | //============================================================================================================= 50 | int pif_plugin_primitive_hh_finder(EXTRACTED_HEADERS_T *headers, MATCH_DATA_T *match_data) 51 | { 52 | __xread uint32_t in_xfer_sketch; 53 | __gpr uint32_t out_reg_sketch0, out_reg_sketch1, out_reg_sketch2, out_reg_sketch_min; 54 | __xwrite uint32_t out_xfer_sketch; 55 | __xread struct Heavy_Hitter in_xfer_hh; 56 | __gpr struct Heavy_Hitter out_reg_hh; 57 | __xwrite struct Heavy_Hitter out_xfer_hh; 58 | uint32_t srcAddr, dstAddr, hv0, hv1, hv2; 59 | PIF_PLUGIN_ipv4_T *ipv4_header; 60 | 61 | __xwrite uint32_t xfer_out = 0; 62 | __xrw uint32_t xfer = 1; 63 | mem_test_set(&xfer, &lock, sizeof(uint32_t)); 64 | while(xfer == 1) 65 | { 66 | mem_test_set(&xfer, &lock, sizeof(uint32_t)); 67 | } 68 | //update sketch 69 | 70 | 71 | ipv4_header = pif_plugin_hdr_get_ipv4(headers); 72 | srcAddr = PIF_HEADER_GET_ipv4___srcAddr(ipv4_header); 73 | dstAddr = PIF_HEADER_GET_ipv4___dstAddr(ipv4_header); 74 | hv0 = hash_func1(srcAddr, dstAddr); 75 | hv1 = hash_func2(srcAddr, dstAddr); 76 | hv2 = hash_func3(srcAddr, dstAddr); 77 | 78 | 79 | 80 | mem_read32(&in_xfer_sketch, &sketch[0][hv0], sizeof(uint32_t)); 81 | out_reg_sketch0 = in_xfer_sketch; 82 | out_reg_sketch0 += 1; 83 | out_xfer_sketch = out_reg_sketch0; 84 | mem_write32(&out_xfer_sketch, &sketch[0][hv0], sizeof(uint32_t)); 85 | 86 | 87 | mem_read32(&in_xfer_sketch, &sketch[1][hv1], sizeof(uint32_t)); 88 | out_reg_sketch1 = in_xfer_sketch; 89 | out_reg_sketch1 += 1; 90 | out_xfer_sketch = out_reg_sketch1; 91 | mem_write32(&out_xfer_sketch, &sketch[1][hv1], sizeof(uint32_t)); 92 | 93 | 94 | mem_read32(&in_xfer_sketch, &sketch[2][hv2], sizeof(uint32_t)); 95 | out_reg_sketch2 = in_xfer_sketch; 96 | out_reg_sketch2 += 1; 97 | out_xfer_sketch = out_reg_sketch2; 98 | mem_write32(&out_xfer_sketch, &sketch[2][hv2], sizeof(uint32_t)); 99 | 100 | 101 | out_reg_sketch_min = out_reg_sketch0; 102 | if(out_reg_sketch_min > out_reg_sketch1) { out_reg_sketch_min = out_reg_sketch1; } 103 | if(out_reg_sketch_min > out_reg_sketch2) { out_reg_sketch_min = out_reg_sketch2; } 104 | 105 | 106 | //update heavy hitter 107 | mem_read32(&in_xfer_hh, &heavy_hitter, sizeof(struct Heavy_Hitter)); 108 | out_reg_hh = in_xfer_hh; 109 | if(out_reg_hh.count < out_reg_sketch_min) 110 | { 111 | out_reg_hh.count = out_reg_sketch_min; 112 | out_reg_hh.srcAddr = srcAddr; 113 | out_reg_hh.dstAddr = dstAddr; 114 | 115 | out_xfer_hh = out_reg_hh; 116 | mem_write32(&out_xfer_hh, &heavy_hitter, sizeof(struct Heavy_Hitter)); 117 | } 118 | 119 | pif_plugin_meta_set__hh_report_meta__srcAddr(headers, heavy_hitter.srcAddr); //do they have pif_plugin_header_set? 120 | pif_plugin_meta_set__hh_report_meta__dstAddr(headers, heavy_hitter.dstAddr); 121 | pif_plugin_meta_set__hh_report_meta__hh_count(headers, heavy_hitter.count); 122 | 123 | mem_write32(&xfer_out, &lock, sizeof(uint32_t)); 124 | return PIF_PLUGIN_RETURN_FORWARD; 125 | } 126 | -------------------------------------------------------------------------------- /bitmap_P4_and_C_Sandbox/bitmap.p4: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017, ACANETS LAB, University of Massachusetts Lowell 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | #define ETHERTYPE_IPV4 0x0800 19 | #define TCP_PROTO 0x06 20 | #define UDP_PROTO 0x11 21 | 22 | //========================================================================================================== 23 | //Header 24 | //========================================================================================================== 25 | header_type ethernet_t { 26 | fields { 27 | dstAddr : 48; 28 | srcAddr : 48; 29 | etherType : 16; 30 | } 31 | } 32 | header ethernet_t ethernet; 33 | //========================================================================================================== 34 | header_type ipv4_t { 35 | fields { 36 | version : 4; 37 | ihl : 4; 38 | diffserv : 8; 39 | totalLen : 16; 40 | identification : 16; 41 | flags : 3; 42 | fragOffset : 13; 43 | ttl : 8; 44 | protocol : 8; 45 | hdrChecksum : 16; 46 | srcAddr : 32; 47 | dstAddr : 32; 48 | } 49 | } 50 | header ipv4_t ipv4; 51 | //========================================================================================================== 52 | header_type tcp_t { 53 | fields { 54 | srcPort : 16; 55 | dstPort : 16; 56 | seqNo : 32; 57 | ackNo : 32; 58 | dataOffset : 4; 59 | res : 4; 60 | flags : 8; 61 | window : 16; 62 | checksum : 16; 63 | urgentPtr : 16; 64 | } 65 | } 66 | header tcp_t tcp; 67 | //========================================================================================================== 68 | header_type udp_t { 69 | fields { 70 | srcPort : 16; 71 | dstPort : 16; 72 | udplen : 16; 73 | udpchk : 16; 74 | } 75 | } 76 | header udp_t udp; 77 | //========================================================================================================== 78 | header_type bitmap_report_t { 79 | fields { 80 | device : 16; 81 | reason : 16; 82 | bitmap_count : 32; 83 | } 84 | } 85 | header bitmap_report_t bitmap_report; 86 | metadata bitmap_report_t bitmap_report_meta; 87 | //========================================================================================================== 88 | //Parser 89 | //========================================================================================================== 90 | parser start { 91 | return parse_ethernet; 92 | } 93 | 94 | parser parse_ethernet { 95 | extract(ethernet); 96 | return select(latest.etherType) { 97 | ETHERTYPE_IPV4 : parse_ipv4; 98 | //No default, so drop it if not ipv4 packet 99 | } 100 | } 101 | 102 | parser parse_ipv4 { 103 | extract(ipv4); 104 | return select(latest.protocol) { 105 | TCP_PROTO : parse_tcp; 106 | UDP_PROTO : parse_udp; 107 | //No default, so drop it if not tcp or udp 108 | } 109 | } 110 | 111 | parser parse_tcp { 112 | extract(tcp); 113 | return parse_bitmap_report; 114 | } 115 | 116 | parser parse_udp { 117 | extract(udp); 118 | return parse_bitmap_report; 119 | } 120 | 121 | parser parse_bitmap_report 122 | { 123 | extract(bitmap_report); 124 | return ingress; 125 | } 126 | 127 | //========================================================================================================== 128 | //Ingress 129 | //========================================================================================================== 130 | primitive_action primitive_bitmap_finder(); 131 | action do_bitmap_finder() { 132 | primitive_bitmap_finder(); 133 | //add_header(bitmap_report); //we alreay assume that the received packet has the header bitmap_report 134 | modify_field(bitmap_report.device, 0xffff); 135 | modify_field(bitmap_report.reason, 0xffff); 136 | modify_field(bitmap_report.bitmap_count, bitmap_report_meta.bitmap_count); 137 | } 138 | 139 | table bitmap_finder { 140 | actions { 141 | do_bitmap_finder; 142 | } 143 | } 144 | //========================================================================================================== 145 | action do_forward(port) { 146 | modify_field(standard_metadata.egress_spec, port); 147 | } 148 | 149 | action do_drop() 150 | { 151 | drop(); 152 | } 153 | 154 | table forward { 155 | reads { 156 | standard_metadata.ingress_port : exact; 157 | } 158 | actions { 159 | do_forward; 160 | do_drop; 161 | } 162 | } 163 | //========================================================================================================== 164 | control ingress { 165 | apply(bitmap_finder); 166 | apply(forward); 167 | } 168 | 169 | //========================================================================================================== 170 | //Egress 171 | //========================================================================================================== 172 | 173 | -------------------------------------------------------------------------------- /count_min_P4_and_C_Sandbox/hh.p4: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017, ACANETS LAB, University of Massachusetts Lowell 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | #define ETHERTYPE_IPV4 0x0800 19 | #define TCP_PROTO 0x06 20 | #define UDP_PROTO 0x11 21 | 22 | //========================================================================================================== 23 | //Header 24 | //========================================================================================================== 25 | header_type ethernet_t { 26 | fields { 27 | dstAddr : 48; 28 | srcAddr : 48; 29 | etherType : 16; 30 | } 31 | } 32 | header ethernet_t ethernet; 33 | //========================================================================================================== 34 | header_type ipv4_t { 35 | fields { 36 | version : 4; 37 | ihl : 4; 38 | diffserv : 8; 39 | totalLen : 16; 40 | identification : 16; 41 | flags : 3; 42 | fragOffset : 13; 43 | ttl : 8; 44 | protocol : 8; 45 | hdrChecksum : 16; 46 | srcAddr : 32; 47 | dstAddr : 32; 48 | } 49 | } 50 | header ipv4_t ipv4; 51 | //========================================================================================================== 52 | header_type tcp_t { 53 | fields { 54 | srcPort : 16; 55 | dstPort : 16; 56 | seqNo : 32; 57 | ackNo : 32; 58 | dataOffset : 4; 59 | res : 4; 60 | flags : 8; 61 | window : 16; 62 | checksum : 16; 63 | urgentPtr : 16; 64 | } 65 | } 66 | header tcp_t tcp; 67 | //========================================================================================================== 68 | header_type udp_t { 69 | fields { 70 | srcPort : 16; 71 | dstPort : 16; 72 | udplen : 16; 73 | udpchk : 16; 74 | } 75 | } 76 | header udp_t udp; 77 | //========================================================================================================== 78 | header_type hh_report_t { 79 | fields { 80 | device : 16; 81 | reason : 16; 82 | in_time : 32; 83 | srcAddr : 32; 84 | dstAddr : 32; 85 | hh_count : 32; 86 | out_time : 32; 87 | } 88 | } 89 | header hh_report_t hh_report; 90 | metadata hh_report_t hh_report_meta; 91 | //========================================================================================================== 92 | header_type intrinsic_metadata_t { 93 | fields { 94 | ingress_global_tstamp : 32; 95 | } 96 | } 97 | metadata intrinsic_metadata_t intrinsic_metadata; 98 | //========================================================================================================== 99 | //Parser 100 | //========================================================================================================== 101 | parser start { 102 | return parse_ethernet; 103 | } 104 | 105 | parser parse_ethernet { 106 | extract(ethernet); 107 | return select(latest.etherType) { 108 | ETHERTYPE_IPV4 : parse_ipv4; 109 | //No default, so drop it if not ipv4 packet 110 | } 111 | } 112 | 113 | parser parse_ipv4 { 114 | extract(ipv4); 115 | return select(latest.protocol) { 116 | TCP_PROTO : parse_tcp; 117 | UDP_PROTO : parse_udp; 118 | //No default, so drop it if not tcp or udp 119 | } 120 | } 121 | 122 | parser parse_tcp { 123 | extract(tcp); 124 | return parse_hh_report; 125 | } 126 | 127 | parser parse_udp { 128 | extract(udp); 129 | return parse_hh_report; 130 | } 131 | 132 | parser parse_hh_report 133 | { 134 | extract(hh_report); 135 | return ingress; 136 | } 137 | //========================================================================================================== 138 | //Ingress 139 | //========================================================================================================== 140 | primitive_action primitive_hh_finder(); 141 | action do_hh_finder() { 142 | primitive_hh_finder(); 143 | //add_header(hh_report); //we alreay assume that the received packet has the header hh_report 144 | modify_field(hh_report.device, 0xffff); 145 | modify_field(hh_report.reason, 0xffff); 146 | modify_field(hh_report.srcAddr, hh_report_meta.srcAddr); 147 | modify_field(hh_report.dstAddr, hh_report_meta.dstAddr); 148 | modify_field(hh_report.hh_count, hh_report_meta.hh_count); 149 | } 150 | @pragma netro no_lookup_caching do_hh_finder; 151 | table hh_finder { 152 | actions { 153 | do_hh_finder; 154 | } 155 | } 156 | //========================================================================================================== 157 | action do_forward(port) { 158 | modify_field(standard_metadata.egress_spec, port); 159 | } 160 | 161 | action do_drop() 162 | { 163 | drop(); 164 | } 165 | 166 | table forward { 167 | reads { 168 | standard_metadata.ingress_port : exact; 169 | } 170 | actions { 171 | do_forward; 172 | do_drop; 173 | } 174 | } 175 | //========================================================================================================== 176 | action do_start_tstamp() 177 | { 178 | modify_field(hh_report.in_time, intrinsic_metadata.ingress_global_tstamp); 179 | } 180 | // 181 | table start_tstamp 182 | { 183 | actions 184 | { 185 | do_start_tstamp; 186 | } 187 | } 188 | //========================================================================================================== 189 | action do_end_tstamp() 190 | { 191 | modify_field(hh_report.out_time, intrinsic_metadata.ingress_global_tstamp); 192 | } 193 | // 194 | table end_tstamp 195 | { 196 | actions 197 | { 198 | do_end_tstamp; 199 | } 200 | } 201 | //========================================================================================================== 202 | control ingress { 203 | apply(forward); 204 | if(hh_report.device != 0xffff) 205 | { 206 | apply(start_tstamp); 207 | apply(hh_finder); 208 | } 209 | else 210 | { 211 | apply(end_tstamp); 212 | } 213 | 214 | } 215 | 216 | //========================================================================================================== 217 | //Egress 218 | //========================================================================================================== 219 | -------------------------------------------------------------------------------- /count_min_P4_and_C_Sandbox_with_Lock/hh.p4: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017, ACANETS LAB, University of Massachusetts Lowell 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | #define ETHERTYPE_IPV4 0x0800 19 | #define TCP_PROTO 0x06 20 | #define UDP_PROTO 0x11 21 | 22 | //========================================================================================================== 23 | //Header 24 | //========================================================================================================== 25 | header_type ethernet_t { 26 | fields { 27 | dstAddr : 48; 28 | srcAddr : 48; 29 | etherType : 16; 30 | } 31 | } 32 | header ethernet_t ethernet; 33 | //========================================================================================================== 34 | header_type ipv4_t { 35 | fields { 36 | version : 4; 37 | ihl : 4; 38 | diffserv : 8; 39 | totalLen : 16; 40 | identification : 16; 41 | flags : 3; 42 | fragOffset : 13; 43 | ttl : 8; 44 | protocol : 8; 45 | hdrChecksum : 16; 46 | srcAddr : 32; 47 | dstAddr : 32; 48 | } 49 | } 50 | header ipv4_t ipv4; 51 | //========================================================================================================== 52 | header_type tcp_t { 53 | fields { 54 | srcPort : 16; 55 | dstPort : 16; 56 | seqNo : 32; 57 | ackNo : 32; 58 | dataOffset : 4; 59 | res : 4; 60 | flags : 8; 61 | window : 16; 62 | checksum : 16; 63 | urgentPtr : 16; 64 | } 65 | } 66 | header tcp_t tcp; 67 | //========================================================================================================== 68 | header_type udp_t { 69 | fields { 70 | srcPort : 16; 71 | dstPort : 16; 72 | udplen : 16; 73 | udpchk : 16; 74 | } 75 | } 76 | header udp_t udp; 77 | //========================================================================================================== 78 | header_type hh_report_t { 79 | fields { 80 | device : 16; 81 | reason : 16; 82 | in_time : 32; 83 | srcAddr : 32; 84 | dstAddr : 32; 85 | hh_count : 32; 86 | out_time : 32; 87 | } 88 | } 89 | header hh_report_t hh_report; 90 | metadata hh_report_t hh_report_meta; 91 | //========================================================================================================== 92 | header_type intrinsic_metadata_t { 93 | fields { 94 | ingress_global_tstamp : 32; 95 | } 96 | } 97 | metadata intrinsic_metadata_t intrinsic_metadata; 98 | //========================================================================================================== 99 | //Parser 100 | //========================================================================================================== 101 | parser start { 102 | return parse_ethernet; 103 | } 104 | 105 | parser parse_ethernet { 106 | extract(ethernet); 107 | return select(latest.etherType) { 108 | ETHERTYPE_IPV4 : parse_ipv4; 109 | //No default, so drop it if not ipv4 packet 110 | } 111 | } 112 | 113 | parser parse_ipv4 { 114 | extract(ipv4); 115 | return select(latest.protocol) { 116 | TCP_PROTO : parse_tcp; 117 | UDP_PROTO : parse_udp; 118 | //No default, so drop it if not tcp or udp 119 | } 120 | } 121 | 122 | parser parse_tcp { 123 | extract(tcp); 124 | return parse_hh_report; 125 | } 126 | 127 | parser parse_udp { 128 | extract(udp); 129 | return parse_hh_report; 130 | } 131 | 132 | parser parse_hh_report 133 | { 134 | extract(hh_report); 135 | return ingress; 136 | } 137 | //========================================================================================================== 138 | //Ingress 139 | //========================================================================================================== 140 | primitive_action primitive_hh_finder(); 141 | action do_hh_finder() { 142 | primitive_hh_finder(); 143 | //add_header(hh_report); //we alreay assume that the received packet has the header hh_report 144 | modify_field(hh_report.device, 0xffff); 145 | modify_field(hh_report.reason, 0xffff); 146 | modify_field(hh_report.srcAddr, hh_report_meta.srcAddr); 147 | modify_field(hh_report.dstAddr, hh_report_meta.dstAddr); 148 | modify_field(hh_report.hh_count, hh_report_meta.hh_count); 149 | } 150 | @pragma netro no_lookup_caching do_hh_finder; 151 | table hh_finder { 152 | actions { 153 | do_hh_finder; 154 | } 155 | } 156 | //========================================================================================================== 157 | action do_forward(port) { 158 | modify_field(standard_metadata.egress_spec, port); 159 | } 160 | 161 | action do_drop() 162 | { 163 | drop(); 164 | } 165 | 166 | table forward { 167 | reads { 168 | standard_metadata.ingress_port : exact; 169 | } 170 | actions { 171 | do_forward; 172 | do_drop; 173 | } 174 | } 175 | //========================================================================================================== 176 | action do_start_tstamp() 177 | { 178 | modify_field(hh_report.in_time, intrinsic_metadata.ingress_global_tstamp); 179 | } 180 | // 181 | table start_tstamp 182 | { 183 | actions 184 | { 185 | do_start_tstamp; 186 | } 187 | } 188 | //========================================================================================================== 189 | action do_end_tstamp() 190 | { 191 | modify_field(hh_report.out_time, intrinsic_metadata.ingress_global_tstamp); 192 | } 193 | // 194 | table end_tstamp 195 | { 196 | actions 197 | { 198 | do_end_tstamp; 199 | } 200 | } 201 | //========================================================================================================== 202 | control ingress { 203 | apply(forward); 204 | if(hh_report.device != 0xffff) 205 | { 206 | apply(start_tstamp); 207 | apply(hh_finder); 208 | } 209 | else 210 | { 211 | apply(end_tstamp); 212 | } 213 | 214 | } 215 | 216 | //========================================================================================================== 217 | //Egress 218 | //========================================================================================================== 219 | -------------------------------------------------------------------------------- /count_min_Vanilla_P4/hh.p4: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017, ACANETS LAB, University of Massachusetts Lowell 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | #define ETHERTYPE_IPV4 0x0800 19 | #define TCP_PROTO 0x06 20 | #define UDP_PROTO 0x11 21 | #define CM_ROW_ELEM_COUNT 8 //NOTE: The following hash value has 16 bit 22 | //========================================================================================================== 23 | //Header 24 | //========================================================================================================== 25 | header_type ethernet_t { 26 | fields { 27 | dstAddr : 48; 28 | srcAddr : 48; 29 | etherType : 16; 30 | } 31 | } 32 | header ethernet_t ethernet; 33 | //========================================================================================================== 34 | header_type ipv4_t { 35 | fields { 36 | version : 4; 37 | ihl : 4; 38 | diffserv : 8; 39 | totalLen : 16; 40 | identification : 16; 41 | flags : 3; 42 | fragOffset : 13; 43 | ttl : 8; 44 | protocol : 8; 45 | hdrChecksum : 16; 46 | srcAddr : 32; 47 | dstAddr : 32; 48 | } 49 | } 50 | header ipv4_t ipv4; 51 | //========================================================================================================== 52 | header_type tcp_t { 53 | fields { 54 | srcPort : 16; 55 | dstPort : 16; 56 | seqNo : 32; 57 | ackNo : 32; 58 | dataOffset : 4; 59 | res : 4; 60 | flags : 8; 61 | window : 16; 62 | checksum : 16; 63 | urgentPtr : 16; 64 | } 65 | } 66 | header tcp_t tcp; 67 | //========================================================================================================== 68 | header_type udp_t { 69 | fields { 70 | srcPort : 16; 71 | dstPort : 16; 72 | udplen : 16; 73 | udpchk : 16; 74 | } 75 | } 76 | header udp_t udp; 77 | //========================================================================================================== 78 | header_type hh_report_t { 79 | fields { 80 | device : 16; 81 | reason : 16; 82 | in_time : 32; 83 | srcAddr : 32; 84 | dstAddr : 32; 85 | hh_count : 32; 86 | out_time : 32; 87 | } 88 | } 89 | header hh_report_t hh_report; 90 | //========================================================================================================== 91 | //Hash Functions 92 | //========================================================================================================== 93 | field_list hashvalue_list1 94 | { 95 | ipv4.srcAddr; 96 | ipv4.dstAddr; 97 | } 98 | // 99 | field_list hashvalue_list2 100 | { 101 | ipv4.srcAddr; 102 | ipv4.dstAddr; 103 | ipv4.version; 104 | ipv4.ihl; 105 | ipv4.diffserv; 106 | ipv4.totalLen; 107 | ipv4.protocol; 108 | } 109 | // 110 | field_list hashvalue_list3 111 | { 112 | ipv4.srcAddr; 113 | ipv4.dstAddr; 114 | ipv4.totalLen; 115 | ipv4.protocol; 116 | } 117 | // 118 | field_list_calculation ipv4_hash1 119 | { 120 | input { hashvalue_list1; } 121 | algorithm : crc16; 122 | output_width : 16; 123 | } 124 | // 125 | field_list_calculation ipv4_hash2 { 126 | input { hashvalue_list2; } 127 | algorithm : csum16; 128 | output_width : 16; 129 | } 130 | // 131 | field_list_calculation ipv4_hash3 { 132 | input { hashvalue_list3; } 133 | algorithm : csum16; 134 | output_width : 16; 135 | } 136 | //========================================================================================================== 137 | //Sketch Data 138 | //========================================================================================================== 139 | register r1 { width : 32; instance_count : CM_ROW_ELEM_COUNT; } 140 | register r2 { width : 32; instance_count : CM_ROW_ELEM_COUNT; } 141 | register r3 { width : 32; instance_count : CM_ROW_ELEM_COUNT; } 142 | register hh_r { width : 32; instance_count: 3; } //0: srcAddr, 1: dstAddr, 2: count 143 | 144 | @pragma netro reglocked r1; 145 | @pragma netro reglocked r2; 146 | @pragma netro reglocked r3; 147 | @pragma netro reglocked hh_r; 148 | // 149 | header_type counter_table_metadata_t 150 | { 151 | fields 152 | { 153 | h_v1 : 16; 154 | count1 : 32; 155 | h_v2 : 16; 156 | count2 : 32; 157 | h_v3 : 16; 158 | count3 : 32; 159 | count_min : 32; 160 | } 161 | } 162 | metadata counter_table_metadata_t counter_table_metadata; 163 | // 164 | header_type heavy_hitter_t 165 | { 166 | fields 167 | { 168 | srcAddr : 32; 169 | dstAddr : 32; 170 | count : 32; 171 | } 172 | } 173 | metadata heavy_hitter_t heavy_hitter; 174 | // 175 | header_type intrinsic_metadata_t { 176 | fields { 177 | ingress_global_tstamp : 32; 178 | } 179 | } 180 | metadata intrinsic_metadata_t intrinsic_metadata; 181 | //========================================================================================================== 182 | //Parser 183 | //========================================================================================================== 184 | parser start { 185 | return parse_ethernet; 186 | } 187 | 188 | parser parse_ethernet { 189 | extract(ethernet); 190 | return select(latest.etherType) { 191 | ETHERTYPE_IPV4 : parse_ipv4; 192 | //No default, so drop it if not ipv4 packet 193 | } 194 | } 195 | 196 | parser parse_ipv4 { 197 | extract(ipv4); 198 | return select(latest.protocol) { 199 | TCP_PROTO : parse_tcp; 200 | UDP_PROTO : parse_udp; 201 | //No default, so drop it if not tcp or udp 202 | } 203 | } 204 | 205 | parser parse_tcp { 206 | extract(tcp); 207 | return parse_hh_report; 208 | } 209 | 210 | parser parse_udp { 211 | extract(udp); 212 | return parse_hh_report; 213 | } 214 | 215 | parser parse_hh_report 216 | { 217 | extract(hh_report); 218 | return ingress; 219 | } 220 | 221 | //========================================================================================================== 222 | //Actions 223 | //========================================================================================================== 224 | action do_hh_encap() 225 | { 226 | //add_header(hh_report); //we alreay assume that the received packet has the header hh_report 227 | modify_field(hh_report.device, 0xffff); 228 | modify_field(hh_report.reason, 0xffff); 229 | modify_field(hh_report.srcAddr, heavy_hitter.srcAddr); 230 | modify_field(hh_report.dstAddr, heavy_hitter.dstAddr); 231 | modify_field(hh_report.hh_count, heavy_hitter.count); 232 | } 233 | @pragma netro no_lookup_caching do_hh_encap; 234 | // 235 | action do_update_cm() 236 | { 237 | //get the hash value, use the p4 1.1 version 238 | modify_field_with_hash_based_offset(counter_table_metadata.h_v1, 0, ipv4_hash1, CM_ROW_ELEM_COUNT); 239 | modify_field_with_hash_based_offset(counter_table_metadata.h_v2, 0, ipv4_hash2, CM_ROW_ELEM_COUNT); 240 | modify_field_with_hash_based_offset(counter_table_metadata.h_v3, 0, ipv4_hash3, CM_ROW_ELEM_COUNT); 241 | //read the counter value from the register counter table 242 | register_read(counter_table_metadata.count1, r1, counter_table_metadata.h_v1); 243 | register_read(counter_table_metadata.count2, r2, counter_table_metadata.h_v2); 244 | register_read(counter_table_metadata.count3, r3, counter_table_metadata.h_v3); 245 | //update the counter value 246 | add_to_field(counter_table_metadata.count1, 0x01); 247 | add_to_field(counter_table_metadata.count2, 0x01); 248 | add_to_field(counter_table_metadata.count3, 0x01); 249 | //write back the register 250 | register_write(r1, counter_table_metadata.h_v1, counter_table_metadata.count1); 251 | register_write(r2, counter_table_metadata.h_v2, counter_table_metadata.count2); 252 | register_write(r3, counter_table_metadata.h_v3, counter_table_metadata.count3); 253 | } 254 | @pragma netro no_lookup_caching do_update_cm; 255 | // 256 | action do_find_min1() 257 | { 258 | modify_field(counter_table_metadata.count_min, counter_table_metadata.count1); 259 | } 260 | @pragma netro no_lookup_caching do_find_min1; 261 | // 262 | action do_find_min2() 263 | { 264 | modify_field(counter_table_metadata.count_min, counter_table_metadata.count2); 265 | } 266 | @pragma netro no_lookup_caching do_find_min2; 267 | // 268 | action do_find_min3() 269 | { 270 | modify_field(counter_table_metadata.count_min, counter_table_metadata.count3); 271 | } 272 | @pragma netro no_lookup_caching do_find_min3; 273 | // 274 | action do_read_hh() 275 | { 276 | register_read(heavy_hitter.srcAddr, hh_r, 0); 277 | register_read(heavy_hitter.dstAddr, hh_r, 1); 278 | register_read(heavy_hitter.count, hh_r, 2); 279 | } 280 | @pragma netro no_lookup_caching do_read_hh; 281 | // 282 | action do_update_hh() 283 | { 284 | modify_field(heavy_hitter.srcAddr, ipv4.srcAddr); 285 | modify_field(heavy_hitter.dstAddr, ipv4.dstAddr); 286 | modify_field(heavy_hitter.count, counter_table_metadata.count_min); 287 | 288 | register_write(hh_r, 0, heavy_hitter.srcAddr); 289 | register_write(hh_r, 1, heavy_hitter.dstAddr); 290 | register_write(hh_r, 2, heavy_hitter.count); 291 | } 292 | @pragma netro no_lookup_caching do_update_hh; 293 | // 294 | action do_forward(port) 295 | { 296 | modify_field(standard_metadata.egress_spec, port); 297 | } 298 | // 299 | action do_drop() 300 | { 301 | drop(); 302 | } 303 | //========================================================================================================== 304 | //Tables 305 | //========================================================================================================== 306 | table forward 307 | { 308 | reads 309 | { 310 | standard_metadata.ingress_port : exact; 311 | } 312 | actions 313 | { 314 | do_forward; 315 | do_drop; 316 | } 317 | } 318 | // 319 | table update_cm 320 | { 321 | actions 322 | { 323 | do_update_cm; 324 | } 325 | } 326 | // 327 | table find_min1 328 | { 329 | actions 330 | { 331 | do_find_min1; 332 | } 333 | } 334 | // 335 | table find_min2 336 | { 337 | actions 338 | { 339 | do_find_min2; 340 | } 341 | } 342 | // 343 | table find_min3 344 | { 345 | actions 346 | { 347 | do_find_min3; 348 | } 349 | } 350 | // 351 | table read_hh 352 | { 353 | actions 354 | { 355 | do_read_hh; 356 | } 357 | } 358 | // 359 | table update_hh 360 | { 361 | actions 362 | { 363 | do_update_hh; 364 | } 365 | } 366 | // 367 | table hh_encap 368 | { 369 | actions 370 | { 371 | do_hh_encap; 372 | } 373 | } 374 | //========================================================================================================== 375 | //Time collection 376 | //========================================================================================================== 377 | action do_start_tstamp() 378 | { 379 | modify_field(hh_report.in_time, intrinsic_metadata.ingress_global_tstamp); 380 | } 381 | // 382 | table start_tstamp 383 | { 384 | actions 385 | { 386 | do_start_tstamp; 387 | } 388 | } 389 | //========================================================================================================== 390 | action do_end_tstamp() 391 | { 392 | modify_field(hh_report.out_time, intrinsic_metadata.ingress_global_tstamp); 393 | } 394 | // 395 | table end_tstamp 396 | { 397 | actions 398 | { 399 | do_end_tstamp; 400 | } 401 | } 402 | //========================================================================================================== 403 | //Ingress 404 | //========================================================================================================== 405 | control ingress 406 | { 407 | apply(forward); 408 | if(hh_report.device != 0xffff) 409 | { 410 | //update the cm sketch 411 | apply(update_cm); 412 | //find the minimum 413 | apply(find_min1); 414 | if(counter_table_metadata.count_min > counter_table_metadata.count2) 415 | { 416 | apply(find_min2); 417 | } 418 | if(counter_table_metadata.count_min > counter_table_metadata.count3) 419 | { 420 | apply(find_min3); 421 | } 422 | //update the heavy hitter 423 | apply(read_hh); 424 | if(heavy_hitter.count < counter_table_metadata.count_min) 425 | { 426 | apply(update_hh); 427 | } 428 | //encap the hh info into the header 429 | apply(hh_encap); 430 | apply(start_tstamp); 431 | } 432 | else 433 | { 434 | apply(end_tstamp); 435 | } 436 | } 437 | 438 | //========================================================================================================== 439 | //Egress 440 | //========================================================================================================== 441 | 442 | -------------------------------------------------------------------------------- /count_min_Vanilla_P4/result.txt: -------------------------------------------------------------------------------- 1 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 2 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 3 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 4 | 0030 20 00 A0 D9 00 00 FF FF FF FF A4 1B 03 79 0A 00 ............y.. 5 | 0040 01 01 0A 00 01 1E 00 00 00 11 A4 1B 4E 23 61 61 ............N#aa 6 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 7 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 8 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 9 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 10 | 0030 20 00 A0 D9 00 00 FF FF FF FF A4 36 17 EF 0A 00 ..........6.... 11 | 0040 01 01 0A 00 01 1E 00 00 00 11 A4 36 30 BC 61 61 ...........60.aa 12 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 13 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 14 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 15 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 16 | 0030 20 00 A0 D9 00 00 FF FF FF FF A4 5F 2A 04 0A 00 .........._*... 17 | 0040 01 01 0A 00 01 1E 00 00 00 11 A4 5F 49 EF 61 61 ..........._I.aa 18 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 19 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 20 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 21 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 22 | 0030 20 00 A0 D9 00 00 FF FF FF FF A4 7A 77 23 0A 00 ..........zw#.. 23 | 0040 01 01 0A 00 01 1E 00 00 00 11 A4 7A 95 77 61 61 ...........z.waa 24 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 25 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 26 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 27 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 28 | 0030 20 00 A0 D9 00 00 FF FF FF FF A4 9A B1 C9 0A 00 ............... 29 | 0040 01 01 0A 00 01 1E 00 00 00 11 A4 9A D0 2D 61 61 .............-aa 30 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 31 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 32 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 33 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 34 | 0030 20 00 A0 D9 00 00 FF FF FF FF A4 B5 E7 24 0A 00 ............$.. 35 | 0040 01 01 0A 00 01 1E 00 00 00 11 A4 B6 05 0A 61 61 ..............aa 36 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 37 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 38 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 39 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 40 | 0030 20 00 A0 D9 00 00 FF FF FF FF A4 D2 B0 86 0A 00 ............... 41 | 0040 01 01 0A 00 01 1E 00 00 00 11 A4 D2 CE 22 61 61 ............."aa 42 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 43 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 44 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 45 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 46 | 0030 20 00 A0 D9 00 00 FF FF FF FF A4 F1 6A 2F 0A 00 ...........j/.. 47 | 0040 01 01 0A 00 01 1E 00 00 00 11 A4 F1 87 C2 61 61 ..............aa 48 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 49 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 50 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 51 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 52 | 0030 20 00 A0 D9 00 00 FF FF FF FF A5 08 50 B2 0A 00 ...........P... 53 | 0040 01 01 0A 00 01 0A 00 00 00 12 A5 08 6F EF 61 61 ............o.aa 54 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 55 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 56 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 57 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 58 | 0030 20 00 8E BE 00 00 FF FF FF FF A5 28 5A 01 0A 00 ..........(Z... 59 | 0040 01 01 0A 00 01 0A 00 00 00 12 A5 28 78 BA 62 62 ...........(x.bb 60 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 61 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 62 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 63 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 64 | 0030 20 00 8E BE 00 00 FF FF FF FF A5 3F 40 8B 0A 00 ..........?@... 65 | 0040 01 01 0A 00 01 0A 00 00 00 12 A5 3F 5F 28 62 62 ...........?_(bb 66 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 67 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 68 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 69 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 70 | 0030 20 00 8E BE 00 00 FF FF FF FF A5 51 94 60 0A 00 ..........Q.`.. 71 | 0040 01 01 0A 00 01 0A 00 00 00 12 A5 51 B3 2B 62 62 ...........Q.+bb 72 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 73 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 74 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 75 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 76 | 0030 20 00 8E BE 00 00 FF FF FF FF A5 68 97 2A 0A 00 ..........h.*.. 77 | 0040 01 01 0A 00 01 0A 00 00 00 12 A5 68 B5 3F 62 62 ...........h.?bb 78 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 79 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 80 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 81 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 82 | 0030 20 00 8E BE 00 00 FF FF FF FF A5 7A CE DE 0A 00 ..........z.... 83 | 0040 01 01 0A 00 01 14 00 00 00 13 A5 7A EB F6 62 62 ...........z..bb 84 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 85 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 86 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 87 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 88 | 0030 20 00 8E BE 00 00 FF FF FF FF A5 8D 22 5C 0A 00 ..........."\.. 89 | 0040 01 01 0A 00 01 14 00 00 00 14 A5 8D 40 8D 62 62 ............@.bb 90 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 91 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 92 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 93 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 94 | 0030 20 00 8E BE 00 00 FF FF FF FF A5 96 53 08 0A 00 ...........S... 95 | 0040 01 01 0A 00 01 14 00 00 00 15 A5 96 70 7C 62 62 ............p|bb 96 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 97 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 98 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 99 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 100 | 0030 20 00 8E BE 00 00 FF FF FF FF A5 B3 BB 34 0A 00 ............4.. 101 | 0040 01 01 0A 00 01 14 00 00 00 16 A5 B3 D9 21 62 62 .............!bb 102 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 103 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 104 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 105 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 106 | 0030 20 00 8E BE 00 00 FF FF FF FF A5 D6 83 E7 0A 00 ............... 107 | 0040 01 01 0A 00 01 14 00 00 00 17 A5 D6 A1 B2 62 62 ..............bb 108 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 109 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 110 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 111 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 112 | 0030 20 00 8E BE 00 00 FF FF FF FF A5 FD 86 3F 0A 00 ............?.. 113 | 0040 01 01 0A 00 01 14 00 00 00 18 A5 FD 9F 72 62 62 .............rbb 114 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 115 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 116 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 117 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 118 | 0030 20 00 8E BE 00 00 FF FF FF FF A6 1B 70 87 0A 00 ...........p... 119 | 0040 01 01 0A 00 01 14 00 00 00 19 A6 1B 89 86 62 62 ..............bb 120 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 121 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 122 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 123 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 124 | 0030 20 00 8E BE 00 00 FF FF FF FF A6 2F 5F 38 0A 00 ........../_8.. 125 | 0040 01 01 0A 00 01 14 00 00 00 1A A6 2F 7F 2D 62 62 .........../.-bb 126 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 127 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 128 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 129 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 130 | 0030 20 00 8E BE 00 00 FF FF FF FF A6 41 AF AF 0A 00 ..........A.... 131 | 0040 01 01 0A 00 01 14 00 00 00 1B A6 41 CF 68 62 62 ...........A.hbb 132 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 133 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 134 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 135 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 136 | 0030 20 00 8E BE 00 00 FF FF FF FF A6 5D 54 31 0A 00 ..........]T1.. 137 | 0040 01 01 0A 00 01 14 00 00 00 1C A6 5D 73 2A 62 62 ...........]s*bb 138 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 139 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 140 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 141 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 142 | 0030 20 00 7C A3 00 00 FF FF FF FF A6 74 E4 A0 0A 00 .|........t.... 143 | 0040 01 01 0A 00 01 14 00 00 00 1C A6 75 03 5B 63 63 ...........u.[cc 144 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 145 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 146 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 147 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 148 | 0030 20 00 7C A3 00 00 FF FF FF FF A6 8D A2 7D 0A 00 .|..........}.. 149 | 0040 01 01 0A 00 01 14 00 00 00 1C A6 8D C0 FC 63 63 ..............cc 150 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 151 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 152 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 153 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 154 | 0030 20 00 7C A3 00 00 FF FF FF FF A6 AB 97 B2 0A 00 .|............. 155 | 0040 01 01 0A 00 01 14 00 00 00 1C A6 AB B7 34 63 63 .............4cc 156 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 157 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 158 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 159 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 160 | 0030 20 00 7C A3 00 00 FF FF FF FF A6 C4 90 FC 0A 00 .|............. 161 | 0040 01 01 0A 00 01 14 00 00 00 1C A6 C4 B0 53 63 63 .............Scc 162 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 163 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 164 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 165 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 166 | 0030 20 00 7C A3 00 00 FF FF FF FF A6 DD 4E 5E 0A 00 .|.........N^.. 167 | 0040 01 01 0A 00 01 14 00 00 00 1C A6 DD 6C F3 63 63 ............l.cc 168 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 169 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 170 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 171 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 172 | 0030 20 00 7C A3 00 00 FF FF FF FF A6 F6 C8 60 0A 00 .|..........`.. 173 | 0040 01 01 0A 00 01 14 00 00 00 1C A6 F6 E6 D8 63 63 ..............cc 174 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 175 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 176 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 177 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 178 | 0030 20 00 7C A3 00 00 FF FF FF FF A7 14 97 76 0A 00 .|..........v.. 179 | 0040 01 01 0A 00 01 14 00 00 00 1C A7 14 B5 EF 63 63 ..............cc 180 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 181 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 182 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 183 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 184 | 0030 20 00 7C A3 00 00 FF FF FF FF A7 41 E8 A1 0A 00 .|........A.... 185 | 0040 01 01 0A 00 01 14 00 00 00 1C A7 42 07 7E 63 63 ...........B.~cc 186 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 187 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 188 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 189 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 190 | 0030 20 00 7C A3 00 00 FF FF FF FF A7 6E 11 53 0A 00 .|........n.S.. 191 | 0040 01 01 0A 00 01 14 00 00 00 1C A7 6E 30 35 63 63 ...........n05cc 192 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 193 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 194 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 195 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 196 | 0030 20 00 7C A3 00 00 FF FF FF FF A7 91 72 26 0A 00 .|.........r&.. 197 | 0040 01 01 0A 00 01 14 00 00 00 1C A7 91 91 9D 63 63 ..............cc 198 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 199 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 200 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 201 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 202 | 0030 20 00 7C A3 00 00 FF FF FF FF A7 C0 E0 99 0A 00 .|............. 203 | 0040 01 01 0A 00 01 14 00 00 00 1C A7 C1 00 3E 63 63 .............>cc 204 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 205 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 206 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 207 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 208 | 0030 20 00 7C A3 00 00 FF FF FF FF A7 E0 7F 27 0A 00 .|..........'.. 209 | 0040 01 01 0A 00 01 1E 00 00 00 1D A7 E0 9E 80 63 63 ..............cc 210 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 211 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 212 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 213 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 214 | 0030 20 00 7C A3 00 00 FF FF FF FF A8 07 34 EA 0A 00 .|.........4... 215 | 0040 01 01 0A 00 01 1E 00 00 00 1E A8 07 53 92 63 63 ............S.cc 216 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 217 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 218 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 219 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 220 | 0030 20 00 7C A3 00 00 FF FF FF FF A8 20 81 9C 0A 00 .|........ .... 221 | 0040 01 01 0A 00 01 1E 00 00 00 1F A8 20 9A 8D 63 63 ........... ..cc 222 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 223 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 224 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 225 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 226 | 0030 20 00 7C A3 00 00 FF FF FF FF A8 42 3B 3D 0A 00 .|........B;=.. 227 | 0040 01 01 0A 00 01 1E 00 00 00 20 A8 42 53 B3 63 63 ......... .BS.cc 228 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 229 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 230 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 231 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 232 | 0030 20 00 7C A3 00 00 FF FF FF FF A8 57 85 D7 0A 00 .|........W.... 233 | 0040 01 01 0A 00 01 1E 00 00 00 21 A8 57 A5 B0 63 63 .........!.W..cc 234 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 235 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 236 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 237 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 238 | 0030 20 00 7C A3 00 00 FF FF FF FF A8 72 D4 5D 0A 00 .|........r.].. 239 | 0040 01 01 0A 00 01 1E 00 00 00 22 A8 72 F3 40 63 63 .........".r.@cc 240 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 241 | -------------------------------------------------------------------------------- /count_min_P4_and_C_Sandbox/result.txt: -------------------------------------------------------------------------------- 1 | 7329 2 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 3 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 4 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 5 | 0030 20 00 A0 D9 00 00 FF FF FF FF 54 C9 45 C7 0A 00 .........T.E... 6 | 0040 01 01 0A 00 01 1E 00 00 00 88 54 C9 9B 21 61 61 ..........T..!aa 7 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 8 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 9 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 10 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 11 | 0030 20 00 A0 D9 00 00 FF FF FF FF 54 EA DB DA 0A 00 .........T..... 12 | 0040 01 01 0A 00 01 1E 00 00 00 88 54 EA F8 FC 61 61 ..........T...aa 13 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 14 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 15 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 16 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 17 | 0030 20 00 A0 D9 00 00 FF FF FF FF 55 13 F6 7F 0A 00 .........U..... 18 | 0040 01 01 0A 00 01 1E 00 00 00 88 55 14 12 F4 61 61 ..........U...aa 19 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 20 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 21 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 22 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 23 | 0030 20 00 A0 D9 00 00 FF FF FF FF 55 33 EF 23 0A 00 .........U3.#.. 24 | 0040 01 01 0A 00 01 1E 00 00 00 88 55 34 0C 4F 61 61 ..........U4.Oaa 25 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 26 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 27 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 28 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 29 | 0030 20 00 A0 D9 00 00 FF FF FF FF 55 4F 8A 8E 0A 00 .........UO.... 30 | 0040 01 01 0A 00 01 1E 00 00 00 88 55 4F A7 BD 61 61 ..........UO..aa 31 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 32 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 33 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 34 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 35 | 0030 20 00 A0 D9 00 00 FF FF FF FF 55 6A C6 86 0A 00 .........Uj.... 36 | 0040 01 01 0A 00 01 1E 00 00 00 88 55 6A E3 4D 61 61 ..........Uj.Maa 37 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 38 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 39 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 40 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 41 | 0030 20 00 A0 D9 00 00 FF FF FF FF 55 95 59 C6 0A 00 .........U.Y... 42 | 0040 01 01 0A 00 01 1E 00 00 00 88 55 95 75 D7 61 61 ..........U.u.aa 43 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 44 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 45 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 46 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 47 | 0030 20 00 A0 D9 00 00 FF FF FF FF 55 AF 67 59 0A 00 .........U.gY.. 48 | 0040 01 01 0A 00 01 1E 00 00 00 88 55 AF 83 A9 61 61 ..........U...aa 49 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 50 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 51 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 52 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 53 | 0030 20 00 A0 D9 00 00 FF FF FF FF 55 CF 82 D7 0A 00 .........U..... 54 | 0040 01 01 0A 00 01 1E 00 00 00 88 55 CF 9F B8 61 61 ..........U...aa 55 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 56 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 57 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 58 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 59 | 0030 20 00 8E BE 00 00 FF FF FF FF 55 E6 53 09 0A 00 .........U.S... 60 | 0040 01 01 0A 00 01 1E 00 00 00 88 55 E6 70 5C 62 62 ..........U.p\bb 61 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 62 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 63 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 64 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 65 | 0030 20 00 8E BE 00 00 FF FF FF FF 56 01 E5 52 0A 00 .........V..R.. 66 | 0040 01 01 0A 00 01 1E 00 00 00 88 56 02 01 46 62 62 ..........V..Fbb 67 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 68 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 69 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 70 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 71 | 0030 20 00 8E BE 00 00 FF FF FF FF 56 1D 3F F1 0A 00 .........V.?... 72 | 0040 01 01 0A 00 01 1E 00 00 00 88 56 1D 5C 3E 62 62 ..........V.\>bb 73 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 74 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 75 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 76 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 77 | 0030 20 00 8E BE 00 00 FF FF FF FF 56 3D 65 3C 0A 00 .........V=e<.. 78 | 0040 01 01 0A 00 01 1E 00 00 00 88 56 3D 81 3B 62 62 ..........V=.;bb 79 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 80 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 81 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 82 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 83 | 0030 20 00 8E BE 00 00 FF FF FF FF 56 58 C9 E7 0A 00 .........VX.... 84 | 0040 01 01 0A 00 01 1E 00 00 00 88 56 58 E7 86 62 62 ..........VX..bb 85 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 86 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 87 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 88 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 89 | 0030 20 00 8E BE 00 00 FF FF FF FF 56 74 67 1D 0A 00 .........Vtg... 90 | 0040 01 01 0A 00 01 1E 00 00 00 88 56 74 82 6C 62 62 ..........Vt.lbb 91 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 92 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 93 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 94 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 95 | 0030 20 00 8E BE 00 00 FF FF FF FF 56 8F B1 51 0A 00 .........V..Q.. 96 | 0040 01 01 0A 00 01 1E 00 00 00 88 56 8F CD EE 62 62 ..........V...bb 97 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 98 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 99 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 100 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 101 | 0030 20 00 8E BE 00 00 FF FF FF FF 56 B4 66 3A 0A 00 .........V.f:.. 102 | 0040 01 01 0A 00 01 1E 00 00 00 88 56 B4 82 8F 62 62 ..........V...bb 103 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 104 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 105 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 106 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 107 | 0030 20 00 8E BE 00 00 FF FF FF FF 56 CF CF 0E 0A 00 .........V..... 108 | 0040 01 01 0A 00 01 1E 00 00 00 88 56 CF EC 50 62 62 ..........V..Pbb 109 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 110 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 111 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 112 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 113 | 0030 20 00 8E BE 00 00 FF FF FF FF 56 EB 54 25 0A 00 .........V.T%.. 114 | 0040 01 01 0A 00 01 1E 00 00 00 88 56 EB 70 45 62 62 ..........V.pEbb 115 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 116 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 117 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 118 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 119 | 0030 20 00 8E BE 00 00 FF FF FF FF 57 10 28 B8 0A 00 .........W.(... 120 | 0040 01 01 0A 00 01 1E 00 00 00 88 57 10 46 19 62 62 ..........W.F.bb 121 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 122 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 123 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 124 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 125 | 0030 20 00 8E BE 00 00 FF FF FF FF 57 29 2E 53 0A 00 .........W).S.. 126 | 0040 01 01 0A 00 01 1E 00 00 00 88 57 29 4B CD 62 62 ..........W)K.bb 127 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 128 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 129 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 130 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 131 | 0030 20 00 8E BE 00 00 FF FF FF FF 57 3A 5C 04 0A 00 .........W:\... 132 | 0040 01 01 0A 00 01 1E 00 00 00 88 57 3A 78 43 62 62 ..........W:xCbb 133 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 134 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 135 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 136 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 137 | 0030 20 00 8E BE 00 00 FF FF FF FF 57 64 D3 57 0A 00 .........Wd.W.. 138 | 0040 01 01 0A 00 01 1E 00 00 00 88 57 64 F0 A6 62 62 ..........Wd..bb 139 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 140 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 141 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 142 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 143 | 0030 20 00 7C A3 00 00 FF FF FF FF 57 7E 27 C9 0A 00 .|.......W~'... 144 | 0040 01 01 0A 00 01 1E 00 00 00 89 57 7E 45 A4 63 63 ..........W~E.cc 145 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 146 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 147 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 148 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 149 | 0030 20 00 7C A3 00 00 FF FF FF FF 57 A0 4F 7B 0A 00 .|.......W.O{.. 150 | 0040 01 01 0A 00 01 1E 00 00 00 8A 57 A0 6C 8C 63 63 ..........W.l.cc 151 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 152 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 153 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 154 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 155 | 0030 20 00 7C A3 00 00 FF FF FF FF 57 B9 8B CA 0A 00 .|.......W..... 156 | 0040 01 01 0A 00 01 1E 00 00 00 8B 57 B9 A9 09 63 63 ..........W...cc 157 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 158 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 159 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 160 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 161 | 0030 20 00 7C A3 00 00 FF FF FF FF 57 E0 54 ED 0A 00 .|.......W.T... 162 | 0040 01 01 0A 00 01 1E 00 00 00 8C 57 E0 75 D9 63 63 ..........W.u.cc 163 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 164 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 165 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 166 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 167 | 0030 20 00 7C A3 00 00 FF FF FF FF 57 FE 5F 65 0A 00 .|.......W._e.. 168 | 0040 01 01 0A 00 01 1E 00 00 00 8D 57 FE 80 4B 63 63 ..........W..Kcc 169 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 170 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 171 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 172 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 173 | 0030 20 00 7C A3 00 00 FF FF FF FF 58 19 B1 07 0A 00 .|.......X..... 174 | 0040 01 01 0A 00 01 1E 00 00 00 8E 58 19 CF 15 63 63 ..........X...cc 175 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 176 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 177 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 178 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 179 | 0030 20 00 7C A3 00 00 FF FF FF FF 58 35 48 F4 0A 00 .|.......X5H... 180 | 0040 01 01 0A 00 01 1E 00 00 00 8F 58 35 67 53 63 63 ..........X5gScc 181 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 182 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 183 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 184 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 185 | 0030 20 00 7C A3 00 00 FF FF FF FF 58 50 AE F7 0A 00 .|.......XP.... 186 | 0040 01 01 0A 00 01 1E 00 00 00 90 58 50 CB A0 63 63 ..........XP..cc 187 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 188 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 189 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 190 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 191 | 0030 20 00 7C A3 00 00 FF FF FF FF 58 74 E9 B8 0A 00 .|.......Xt.... 192 | 0040 01 01 0A 00 01 1E 00 00 00 91 58 75 06 43 63 63 ..........Xu.Ccc 193 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 194 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 195 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 196 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 197 | 0030 20 00 7C A3 00 00 FF FF FF FF 58 95 01 97 0A 00 .|.......X..... 198 | 0040 01 01 0A 00 01 1E 00 00 00 92 58 95 1E 78 63 63 ..........X..xcc 199 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 200 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 201 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 202 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 203 | 0030 20 00 7C A3 00 00 FF FF FF FF 58 B0 7D 23 0A 00 .|.......X.}#.. 204 | 0040 01 01 0A 00 01 1E 00 00 00 93 58 B0 99 E6 63 63 ..........X...cc 205 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 206 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 207 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 208 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 209 | 0030 20 00 7C A3 00 00 FF FF FF FF 58 C7 6E D4 0A 00 .|.......X.n... 210 | 0040 01 01 0A 00 01 1E 00 00 00 94 58 C7 8B A7 63 63 ..........X...cc 211 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 212 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 213 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 214 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 215 | 0030 20 00 7C A3 00 00 FF FF FF FF 58 EC C1 23 0A 00 .|.......X..#.. 216 | 0040 01 01 0A 00 01 1E 00 00 00 95 58 EC DD 0E 63 63 ..........X...cc 217 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 218 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 219 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 220 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 221 | 0030 20 00 7C A3 00 00 FF FF FF FF 59 07 72 A5 0A 00 .|.......Y.r... 222 | 0040 01 01 0A 00 01 1E 00 00 00 96 59 07 8E C3 63 63 ..........Y...cc 223 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 224 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 225 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 226 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 227 | 0030 20 00 7C A3 00 00 FF FF FF FF 59 22 E4 57 0A 00 .|.......Y".W.. 228 | 0040 01 01 0A 00 01 1E 00 00 00 97 59 23 02 10 63 63 ..........Y#..cc 229 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 230 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 231 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 232 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 233 | 0030 20 00 7C A3 00 00 FF FF FF FF 59 4C 51 E3 0A 00 .|.......YLQ... 234 | 0040 01 01 0A 00 01 1E 00 00 00 98 59 4C 6E DD 63 63 ..........YLn.cc 235 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 236 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 237 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 238 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 239 | 0030 20 00 7C A3 00 00 FF FF FF FF 59 70 F0 B9 0A 00 .|.......Yp.... 240 | 0040 01 01 0A 00 01 1E 00 00 00 99 59 71 0D 5A 63 63 ..........Yq.Zcc 241 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 242 | -------------------------------------------------------------------------------- /count_min_P4_and_C_Sandbox_with_Lock/result.txt: -------------------------------------------------------------------------------- 1 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 2 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 3 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 4 | 0030 20 00 A0 D9 00 00 FF FF FF FF 78 24 49 7B 00 00 .........x$I{.. 5 | 0040 00 00 FF FF FF FF 00 00 00 06 78 24 6B B8 61 61 ..........x$k.aa 6 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 7 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 8 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 9 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 10 | 0030 20 00 A0 D9 00 00 FF FF FF FF 78 3F 8E 23 00 00 .........x?.#.. 11 | 0040 00 00 FF FF FF FF 00 00 00 06 78 3F AA F2 61 61 ..........x?..aa 12 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 13 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 14 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 15 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 16 | 0030 20 00 A0 D9 00 00 FF FF FF FF 78 6D 35 9E 00 00 .........xm5... 17 | 0040 00 00 FF FF FF FF 00 00 00 06 78 6D 53 B9 61 61 ..........xmS.aa 18 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 19 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 20 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 21 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 22 | 0030 20 00 A0 D9 00 00 FF FF FF FF 78 88 CE 7C 00 00 .........x..|.. 23 | 0040 00 00 FF FF FF FF 00 00 00 06 78 88 EA DE 61 61 ..........x...aa 24 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 25 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 26 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 27 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 28 | 0030 20 00 A0 D9 00 00 FF FF FF FF 78 A4 22 AC 00 00 .........x."... 29 | 0040 00 00 FF FF FF FF 00 00 00 06 78 A4 3F F2 61 61 ..........x.?.aa 30 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 31 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 32 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 33 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 34 | 0030 20 00 A0 D9 00 00 FF FF FF FF 78 BF BB 8E 00 00 .........x..... 35 | 0040 00 00 FF FF FF FF 00 00 00 06 78 BF D8 D8 61 61 ..........x...aa 36 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 37 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 38 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 39 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 40 | 0030 20 00 A0 D9 00 00 FF FF FF FF 78 EA B6 77 0A 00 .........x..w.. 41 | 0040 01 01 0A 00 01 0A 00 00 00 07 78 EA D3 A3 61 61 ..........x...aa 42 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 43 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 44 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 45 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 46 | 0030 20 00 A0 D9 00 00 FF FF FF FF 79 04 62 BF 0A 00 .........y.b... 47 | 0040 01 01 0A 00 01 0A 00 00 00 08 79 04 7F 71 61 61 ..........y..qaa 48 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 49 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 50 | 0010 00 4B 00 01 00 00 40 06 64 A2 0A 00 01 01 0A 00 .K....@.d....... 51 | 0020 01 0A 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 52 | 0030 20 00 A0 D9 00 00 FF FF FF FF 79 2A CA 31 0A 00 .........y*.1.. 53 | 0040 01 01 0A 00 01 0A 00 00 00 09 79 2A E6 5F 61 61 ..........y*._aa 54 | 0050 61 61 61 61 61 61 61 61 61 aaaaaaaaa 55 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 56 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 57 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 58 | 0030 20 00 8E BE 00 00 FF FF FF FF 79 4F 65 29 0A 00 .........yOe).. 59 | 0040 01 01 0A 00 01 0A 00 00 00 09 79 4F 82 DE 62 62 ..........yO..bb 60 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 61 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 62 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 63 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 64 | 0030 20 00 8E BE 00 00 FF FF FF FF 79 6A B3 51 0A 00 .........yj.Q.. 65 | 0040 01 01 0A 00 01 0A 00 00 00 09 79 6A D2 DE 62 62 ..........yj..bb 66 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 67 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 68 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 69 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 70 | 0030 20 00 8E BE 00 00 FF FF FF FF 79 94 55 DC 0A 00 .........y.U... 71 | 0040 01 01 0A 00 01 0A 00 00 00 09 79 94 73 B8 62 62 ..........y.s.bb 72 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 73 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 74 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 75 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 76 | 0030 20 00 8E BE 00 00 FF FF FF FF 79 AD EC 74 0A 00 .........y..t.. 77 | 0040 01 01 0A 00 01 0A 00 00 00 09 79 AE 0B 7C 62 62 ..........y..|bb 78 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 79 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 80 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 81 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 82 | 0030 20 00 8E BE 00 00 FF FF FF FF 79 C1 68 03 0A 00 .........y.h... 83 | 0040 01 01 0A 00 01 0A 00 00 00 09 79 C1 86 06 62 62 ..........y...bb 84 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 85 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 86 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 87 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 88 | 0030 20 00 8E BE 00 00 FF FF FF FF 79 D8 85 38 0A 00 .........y..8.. 89 | 0040 01 01 0A 00 01 0A 00 00 00 09 79 D8 A2 24 62 62 ..........y..$bb 90 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 91 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 92 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 93 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 94 | 0030 20 00 8E BE 00 00 FF FF FF FF 79 F2 87 B9 0A 00 .........y..... 95 | 0040 01 01 0A 00 01 0A 00 00 00 09 79 F2 A6 C5 62 62 ..........y...bb 96 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 97 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 98 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 99 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 100 | 0030 20 00 8E BE 00 00 FF FF FF FF 7A 0A C7 78 0A 00 .........z..x.. 101 | 0040 01 01 0A 00 01 0A 00 00 00 09 7A 0A DD DA 62 62 ..........z...bb 102 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 103 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 104 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 105 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 106 | 0030 20 00 8E BE 00 00 FF FF FF FF 7A 1D 07 F3 0A 00 .........z..... 107 | 0040 01 01 0A 00 01 0A 00 00 00 09 7A 1D 24 CC 62 62 ..........z.$.bb 108 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 109 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 110 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 111 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 112 | 0030 20 00 8E BE 00 00 FF FF FF FF 7A 3C 5F 1C 0A 00 .........z<_... 113 | 0040 01 01 0A 00 01 14 00 00 00 0A 7A 3C 7D AB 62 62 ..........z<}.bb 114 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 115 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 116 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 117 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 118 | 0030 20 00 8E BE 00 00 FF FF FF FF 7A 4F 85 FE 0A 00 .........zO.... 119 | 0040 01 01 0A 00 01 14 00 00 00 0B 7A 4F 9C 07 62 62 ..........zO..bb 120 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 121 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 122 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 123 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 124 | 0030 20 00 8E BE 00 00 FF FF FF FF 7A 69 86 6E 0A 00 .........zi.n.. 125 | 0040 01 01 0A 00 01 14 00 00 00 0C 7A 69 9C 74 62 62 ..........zi.tbb 126 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 127 | 0000 33 33 00 00 00 16 3A A2 04 E3 85 EB 86 DD 60 00 33....:.......`. 128 | 0010 00 00 00 24 00 01 00 00 00 00 00 00 00 00 00 00 ...$............ 129 | 0020 00 00 00 00 00 00 FF 02 00 00 00 00 00 00 00 00 ................ 130 | 0030 00 00 00 00 00 16 3A 00 05 02 00 00 01 00 8F 00 ......:......... 131 | 0040 E8 BB 00 00 00 01 04 00 00 00 FF 02 00 00 00 00 ................ 132 | 0050 00 00 00 00 00 01 FF E3 85 EB .......... 133 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 134 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 135 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 136 | 0030 20 00 8E BE 00 00 FF FF FF FF 7A 85 F9 30 0A 00 .........z..0.. 137 | 0040 01 01 0A 00 01 14 00 00 00 0D 7A 86 14 9B 62 62 ..........z...bb 138 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 139 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 140 | 0010 00 4B 00 01 00 00 40 06 64 98 0A 00 01 01 0A 00 .K....@.d....... 141 | 0020 01 14 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 142 | 0030 20 00 8E BE 00 00 FF FF FF FF 7A A0 60 17 0A 00 .........z.`... 143 | 0040 01 01 0A 00 01 14 00 00 00 0E 7A A0 7C 9C 62 62 ..........z.|.bb 144 | 0050 62 62 62 62 62 62 62 62 62 bbbbbbbbb 145 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 146 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 147 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 148 | 0030 20 00 7C A3 00 00 FF FF FF FF 7A C3 D0 0C 0A 00 .|.......z..... 149 | 0040 01 01 0A 00 01 14 00 00 00 0E 7A C3 F6 5A 63 63 ..........z..Zcc 150 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 151 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 152 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 153 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 154 | 0030 20 00 7C A3 00 00 FF FF FF FF 7A EE 45 B3 0A 00 .|.......z.E... 155 | 0040 01 01 0A 00 01 14 00 00 00 0E 7A EE 63 81 63 63 ..........z.c.cc 156 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 157 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 158 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 159 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 160 | 0030 20 00 7C A3 00 00 FF FF FF FF 7B 25 78 13 0A 00 .|.......{%x... 161 | 0040 01 01 0A 00 01 14 00 00 00 0E 7B 25 97 96 63 63 ..........{%..cc 162 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 163 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 164 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 165 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 166 | 0030 20 00 7C A3 00 00 FF FF FF FF 7B 49 9A 46 0A 00 .|.......{I.F.. 167 | 0040 01 01 0A 00 01 14 00 00 00 0E 7B 49 D6 B4 63 63 ..........{I..cc 168 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 169 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 170 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 171 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 172 | 0030 20 00 7C A3 00 00 FF FF FF FF 7B 71 B8 5F 0A 00 .|.......{q._.. 173 | 0040 01 01 0A 00 01 14 00 00 00 0E 7B 71 DF 9F 63 63 ..........{q..cc 174 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 175 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 176 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 177 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 178 | 0030 20 00 7C A3 00 00 FF FF FF FF 7B 87 03 E4 0A 00 .|.......{..... 179 | 0040 01 01 0A 00 01 14 00 00 00 0E 7B 87 22 28 63 63 ..........{."(cc 180 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 181 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 182 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 183 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 184 | 0030 20 00 7C A3 00 00 FF FF FF FF 7B A5 7F EA 0A 00 .|.......{..... 185 | 0040 01 01 0A 00 01 14 00 00 00 0E 7B A5 9B DE 63 63 ..........{...cc 186 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 187 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 188 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 189 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 190 | 0030 20 00 7C A3 00 00 FF FF FF FF 7B D2 EB 29 0A 00 .|.......{..).. 191 | 0040 01 01 0A 00 01 14 00 00 00 0E 7B D3 01 E5 63 63 ..........{...cc 192 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 193 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 194 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 195 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 196 | 0030 20 00 7C A3 00 00 FF FF FF FF 7B F2 EE 77 0A 00 .|.......{..w.. 197 | 0040 01 01 0A 00 01 14 00 00 00 0E 7B F3 0A EC 63 63 ..........{...cc 198 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 199 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 200 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 201 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 202 | 0030 20 00 7C A3 00 00 FF FF FF FF 7C 10 2E 5A 0A 00 .|.......|..Z.. 203 | 0040 01 01 0A 00 01 14 00 00 00 0E 7C 10 45 77 63 63 ..........|.Ewcc 204 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 205 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 206 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 207 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 208 | 0030 20 00 7C A3 00 00 FF FF FF FF 7C 20 C0 68 0A 00 .|.......| .h.. 209 | 0040 01 01 0A 00 01 14 00 00 00 0E 7C 20 D5 F8 63 63 ..........| ..cc 210 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 211 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 212 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 213 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 214 | 0030 20 00 7C A3 00 00 FF FF FF FF 7C 33 0B BA 0A 00 .|.......|3.... 215 | 0040 01 01 0A 00 01 14 00 00 00 0E 7C 33 28 09 63 63 ..........|3(.cc 216 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 217 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 218 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 219 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 220 | 0030 20 00 7C A3 00 00 FF FF FF FF 7C 53 1F 76 0A 00 .|.......|S.v.. 221 | 0040 01 01 0A 00 01 14 00 00 00 0E 7C 53 4E 6B 63 63 ..........|SNkcc 222 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 223 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 224 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 225 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 226 | 0030 20 00 7C A3 00 00 FF FF FF FF 7C 6E B8 C6 0A 00 .|.......|n.... 227 | 0040 01 01 0A 00 01 14 00 00 00 0E 7C 6E D4 CD 63 63 ..........|n..cc 228 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 229 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 230 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 231 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 232 | 0030 20 00 7C A3 00 00 FF FF FF FF 7C 8B 32 EA 0A 00 .|.......|.2... 233 | 0040 01 01 0A 00 01 1E 00 00 00 0F 7C 8B 51 1B 63 63 ..........|.Q.cc 234 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 235 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 236 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 237 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 238 | 0030 20 00 7C A3 00 00 FF FF FF FF 7C 9C 52 50 0A 00 .|.......|.RP.. 239 | 0040 01 01 0A 00 01 1E 00 00 00 10 7C 9C 6F 13 63 63 ..........|.o.cc 240 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 241 | 0000 AA BB CC DD EE FF AA BB CC DD EE FF 08 00 45 00 ..............E. 242 | 0010 00 4B 00 01 00 00 40 06 64 8E 0A 00 01 01 0A 00 .K....@.d....... 243 | 0020 01 1E 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 244 | 0030 20 00 7C A3 00 00 FF FF FF FF 7C AE A6 FE 0A 00 .|.......|..... 245 | 0040 01 01 0A 00 01 1E 00 00 00 11 7C AE C3 16 63 63 ..........|...cc 246 | 0050 63 63 63 63 63 63 63 63 63 ccccccccc 247 | --------------------------------------------------------------------------------