Repository: talonmyburgh/casper_dspdevel (language: python)

Issue:
No output from WPFB module in simulation
If Number of wideband streams is set to 1, the WPBF module works well;
if it is set to 2, the WPFB module has no output.
![image](https://user-images.githubusercontent.com/47157431/232853679-a0e52e6f-b127-4d54-81f6-548a6b26623b.png)
Here are the other parameters used in the test:
![image](https://user-images.githubusercontent.com/47157431/232853864-b82b5e71-f01c-45f6-8205-e00c68c00f23.png)



Discussion / hints:
The test design is here: https://github.com/liuweiseu/snap_hdl_tut/blob/dev/snap_hdl_pfb_v3.slx

Fix patch:
diff --git a/casper_accumulators/run.py b/casper_accumulators/run.py
index a690c0a0..0a771504 100644
--- a/casper_accumulators/run.py
+++ b/casper_accumulators/run.py
@@ -29,7 +29,7 @@
 
 # Create library 'common_pkg_lib'
 common_pkg_lib = vu.add_library("common_pkg_lib")
-#common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
+common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_pkg_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/float_pkg_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/common_pkg.vhd"))
diff --git a/casper_adder/run.py b/casper_adder/run.py
index 101ec316..b00d5e2c 100644
--- a/casper_adder/run.py
+++ b/casper_adder/run.py
@@ -83,7 +83,7 @@ def generate_tests(obj, direc, add_sub, inp_pipeline, out_pipeline, in_dat_w):
 lib2.add_source_files(os.path.join(script_dir, "../common_components/*.vhd"))
 
 lib3 = vu.add_library("common_pkg_lib",allow_duplicate = True)
-#lib3.add_source_files(os.path.join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
+lib3.add_source_files(os.path.join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
 lib3.add_source_files(os.path.join(script_dir, "../common_pkg/fixed_pkg_c.vhd"))
 lib3.add_source_files(os.path.join(script_dir, "../common_pkg/float_pkg_c.vhd"))
 lib3.add_source_files(os.path.join(script_dir, "../common_pkg/*.vhd"))
diff --git a/casper_counter/run.py b/casper_counter/run.py
index 2386275b..9d04d3c7 100644
--- a/casper_counter/run.py
+++ b/casper_counter/run.py
@@ -11,7 +11,7 @@
 casper_counter_lib.add_source_files(join(script_dir,"./*.vhd"))
 
 common_pkg_lib = vu.add_library("common_pkg_lib")
-#common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
+common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_pkg_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/float_pkg_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/common_pkg.vhd"))
diff --git a/casper_delay/run.py b/casper_delay/run.py
index 2c93a80f..a07b85bd 100644
--- a/casper_delay/run.py
+++ b/casper_delay/run.py
@@ -29,7 +29,7 @@
 
 # Create library 'common_pkg_lib'
 common_pkg_lib = vu.add_library("common_pkg_lib")
-#common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
+common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_pkg_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/float_pkg_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/common_pkg.vhd"))
diff --git a/casper_fifo/run.py b/casper_fifo/run.py
index 0e31a975..9ab5196c 100644
--- a/casper_fifo/run.py
+++ b/casper_fifo/run.py
@@ -23,7 +23,7 @@
 lib2.add_source_files(os.path.join(script_dir, "../common_components/common_async.vhd"))
 
 lib3 = vu.add_library("common_pkg_lib",allow_duplicate = True)
-#lib3.add_source_files(os.path.join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
+lib3.add_source_files(os.path.join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
 lib3.add_source_files(os.path.join(script_dir, "../common_pkg/fixed_pkg_c.vhd"))
 lib3.add_source_files(os.path.join(script_dir, "../common_pkg/float_pkg_c.vhd"))
 lib3.add_source_files(os.path.join(script_dir, "../common_pkg/*.vhd"))
diff --git a/casper_filter/fil_ppf_filter.vhd b/casper_filter/fil_ppf_filter.vhd
index 554e1816..1dd98960 100644
--- a/casper_filter/fil_ppf_filter.vhd
+++ b/casper_filter/fil_ppf_filter.vhd
@@ -118,7 +118,7 @@ begin
   generic map (
     g_representation      => "SIGNED",      
     g_lsb_w               => c_ppf_lsb_w,  
-    g_lsb_round           => TRUE,           
+    g_lsb_round           => ROUND,           
     g_lsb_round_clip      => FALSE,      
     g_msb_clip            => FALSE,            
     g_msb_clip_symmetric  => FALSE,  
diff --git a/casper_filter/run.py b/casper_filter/run.py
index 1fc0a706..286488b7 100644
--- a/casper_filter/run.py
+++ b/casper_filter/run.py
@@ -62,7 +62,7 @@ def manglePkg(file_name, line_number, new_line):
 
 # COMMON PACKAGE Library
 common_pkg_lib = vu.add_library("common_pkg_lib")
-#common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
+common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_pkg_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/float_pkg_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/common_pkg.vhd"))
diff --git a/casper_flow_control/run.py b/casper_flow_control/run.py
index 848de551..2745a99e 100644
--- a/casper_flow_control/run.py
+++ b/casper_flow_control/run.py
@@ -9,7 +9,7 @@
 
 # Create library 'common_pkg_lib'
 common_pkg_lib = vu.add_library("common_pkg_lib")
-#common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
+common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_pkg_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/float_pkg_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/common_pkg.vhd"))
diff --git a/casper_multiplexer/run.py b/casper_multiplexer/run.py
index eea1eb1c..96ab8521 100644
--- a/casper_multiplexer/run.py
+++ b/casper_multiplexer/run.py
@@ -73,7 +73,7 @@ def generate_tests(obj,
 lib2.add_source_files(os.path.join(script_dir, "../common_components/common_pipeline_sl.vhd"))
 
 lib3 = vu.add_library("common_pkg_lib")
-#lib3.add_source_files(os.path.join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
+lib3.add_source_files(os.path.join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
 lib3.add_source_files(os.path.join(script_dir, "../common_pkg/fixed_pkg_c.vhd"))
 lib3.add_source_files(os.path.join(script_dir, "../common_pkg/float_pkg_c.vhd"))
 lib3.add_source_files(os.path.join(script_dir, "../common_pkg/*.vhd"))
diff --git a/casper_multiplier/tech_mult.vhd b/casper_multiplier/tech_mult.vhd
index 7737a092..518258b0 100644
--- a/casper_multiplier/tech_mult.vhd
+++ b/casper_multiplier/tech_mult.vhd
@@ -56,9 +56,10 @@ begin
 				ce    => clken,
 				out_p => result
 			);
-	else generate
-		-- Use an inferred mult
-		assert false report "No Multiplier Generated!" severity failure;
+--  only allowed in VHDL 2008			
+--	else generate
+--		-- Use an inferred mult
+--		assert false report "No Multiplier Generated!" severity failure;
 	end generate;
 
 	-------------------------------------------------------------------------------
diff --git a/casper_ram/run.py b/casper_ram/run.py
index 8514281a..f9f7be90 100644
--- a/casper_ram/run.py
+++ b/casper_ram/run.py
@@ -41,7 +41,7 @@
 
 # COMMON PACKAGE Library
 common_pkg_lib = vu.add_library("common_pkg_lib")
-#common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
+common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_pkg_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/float_pkg_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/common_pkg.vhd"))
diff --git a/casper_ram/tech_memory_rom_r.vhd b/casper_ram/tech_memory_rom_r.vhd
index ea626f69..be0541fe 100644
--- a/casper_ram/tech_memory_rom_r.vhd
+++ b/casper_ram/tech_memory_rom_r.vhd
@@ -69,8 +69,9 @@ BEGIN
 			clocken => clocken,
 			q         => q
 		);
-	else generate
-		assert FALSE report "No rom Generated" severity failure;
+--  Only allowed in VHDL2008
+--	else generate
+--		assert FALSE report "No rom Generated" severity failure;
 	END GENERATE;
 
 	--	gen_ip_stratixiv : IF g_technology = 0 GENERATE
diff --git a/casper_ram/tech_memory_rom_r_r.vhd b/casper_ram/tech_memory_rom_r_r.vhd
index a43c44c7..a74c3ca4 100644
--- a/casper_ram/tech_memory_rom_r_r.vhd
+++ b/casper_ram/tech_memory_rom_r_r.vhd
@@ -48,7 +48,7 @@ ENTITY tech_memory_rom_r_r IS
 		clock     : IN  STD_LOGIC;
 		clocken   : IN  STD_LOGIC := '1';
 		q_a         : OUT STD_LOGIC_VECTOR(g_dat_w - 1 DOWNTO 0);
-		q_B         : OUT STD_LOGIC_VECTOR(g_dat_w - 1 DOWNTO 0)
+		q_b         : OUT STD_LOGIC_VECTOR(g_dat_w - 1 DOWNTO 0)
 	);
 END tech_memory_rom_r_r;
 
@@ -75,8 +75,9 @@ BEGIN
 			q_a         => q_a,
 			q_b         => q_b
 		);
-	else generate
-		assert FALSE report "No rom Generated" severity failure;
+--  Only allowed in VHDL2008 
+--	else generate
+--		assert FALSE report "No rom Generated" severity failure;
 	END GENERATE;
     
 	--	gen_ip_stratixiv : IF g_technology = 0 GENERATE
diff --git a/casper_requantize/common_requantize.vhd b/casper_requantize/common_requantize.vhd
index a0e186ba..d1e4a22f 100644
--- a/casper_requantize/common_requantize.vhd
+++ b/casper_requantize/common_requantize.vhd
@@ -52,20 +52,20 @@ USE common_pkg_lib.common_pkg.ALL;
 
 ENTITY common_requantize IS
   GENERIC (
-    g_representation      : STRING  := "SIGNED";  -- SIGNED (round +-0.5 away from zero to +- infinity) or UNSIGNED rounding (round 0.5 up to + inifinity)
-    g_lsb_w               : INTEGER := 4;         -- when > 0, number of LSbits to remove from in_dat
-                                                  -- when < 0, number of LSBits to insert as a gain before resize to out_dat'LENGTH
-                                                  -- when 0 then no effect
-    g_lsb_round           : BOOLEAN := TRUE;      -- when true ROUND else TRUNCATE the input LSbits
-    g_lsb_round_clip      : BOOLEAN := FALSE;     -- when true round clip to +max to avoid wrapping to output -min (signed) or 0 (unsigned) due to rounding
-    g_msb_clip            : BOOLEAN := TRUE;      -- when true CLIP else WRAP the input MSbits
-    g_msb_clip_symmetric  : BOOLEAN := FALSE;     -- when TRUE clip signed symmetric to +c_smax and -c_smax, else to +c_smax and c_smin_symm
-                                                  -- for wrapping when g_msb_clip=FALSE the g_msb_clip_symmetric is ignored, so signed wrapping is done asymmetric
-    g_gain_w              : NATURAL := 0;         -- do not use, must be 0, use negative g_lsb_w instead
-    g_pipeline_remove_lsb : NATURAL := 0;         -- >= 0
-    g_pipeline_remove_msb : NATURAL := 0;         -- >= 0, use g_pipeline_remove_lsb=0 and g_pipeline_remove_msb=0 for combinatorial output
-    g_in_dat_w            : NATURAL := 36;        -- input data width
-    g_out_dat_w           : NATURAL := 18         -- output data width
+    g_representation      : STRING  := "SIGNED";        -- SIGNED (round +-0.5 away from zero to +- infinity) or UNSIGNED rounding (round 0.5 up to + inifinity)
+    g_lsb_w               : INTEGER := 4;               -- when > 0, number of LSbits to remove from in_dat
+                                                        -- when < 0, number of LSBits to insert as a gain before resize to out_dat'LENGTH
+                                                        -- when 0 then no effect
+    g_lsb_round           : t_rounding_mode  := ROUND;  -- = ROUND, ROUNDINF or TRUNCATE will default to TRUNCATE if invalid option used
+    g_lsb_round_clip      : BOOLEAN := FALSE;           -- when true round clip to +max to avoid wrapping to output -min (signed) or 0 (unsigned) due to rounding
+    g_msb_clip            : BOOLEAN := TRUE;            -- when true CLIP else WRAP the input MSbits
+    g_msb_clip_symmetric  : BOOLEAN := FALSE;           -- when TRUE clip signed symmetric to +c_smax and -c_smax, else to +c_smax and c_smin_symm
+                                                        -- for wrapping when g_msb_clip=FALSE the g_msb_clip_symmetric is ignored, so signed wrapping is done asymmetric
+    g_gain_w              : NATURAL := 0;               -- do not use, must be 0, use negative g_lsb_w instead
+    g_pipeline_remove_lsb : NATURAL := 0;               -- >= 0
+    g_pipeline_remove_msb : NATURAL := 0;               -- >= 0, use g_pipeline_remove_lsb=0 and g_pipeline_remove_msb=0 for combinatorial output
+    g_in_dat_w            : NATURAL := 36;              -- input data width
+    g_out_dat_w           : NATURAL := 18               -- output data width
   );
   PORT (
     clk        : IN  STD_LOGIC;
diff --git a/casper_requantize/common_round.vhd b/casper_requantize/common_round.vhd
index cf4b24bd..f68fb658 100644
--- a/casper_requantize/common_round.vhd
+++ b/casper_requantize/common_round.vhd
@@ -39,7 +39,7 @@ ENTITY common_round IS
 
 	GENERIC(
 		g_representation  : STRING  := "SIGNED"; -- SIGNED (round +-0.5 away from zero to +- infinity) or UNSIGNED rounding (round 0.5 up to + inifinity)
-		g_round           : BOOLEAN := TRUE; -- when TRUE round the input, else truncate the input
+		g_round           : t_rounding_mode  := ROUND;  -- = ROUND, ROUNDINF or TRUNCATE will default to TRUNCATE if invalid option used
 		g_round_clip      : BOOLEAN := FALSE; -- when TRUE clip rounded input >= +max to avoid wrapping to output -min (signed) or 0 (unsigned)
 		g_pipeline_input  : NATURAL := 0; -- >= 0
 		g_pipeline_output : NATURAL := 1; -- >= 0, use g_pipeline_input=0 and g_pipeline_output=0 for combinatorial output
@@ -87,16 +87,12 @@ BEGIN
 
 	-- Decrease to out_dat width by c_remove_w number of LSbits
 	-- . rounding
-	gen_s : IF c_remove_w > 0 AND g_round = TRUE AND g_representation = "SIGNED" GENERATE
-		res_dat <= s_round(reg_dat, c_remove_w, g_round_clip);
+	gen_s : IF c_remove_w > 0 AND g_representation = "SIGNED" GENERATE
+		res_dat <= s_round(reg_dat, c_remove_w, g_round_clip, g_round);
 	END GENERATE;
-	gen_u : IF c_remove_w > 0 AND g_round = TRUE AND g_representation = "UNSIGNED" GENERATE
+	gen_u : IF c_remove_w > 0 AND g_representation = "UNSIGNED" GENERATE
 		res_dat <= u_round(reg_dat, c_remove_w, g_round_clip);
 	END GENERATE;
-	-- . truncating
-	gen_t : IF c_remove_w > 0 AND g_round = FALSE GENERATE
-		res_dat <= truncate(reg_dat, c_remove_w);
-	END GENERATE;
 
 	u_output_pipe : ENTITY common_components_lib.common_pipeline
 		GENERIC MAP(
diff --git a/casper_requantize/dp_requantize.vhd b/casper_requantize/dp_requantize.vhd
index 4b4df49a..232df5b3 100644
--- a/casper_requantize/dp_requantize.vhd
+++ b/casper_requantize/dp_requantize.vhd
@@ -37,7 +37,7 @@ ENTITY dp_requantize IS
 		g_lsb_w               : INTEGER := 4; -- when > 0, number of LSbits to remove from in_dat
 		                                      -- when < 0, number of LSBits to insert as a gain before resize to out_dat'LENGTH
 		                                      -- when 0 then no effect
-		g_lsb_round           : BOOLEAN := TRUE; -- when true ROUND else TRUNCATE the input LSbits                                                                
+		g_lsb_round           : t_rounding_mode := ROUND; -- when true ROUND else TRUNCATE the input LSbits                                                                
 		g_lsb_round_clip      : BOOLEAN := FALSE; -- when true round clip to +max to avoid wrapping to output -min (signed) or 0 (unsigned) due to rounding        
 		g_msb_clip            : BOOLEAN := TRUE; -- when true CLIP else WRAP the input MSbits                                                                     
 		g_msb_clip_symmetric  : BOOLEAN := FALSE; -- when TRUE clip signed symmetric to +c_smax and -c_smax, else to +c_smax and c_smin_symm                       
diff --git a/casper_requantize/r_shift_requantize.vhd b/casper_requantize/r_shift_requantize.vhd
index a95375f3..e890bad0 100644
--- a/casper_requantize/r_shift_requantize.vhd
+++ b/casper_requantize/r_shift_requantize.vhd
@@ -9,7 +9,7 @@ USE common_pkg_lib.common_pkg.ALL;
 
 ENTITY r_shift_requantize IS
   GENERIC (
-    g_lsb_round           : BOOLEAN := TRUE;      -- when true ROUND else TRUNCATE the input LSbits
+    g_lsb_round           : t_rounding_mode  := ROUND;  -- = ROUND, ROUNDINF or TRUNCATE
     g_lsb_round_clip      : BOOLEAN := FALSE;     -- when true round clip to +max to avoid wrapping to output -min (signed) or 0 (unsigned) due to rounding
     g_in_dat_w            : NATURAL := 17;        -- input data width
     g_out_dat_w           : NATURAL := 18         -- output data width
@@ -33,11 +33,7 @@ BEGIN
   shift_proc : process(scale, in_dat)
   begin
     if scale = '1' then
-        if g_lsb_round = TRUE then
-            res_dat <= RESIZE_SVEC(s_round(in_dat, 1, g_lsb_round_clip), g_in_dat_w);
-        else
-            res_dat <= RESIZE_SVEC(truncate(in_dat, 1), g_in_dat_w);
-        end if;
+        res_dat <= RESIZE_SVEC(s_round(in_dat, 1, g_lsb_round_clip, g_lsb_round), g_in_dat_w);
     else
         res_dat <= in_dat;
     end if;
diff --git a/casper_requantize/rl_shift_requantize.vhd b/casper_requantize/rl_shift_requantize.vhd
index ce8b797f..66b3b0fb 100644
--- a/casper_requantize/rl_shift_requantize.vhd
+++ b/casper_requantize/rl_shift_requantize.vhd
@@ -9,16 +9,16 @@ USE common_pkg_lib.common_pkg.ALL;
 
 ENTITY rl_shift_requantize IS
   GENERIC (
-    g_representation      : STRING  := "SIGNED";  -- SIGNED (round +-0.5 away from zero to +- infinity) or UNSIGNED rounding (round 0.5 up to + inifinity)
-    g_lsb_round           : BOOLEAN := TRUE;      -- when true ROUND else TRUNCATE the input LSbits
-    g_lsb_round_clip      : BOOLEAN := FALSE;     -- when true round clip to +max to avoid wrapping to output -min (signed) or 0 (unsigned) due to rounding
-    g_msb_clip            : BOOLEAN := TRUE;      -- when true CLIP else WRAP the input MSbits
-    g_msb_clip_symmetric  : BOOLEAN := FALSE;     -- when TRUE clip signed symmetric to +c_smax and -c_smax, else to +c_smax and c_smin_symm
-                                                  -- for wrapping when g_msb_clip=FALSE the g_msb_clip_symmetric is ignored, so signed wrapping is done asymmetric
-    g_pipeline_remove_lsb : NATURAL := 0;         -- >= 0
-    g_pipeline_remove_msb : NATURAL := 0;         -- >= 0, use g_pipeline_remove_lsb=0 and g_pipeline_remove_msb=0 for combinatorial output
-    g_in_dat_w            : NATURAL := 36;        -- input data width
-    g_out_dat_w           : NATURAL := 18         -- output data width
+    g_representation      : STRING  := "SIGNED";        -- SIGNED (round +-0.5 away from zero to +- infinity) or UNSIGNED rounding (round 0.5 up to + inifinity)
+    g_lsb_round           : t_rounding_mode  := ROUND;  -- = ROUND, ROUNDINF or TRUNCATE
+    g_lsb_round_clip      : BOOLEAN := FALSE;           -- when true round clip to +max to avoid wrapping to output -min (signed) or 0 (unsigned) due to rounding
+    g_msb_clip            : BOOLEAN := TRUE;            -- when true CLIP else WRAP the input MSbits
+    g_msb_clip_symmetric  : BOOLEAN := FALSE;           -- when TRUE clip signed symmetric to +c_smax and -c_smax, else to +c_smax and c_smin_symm
+                                                        -- for wrapping when g_msb_clip=FALSE the g_msb_clip_symmetric is ignored, so signed wrapping is done asymmetric
+    g_pipeline_remove_lsb : NATURAL := 0;               -- >= 0
+    g_pipeline_remove_msb : NATURAL := 0;               -- >= 0, use g_pipeline_remove_lsb=0 and g_pipeline_remove_msb=0 for combinatorial output
+    g_in_dat_w            : NATURAL := 36;              -- input data width
+    g_out_dat_w           : NATURAL := 18               -- output data width
   );
   PORT (
     clk        : IN  STD_LOGIC;
@@ -41,12 +41,10 @@ BEGIN
   shift_proc : process(scale)
   begin
     if scale = '1' then
-        if g_representation ="SIGNED" and g_lsb_round = TRUE then
-            rem_dat(g_in_dat_w-2 DOWNTO 0) <= s_round(in_dat(g_in_dat_w - 1 DOWNTO 0), 1, g_lsb_round_clip);
-        elsif g_representation = "UNSIGNED" and g_lsb_round = TRUE then
+        if g_representation ="SIGNED" and (g_lsb_round = ROUND or g_lsb_round = ROUNDINF) then
+            rem_dat(g_in_dat_w-2 DOWNTO 0) <= s_round(in_dat(g_in_dat_w - 1 DOWNTO 0), 1, g_lsb_round_clip, g_lsb_round);
+        elsif g_representation = "UNSIGNED" and (g_lsb_round = ROUND or g_lsb_round = ROUNDINF) then
             rem_dat(g_in_dat_w-2 DOWNTO 0) <= u_round(in_dat(g_in_dat_w - 1 DOWNTO 0), 1, g_lsb_round_clip);
-        elsif g_lsb_round = FALSE then
-            rem_dat(g_in_dat_w-2 DOWNTO 0) <= truncate(in_dat(g_in_dat_w - 1 DOWNTO 0), 1);
         else NULL;
         end if;
     elsif scale = '0' then
diff --git a/casper_wb_fft/casper_wb_fft_vivproj/casper_wb_fft_vivproj.xpr b/casper_wb_fft/casper_wb_fft_vivproj/casper_wb_fft_vivproj.xpr
index 2adfbd35..f036a232 100644
--- a/casper_wb_fft/casper_wb_fft_vivproj/casper_wb_fft_vivproj.xpr
+++ b/casper_wb_fft/casper_wb_fft_vivproj/casper_wb_fft_vivproj.xpr
@@ -1,740 +1,728 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Product Version: Vivado v2020.1 (64-bit)              -->
-<!--                                                         -->
-<!-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved.   -->
-
-<Project Version="7" Minor="49" Path="/export/home/creon/mschiller_ngvla_project/casper_dspdevel/casper_wb_fft/casper_wb_fft_vivproj/casper_wb_fft_vivproj.xpr">
-  <DefaultLaunch Dir="$PRUNDIR"/>
-  <Configuration>
-    <Option Name="Id" Val="42eed8497aac428d8794a44a4e77c874"/>
-    <Option Name="Part" Val="xc7z020clg400-1"/>
-    <Option Name="CompiledLibDir" Val="$PCACHEDIR/compile_simlib"/>
-    <Option Name="CompiledLibDirXSim" Val=""/>
-    <Option Name="CompiledLibDirModelSim" Val="$PCACHEDIR/compile_simlib/modelsim"/>
-    <Option Name="CompiledLibDirQuesta" Val="$PCACHEDIR/compile_simlib/questa"/>
-    <Option Name="CompiledLibDirIES" Val="$PCACHEDIR/compile_simlib/ies"/>
-    <Option Name="CompiledLibDirXcelium" Val="$PCACHEDIR/compile_simlib/xcelium"/>
-    <Option Name="CompiledLibDirVCS" Val="$PCACHEDIR/compile_simlib/vcs"/>
-    <Option Name="CompiledLibDirRiviera" Val="$PCACHEDIR/compile_simlib/riviera"/>
-    <Option Name="CompiledLibDirActivehdl" Val="$PCACHEDIR/compile_simlib/activehdl"/>
-    <Option Name="SimulatorInstallDirModelSim" Val=""/>
-    <Option Name="SimulatorInstallDirQuesta" Val=""/>
-    <Option Name="SimulatorInstallDirIES" Val=""/>
-    <Option Name="SimulatorInstallDirXcelium" Val=""/>
-    <Option Name="SimulatorInstallDirVCS" Val=""/>
-    <Option Name="SimulatorInstallDirRiviera" Val=""/>
-    <Option Name="SimulatorInstallDirActiveHdl" Val=""/>
-    <Option Name="TargetLanguage" Val="VHDL"/>
-    <Option Name="BoardPart" Val=""/>
-    <Option Name="ActiveSimSet" Val="sim_1"/>
-    <Option Name="DefaultLib" Val="xil_defaultlib"/>
-    <Option Name="ProjectType" Val="Default"/>
-    <Option Name="IPOutputRepo" Val="D:/CASPERWORK/Development/casper_dspdevel/casper_wb_fft/casper_wb_fft_vivproj/casper_wb_fft_vivproj.cache/ip"/>
-    <Option Name="IPCachePermission" Val="read"/>
-    <Option Name="IPCachePermission" Val="write"/>
-    <Option Name="EnableCoreContainer" Val="FALSE"/>
-    <Option Name="CreateRefXciForCoreContainers" Val="FALSE"/>
-    <Option Name="IPUserFilesDir" Val="$PIPUSERFILESDIR"/>
-    <Option Name="IPStaticSourceDir" Val="$PIPUSERFILESDIR/ipstatic"/>
-    <Option Name="EnableBDX" Val="FALSE"/>
-    <Option Name="WTXSimLaunchSim" Val="289"/>
-    <Option Name="WTModelSimLaunchSim" Val="0"/>
-    <Option Name="WTQuestaLaunchSim" Val="0"/>
-    <Option Name="WTIesLaunchSim" Val="0"/>
-    <Option Name="WTVcsLaunchSim" Val="0"/>
-    <Option Name="WTRivieraLaunchSim" Val="0"/>
-    <Option Name="WTActivehdlLaunchSim" Val="0"/>
-    <Option Name="WTXSimExportSim" Val="0"/>
-    <Option Name="WTModelSimExportSim" Val="0"/>
-    <Option Name="WTQuestaExportSim" Val="0"/>
-    <Option Name="WTIesExportSim" Val="0"/>
-    <Option Name="WTVcsExportSim" Val="0"/>
-    <Option Name="WTRivieraExportSim" Val="0"/>
-    <Option Name="WTActivehdlExportSim" Val="0"/>
-    <Option Name="GenerateIPUpgradeLog" Val="TRUE"/>
-    <Option Name="XSimRadix" Val="hex"/>
-    <Option Name="XSimTimeUnit" Val="ns"/>
-    <Option Name="XSimArrayDisplayLimit" Val="1024"/>
-    <Option Name="XSimTraceLimit" Val="65536"/>
-    <Option Name="SimTypes" Val="rtl"/>
-    <Option Name="SimTypes" Val="bfm"/>
-    <Option Name="SimTypes" Val="tlm"/>
-    <Option Name="SimTypes" Val="tlm_dpi"/>
-    <Option Name="MEMEnableMemoryMapGeneration" Val="TRUE"/>
-    <Option Name="DcpsUptoDate" Val="TRUE"/>
-  </Configuration>
-  <FileSets Version="1" Minor="31">
-    <FileSet Name="sources_1" Type="DesignSrcs" RelSrcDir="$PSRCDIR/sources_1">
-      <Filter Type="Srcs"/>
-      <File Path="$PPRDIR/../../common_pkg/fixed_pkg_c.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="common_pkg_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../common_pkg/common_pkg.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="Library" Val="common_pkg_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../common_components/common_pipeline.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="common_components_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_adder/common_add_sub.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_adder_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../common_components/common_async.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="common_components_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../common_components/common_areset.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="common_components_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../common_components/common_bit_delay.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="common_components_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../technology/technology_select_pkg.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="technology_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../common_components/common_pipeline_sl.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="common_components_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_multiplier/tech_mult_component.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_multiplier_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_multiplier/tech_agilex_versal_cmult.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="Library" Val="casper_multiplier_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_multiplier/tech_complex_mult.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="Library" Val="casper_multiplier_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_multiplier/common_complex_mult.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_multiplier_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_counter/common_counter.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_counter_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../common_components/common_delay.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="common_components_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_fifo/common_rl_decrease.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_fifo_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_fifo/common_fifo_rd.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_fifo_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_fifo/tech_fifo_component_pkg.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_fifo_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_fifo/tech_fifo_sc.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_fifo_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_fifo/common_fifo_sc.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_fifo_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_ram/common_ram_pkg.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_ram_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_ram/tech_memory_component_pkg.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_ram_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_ram/tech_memory_ram_crw_crw.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_ram_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_ram/tech_memory_ram_cr_cw.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_ram_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_ram/common_ram_crw_crw.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_ram_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_ram/common_paged_ram_crw_crw.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_ram_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_ram/common_paged_ram_rw_rw.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_ram_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_ram/common_paged_ram_r_w.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_ram_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_requantize/common_round.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_requantize_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_requantize/common_resize.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_requantize_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_requantize/common_requantize.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_requantize_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_ram/tech_memory_rom_r_r.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="Library" Val="casper_ram_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_ram/tech_memory_rom_r.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="Library" Val="casper_ram_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_ram/common_rom_r_r.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_ram_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../common_pkg/common_str_pkg.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="common_pkg_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_multiplexer/common_zip.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_multiplexer_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../fft_gnrcs_intrfcs_pkg.vhd">
-        <FileInfo>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../r2sdf_fft/twiddlesPkg.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="Library" Val="r2sdf_fft_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../r2sdf_fft/rTwoSDFPkg.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="r2sdf_fft_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../r2sdf_fft/rTwoBF.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="r2sdf_fft_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_requantize/r_shift_requantize.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_requantize_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../r2sdf_fft/rTwoWMul.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="r2sdf_fft_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../fft_r2_bf_par.vhd">
-        <FileInfo>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../r2sdf_fft/rTwoBFStage.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="r2sdf_fft_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../r2sdf_fft/rTwoWeights.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="Library" Val="r2sdf_fft_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../r2sdf_fft/rTwoSDFStage.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="r2sdf_fft_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../fft_sepa.vhd">
-        <FileInfo>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../fft_reorder_sepa_pipe.vhd">
-        <FileInfo>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../fft_r2_pipe.vhd">
-        <FileInfo>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../ip_xpm/mult/ip_cmult_rtl_3dsp.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_multiplier_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../ip_xpm/mult/ip_cmult_rtl_4dsp.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_multiplier_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../ip_xpm/fifo/ip_xilinx_fifo_sc.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_fifo_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../ip_xpm/ram/ip_xpm_ram_cr_cw.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_ram_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../ip_xpm/ram/ip_xpm_ram_crw_crw.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_ram_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../ip_xpm/ram/ip_xpm_rom_r.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="ip_xpm_ram_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../ip_xpm/ram/ip_xpm_rom_r_r.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="ip_xpm_ram_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../fft_r2_par.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../fft_sepa_wide.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../fft_r2_wide.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../fft_wide_unit_control.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../fft_wide_unit.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PSRCDIR/sources_1/new/wb_slim_fft_top.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="ImportPath" Val="$PPRDIR/../../../Work/dspdevel_designs/casper_dspdevel/casper_wb_fft/casper_wb_barebones/casper_wb_barebones.srcs/sources_1/new/wb_slim_fft_top.vhd"/>
-          <Attr Name="ImportTime" Val="1624458631"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../common_pkg/common_lfsr_sequences_pkg.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="common_pkg_lib"/>
-          <Attr Name="AutoDisabled" Val="1"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_dp_pkg/dp_stream_pkg.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="dp_pkg_lib"/>
-          <Attr Name="AutoDisabled" Val="1"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../common_pkg/float_pkg_c.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="common_pkg_lib"/>
-          <Attr Name="AutoDisabled" Val="1"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <Config>
-        <Option Name="DesignMode" Val="RTL"/>
-        <Option Name="TopModule" Val="wideband_fft_top"/>
-        <Option Name="TopAutoSet" Val="TRUE"/>
-      </Config>
-    </FileSet>
-    <FileSet Name="constrs_1" Type="Constrs" RelSrcDir="$PSRCDIR/constrs_1">
-      <Filter Type="Constrs"/>
-      <File Path="$PSRCDIR/constrs_1/new/timingtest.xdc">
-        <FileInfo>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="implementation"/>
-        </FileInfo>
-      </File>
-      <Config>
-        <Option Name="TargetConstrsFile" Val="$PSRCDIR/constrs_1/new/timingtest.xdc"/>
-        <Option Name="ConstrsType" Val="XDC"/>
-      </Config>
-    </FileSet>
-    <FileSet Name="sim_1" Type="SimulationSrcs" RelSrcDir="$PSRCDIR/sim_1">
-      <Filter Type="Srcs"/>
-      <File Path="$PPRDIR/../../casper_sim_tools/common_wideband_data_scope.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_sim_tools_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../r2sdf_fft/rTwoSDFPkg.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="r2sdf_fft_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_mm/tb_common_mem_pkg.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_mm_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../common_pkg/tb_common_pkg.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="common_pkg_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../tb_fft_pkg.vhd">
-        <FileInfo>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../tb_fft_r2_wide.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../tb_tb_fft_r2_wide.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../tb_fft_r2_par.vhd">
-        <FileInfo>
-          <Attr Name="AutoDisabled" Val="1"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../tb_tb_fft_r2_par.vhd">
-        <FileInfo>
-          <Attr Name="AutoDisabled" Val="1"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../tb_fft_r2_pipe.vhd">
-        <FileInfo>
-          <Attr Name="AutoDisabled" Val="1"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../tb_tb_fft_r2_pipe.vhd">
-        <FileInfo>
-          <Attr Name="AutoDisabled" Val="1"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_mm/common_field_pkg.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_mm_lib"/>
-          <Attr Name="AutoDisabled" Val="1"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_diagnostics/diag_pkg.vhd">
-        <FileInfo>
-          <Attr Name="Library" Val="casper_diagnostics_lib"/>
-          <Attr Name="AutoDisabled" Val="1"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/tb_tb_fft_r2_wide_behav.wcfg">
-        <FileInfo>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <Config>
-        <Option Name="DesignMode" Val="RTL"/>
-        <Option Name="TopModule" Val="tb_tb_fft_r2_wide"/>
-        <Option Name="TopLib" Val="xil_defaultlib"/>
-        <Option Name="TransportPathDelay" Val="0"/>
-        <Option Name="TransportIntDelay" Val="0"/>
-        <Option Name="SelectedSimModel" Val="rtl"/>
-        <Option Name="PamDesignTestbench" Val=""/>
-        <Option Name="PamDutBypassFile" Val="xil_dut_bypass"/>
-        <Option Name="PamSignalDriverFile" Val="xil_bypass_driver"/>
-        <Option Name="PamPseudoTop" Val="pseudo_tb"/>
-        <Option Name="SrcSet" Val="sources_1"/>
-        <Option Name="XSimWcfgFile" Val="$PPRDIR/tb_tb_fft_r2_wide_behav.wcfg"/>
-        <Option Name="NLNetlistMode" Val="funcsim"/>
-      </Config>
-    </FileSet>
-    <FileSet Name="utils_1" Type="Utils" RelSrcDir="$PSRCDIR/utils_1">
-      <Filter Type="Utils"/>
-      <Config>
-        <Option Name="TopAutoSet" Val="TRUE"/>
-      </Config>
-    </FileSet>
-  </FileSets>
-  <Simulators>
-    <Simulator Name="XSim">
-      <Option Name="Description" Val="Vivado Simulator"/>
-      <Option Name="CompiledLib" Val="0"/>
-    </Simulator>
-    <Simulator Name="ModelSim">
-      <Option Name="Description" Val="ModelSim Simulator"/>
-    </Simulator>
-    <Simulator Name="Questa">
-      <Option Name="Description" Val="Questa Advanced Simulator"/>
-    </Simulator>
-    <Simulator Name="IES">
-      <Option Name="Description" Val="Incisive Enterprise Simulator (IES)"/>
-    </Simulator>
-    <Simulator Name="Xcelium">
-      <Option Name="Description" Val="Xcelium Parallel Simulator"/>
-    </Simulator>
-    <Simulator Name="VCS">
-      <Option Name="Description" Val="Verilog Compiler Simulator (VCS)"/>
-    </Simulator>
-    <Simulator Name="Riviera">
-      <Option Name="Description" Val="Riviera-PRO Simulator"/>
-    </Simulator>
-  </Simulators>
-  <Runs Version="1" Minor="11">
-    <Run Id="synth_1" Type="Ft3:Synth" SrcSet="sources_1" Part="xc7z020clg400-1" ConstrsSet="constrs_1" Description="Vivado Synthesis Defaults" AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" State="current" Dir="$PRUNDIR/synth_1" IncludeInArchive="true">
-      <Strategy Version="1" Minor="2">
-        <StratHandle Name="Vivado Synthesis Defaults" Flow="Vivado Synthesis 2019"/>
-        <Step Id="synth_design"/>
-      </Strategy>
-      <GeneratedRun Dir="$PRUNDIR" File="gen_run.xml"/>
-      <ReportStrategy Name="Vivado Synthesis Default Reports" Flow="Vivado Synthesis 2019"/>
-      <Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
-      <RQSFiles/>
-    </Run>
-    <Run Id="impl_1" Type="Ft2:EntireDesign" Part="xc7z020clg400-1" ConstrsSet="constrs_1" Description="Default settings for Implementation." AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" State="current" SynthRun="synth_1" IncludeInArchive="true" GenFullBitstream="true">
-      <Strategy Version="1" Minor="2">
-        <StratHandle Name="Vivado Implementation Defaults" Flow="Vivado Implementation 2019"/>
-        <Step Id="init_design"/>
-        <Step Id="opt_design"/>
-        <Step Id="power_opt_design"/>
-        <Step Id="place_design"/>
-        <Step Id="post_place_power_opt_design"/>
-        <Step Id="phys_opt_design"/>
-        <Step Id="route_design"/>
-        <Step Id="post_route_phys_opt_design"/>
-        <Step Id="write_bitstream"/>
-      </Strategy>
-      <ReportStrategy Name="Vivado Implementation Default Reports" Flow="Vivado Implementation 2019"/>
-      <Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
-      <RQSFiles/>
-    </Run>
-  </Runs>
-  <Board/>
-  <DashboardSummary Version="1" Minor="0">
-    <Dashboards>
-      <Dashboard Name="default_dashboard">
-        <Gadgets>
-          <Gadget Name="drc_1" Type="drc" Version="1" Row="2" Column="0">
-            <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_drc_0 "/>
-          </Gadget>
-          <Gadget Name="methodology_1" Type="methodology" Version="1" Row="2" Column="1">
-            <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_methodology_0 "/>
-          </Gadget>
-          <Gadget Name="power_1" Type="power" Version="1" Row="1" Column="0">
-            <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_power_0 "/>
-          </Gadget>
-          <Gadget Name="timing_1" Type="timing" Version="1" Row="0" Column="1">
-            <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_timing_summary_0 "/>
-          </Gadget>
-          <Gadget Name="utilization_1" Type="utilization" Version="1" Row="0" Column="0">
-            <GadgetParam Name="REPORTS" Type="string_list" Value="synth_1#synth_1_synth_report_utilization_0 "/>
-            <GadgetParam Name="RUN.STEP" Type="string" Value="synth_design"/>
-            <GadgetParam Name="RUN.TYPE" Type="string" Value="synthesis"/>
-          </Gadget>
-          <Gadget Name="utilization_2" Type="utilization" Version="1" Row="1" Column="1">
-            <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_place_report_utilization_0 "/>
-          </Gadget>
-        </Gadgets>
-      </Dashboard>
-      <CurrentDashboard>default_dashboard</CurrentDashboard>
-    </Dashboards>
-  </DashboardSummary>
-</Project>
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Product Version: Vivado v2020.1 (64-bit)              -->
+<!--                                                         -->
+<!-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved.   -->
+
+<Project Version="7" Minor="49" Path="C:/Users/mybur/Repos/CASPER/dspdevel_designs/casper_dspdevel/casper_wb_fft/casper_wb_fft_vivproj/casper_wb_fft_vivproj.xpr">
+  <DefaultLaunch Dir="$PRUNDIR"/>
+  <Configuration>
+    <Option Name="Id" Val="42eed8497aac428d8794a44a4e77c874"/>
+    <Option Name="Part" Val="xc7z020clg400-1"/>
+    <Option Name="CompiledLibDir" Val="$PCACHEDIR/compile_simlib"/>
+    <Option Name="CompiledLibDirXSim" Val=""/>
+    <Option Name="CompiledLibDirModelSim" Val="$PCACHEDIR/compile_simlib/modelsim"/>
+    <Option Name="CompiledLibDirQuesta" Val="$PCACHEDIR/compile_simlib/questa"/>
+    <Option Name="CompiledLibDirIES" Val="$PCACHEDIR/compile_simlib/ies"/>
+    <Option Name="CompiledLibDirXcelium" Val="$PCACHEDIR/compile_simlib/xcelium"/>
+    <Option Name="CompiledLibDirVCS" Val="$PCACHEDIR/compile_simlib/vcs"/>
+    <Option Name="CompiledLibDirRiviera" Val="$PCACHEDIR/compile_simlib/riviera"/>
+    <Option Name="CompiledLibDirActivehdl" Val="$PCACHEDIR/compile_simlib/activehdl"/>
+    <Option Name="SimulatorInstallDirModelSim" Val=""/>
+    <Option Name="SimulatorInstallDirQuesta" Val=""/>
+    <Option Name="SimulatorInstallDirIES" Val=""/>
+    <Option Name="SimulatorInstallDirXcelium" Val=""/>
+    <Option Name="SimulatorInstallDirVCS" Val=""/>
+    <Option Name="SimulatorInstallDirRiviera" Val=""/>
+    <Option Name="SimulatorInstallDirActiveHdl" Val=""/>
+    <Option Name="TargetLanguage" Val="VHDL"/>
+    <Option Name="BoardPart" Val=""/>
+    <Option Name="ActiveSimSet" Val="sim_1"/>
+    <Option Name="DefaultLib" Val="xil_defaultlib"/>
+    <Option Name="ProjectType" Val="Default"/>
+    <Option Name="IPOutputRepo" Val="D:/CASPERWORK/Development/casper_dspdevel/casper_wb_fft/casper_wb_fft_vivproj/casper_wb_fft_vivproj.cache/ip"/>
+    <Option Name="IPCachePermission" Val="read"/>
+    <Option Name="IPCachePermission" Val="write"/>
+    <Option Name="EnableCoreContainer" Val="FALSE"/>
+    <Option Name="CreateRefXciForCoreContainers" Val="FALSE"/>
+    <Option Name="IPUserFilesDir" Val="$PIPUSERFILESDIR"/>
+    <Option Name="IPStaticSourceDir" Val="$PIPUSERFILESDIR/ipstatic"/>
+    <Option Name="EnableBDX" Val="FALSE"/>
+    <Option Name="WTXSimLaunchSim" Val="289"/>
+    <Option Name="WTModelSimLaunchSim" Val="0"/>
+    <Option Name="WTQuestaLaunchSim" Val="0"/>
+    <Option Name="WTIesLaunchSim" Val="0"/>
+    <Option Name="WTVcsLaunchSim" Val="0"/>
+    <Option Name="WTRivieraLaunchSim" Val="0"/>
+    <Option Name="WTActivehdlLaunchSim" Val="0"/>
+    <Option Name="WTXSimExportSim" Val="0"/>
+    <Option Name="WTModelSimExportSim" Val="0"/>
+    <Option Name="WTQuestaExportSim" Val="0"/>
+    <Option Name="WTIesExportSim" Val="0"/>
+    <Option Name="WTVcsExportSim" Val="0"/>
+    <Option Name="WTRivieraExportSim" Val="0"/>
+    <Option Name="WTActivehdlExportSim" Val="0"/>
+    <Option Name="GenerateIPUpgradeLog" Val="TRUE"/>
+    <Option Name="XSimRadix" Val="hex"/>
+    <Option Name="XSimTimeUnit" Val="ns"/>
+    <Option Name="XSimArrayDisplayLimit" Val="1024"/>
+    <Option Name="XSimTraceLimit" Val="65536"/>
+    <Option Name="SimTypes" Val="rtl"/>
+    <Option Name="SimTypes" Val="bfm"/>
+    <Option Name="SimTypes" Val="tlm"/>
+    <Option Name="SimTypes" Val="tlm_dpi"/>
+    <Option Name="MEMEnableMemoryMapGeneration" Val="TRUE"/>
+    <Option Name="DcpsUptoDate" Val="TRUE"/>
+  </Configuration>
+  <FileSets Version="1" Minor="31">
+    <FileSet Name="sources_1" Type="DesignSrcs" RelSrcDir="$PSRCDIR/sources_1">
+      <Filter Type="Srcs"/>
+      <File Path="$PPRDIR/../../common_pkg/fixed_pkg_c.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="common_pkg_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../common_pkg/common_pkg.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="common_pkg_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../common_components/common_pipeline.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="common_components_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_adder/common_add_sub.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_adder_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../common_components/common_async.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="common_components_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../common_components/common_areset.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="common_components_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../common_components/common_bit_delay.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="common_components_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../technology/technology_select_pkg.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="technology_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../common_components/common_pipeline_sl.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="common_components_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_multiplier/tech_mult_component.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_multiplier_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_multiplier/tech_agilex_versal_cmult.vhd">
+        <FileInfo SFType="VHDL2008">
+          <Attr Name="Library" Val="casper_multiplier_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_multiplier/tech_complex_mult.vhd">
+        <FileInfo SFType="VHDL2008">
+          <Attr Name="Library" Val="casper_multiplier_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_multiplier/common_complex_mult.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_multiplier_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_counter/common_counter.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_counter_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../common_components/common_delay.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="common_components_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_fifo/common_rl_decrease.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_fifo_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_fifo/common_fifo_rd.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_fifo_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_fifo/tech_fifo_component_pkg.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_fifo_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_fifo/tech_fifo_sc.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_fifo_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_fifo/common_fifo_sc.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_fifo_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_ram/common_ram_pkg.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_ram_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_ram/tech_memory_component_pkg.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_ram_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_ram/tech_memory_ram_crw_crw.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_ram_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_ram/tech_memory_ram_cr_cw.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_ram_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_ram/common_ram_crw_crw.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_ram_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_ram/common_paged_ram_crw_crw.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_ram_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_ram/common_paged_ram_rw_rw.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_ram_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_ram/common_paged_ram_r_w.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_ram_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_requantize/common_round.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_requantize_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_requantize/common_resize.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_requantize_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_requantize/common_requantize.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_requantize_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_ram/tech_memory_rom_r_r.vhd">
+        <FileInfo SFType="VHDL2008">
+          <Attr Name="Library" Val="casper_ram_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_ram/tech_memory_rom_r.vhd">
+        <FileInfo SFType="VHDL2008">
+          <Attr Name="Library" Val="casper_ram_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_ram/common_rom_r_r.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_ram_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../common_pkg/common_str_pkg.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="common_pkg_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_multiplexer/common_zip.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_multiplexer_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../fft_gnrcs_intrfcs_pkg.vhd">
+        <FileInfo>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../r2sdf_fft/twiddlesPkg.vhd">
+        <FileInfo SFType="VHDL2008">
+          <Attr Name="Library" Val="r2sdf_fft_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../r2sdf_fft/rTwoSDFPkg.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="r2sdf_fft_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../r2sdf_fft/rTwoBF.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="r2sdf_fft_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_requantize/r_shift_requantize.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_requantize_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../r2sdf_fft/rTwoWMul.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="r2sdf_fft_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../fft_r2_bf_par.vhd">
+        <FileInfo>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../r2sdf_fft/rTwoBFStage.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="r2sdf_fft_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../r2sdf_fft/rTwoWeights.vhd">
+        <FileInfo SFType="VHDL2008">
+          <Attr Name="Library" Val="r2sdf_fft_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../r2sdf_fft/rTwoSDFStage.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="r2sdf_fft_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../fft_sepa.vhd">
+        <FileInfo>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../fft_reorder_sepa_pipe.vhd">
+        <FileInfo>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../fft_r2_pipe.vhd">
+        <FileInfo>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../ip_xpm/mult/ip_cmult_rtl_3dsp.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_multiplier_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../ip_xpm/mult/ip_cmult_rtl_4dsp.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_multiplier_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../ip_xpm/fifo/ip_xilinx_fifo_sc.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_fifo_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../ip_xpm/ram/ip_xpm_ram_cr_cw.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_ram_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../ip_xpm/ram/ip_xpm_ram_crw_crw.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_ram_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../ip_xpm/ram/ip_xpm_rom_r.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="ip_xpm_ram_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../ip_xpm/ram/ip_xpm_rom_r_r.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="ip_xpm_ram_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../fft_r2_par.vhd">
+        <FileInfo SFType="VHDL2008">
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../fft_sepa_wide.vhd">
+        <FileInfo SFType="VHDL2008">
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../fft_r2_wide.vhd">
+        <FileInfo SFType="VHDL2008">
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../fft_wide_unit_control.vhd">
+        <FileInfo SFType="VHDL2008">
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../fft_wide_unit.vhd">
+        <FileInfo SFType="VHDL2008">
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PSRCDIR/sources_1/new/wb_slim_fft_top.vhd">
+        <FileInfo SFType="VHDL2008">
+          <Attr Name="ImportPath" Val="$PPRDIR/../../../Work/dspdevel_designs/casper_dspdevel/casper_wb_fft/casper_wb_barebones/casper_wb_barebones.srcs/sources_1/new/wb_slim_fft_top.vhd"/>
+          <Attr Name="ImportTime" Val="1624458631"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../common_pkg/common_lfsr_sequences_pkg.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="common_pkg_lib"/>
+          <Attr Name="AutoDisabled" Val="1"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_dp_pkg/dp_stream_pkg.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="dp_pkg_lib"/>
+          <Attr Name="AutoDisabled" Val="1"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../common_pkg/float_pkg_c.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="common_pkg_lib"/>
+          <Attr Name="AutoDisabled" Val="1"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <Config>
+        <Option Name="DesignMode" Val="RTL"/>
+        <Option Name="TopModule" Val="wideband_fft_top"/>
+        <Option Name="TopAutoSet" Val="TRUE"/>
+      </Config>
+    </FileSet>
+    <FileSet Name="constrs_1" Type="Constrs" RelSrcDir="$PSRCDIR/constrs_1">
+      <Filter Type="Constrs"/>
+      <File Path="$PSRCDIR/constrs_1/new/timingtest.xdc">
+        <FileInfo>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="implementation"/>
+        </FileInfo>
+      </File>
+      <Config>
+        <Option Name="TargetConstrsFile" Val="$PSRCDIR/constrs_1/new/timingtest.xdc"/>
+        <Option Name="ConstrsType" Val="XDC"/>
+      </Config>
+    </FileSet>
+    <FileSet Name="sim_1" Type="SimulationSrcs" RelSrcDir="$PSRCDIR/sim_1">
+      <Filter Type="Srcs"/>
+      <File Path="$PPRDIR/../../casper_sim_tools/common_wideband_data_scope.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_sim_tools_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../r2sdf_fft/rTwoSDFPkg.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="r2sdf_fft_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_mm/tb_common_mem_pkg.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_mm_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../common_pkg/tb_common_pkg.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="common_pkg_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../tb_fft_pkg.vhd">
+        <FileInfo>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../tb_fft_r2_wide.vhd">
+        <FileInfo SFType="VHDL2008">
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../tb_tb_fft_r2_wide.vhd">
+        <FileInfo SFType="VHDL2008">
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../tb_fft_r2_par.vhd">
+        <FileInfo>
+          <Attr Name="AutoDisabled" Val="1"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../tb_tb_fft_r2_par.vhd">
+        <FileInfo>
+          <Attr Name="AutoDisabled" Val="1"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../tb_fft_r2_pipe.vhd">
+        <FileInfo>
+          <Attr Name="AutoDisabled" Val="1"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../tb_tb_fft_r2_pipe.vhd">
+        <FileInfo>
+          <Attr Name="AutoDisabled" Val="1"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_mm/common_field_pkg.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_mm_lib"/>
+          <Attr Name="AutoDisabled" Val="1"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_diagnostics/diag_pkg.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_diagnostics_lib"/>
+          <Attr Name="AutoDisabled" Val="1"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <Config>
+        <Option Name="DesignMode" Val="RTL"/>
+        <Option Name="TopModule" Val="tb_tb_fft_r2_wide"/>
+        <Option Name="TopLib" Val="xil_defaultlib"/>
+        <Option Name="TransportPathDelay" Val="0"/>
+        <Option Name="TransportIntDelay" Val="0"/>
+        <Option Name="SelectedSimModel" Val="rtl"/>
+        <Option Name="PamDesignTestbench" Val=""/>
+        <Option Name="PamDutBypassFile" Val="xil_dut_bypass"/>
+        <Option Name="PamSignalDriverFile" Val="xil_bypass_driver"/>
+        <Option Name="PamPseudoTop" Val="pseudo_tb"/>
+        <Option Name="SrcSet" Val="sources_1"/>
+        <Option Name="XSimWcfgFile" Val="$PPRDIR/tb_tb_fft_r2_wide_behav.wcfg"/>
+        <Option Name="NLNetlistMode" Val="funcsim"/>
+      </Config>
+    </FileSet>
+    <FileSet Name="utils_1" Type="Utils" RelSrcDir="$PSRCDIR/utils_1">
+      <Filter Type="Utils"/>
+      <Config>
+        <Option Name="TopAutoSet" Val="TRUE"/>
+      </Config>
+    </FileSet>
+  </FileSets>
+  <Simulators>
+    <Simulator Name="XSim">
+      <Option Name="Description" Val="Vivado Simulator"/>
+      <Option Name="CompiledLib" Val="0"/>
+    </Simulator>
+    <Simulator Name="ModelSim">
+      <Option Name="Description" Val="ModelSim Simulator"/>
+    </Simulator>
+    <Simulator Name="Questa">
+      <Option Name="Description" Val="Questa Advanced Simulator"/>
+    </Simulator>
+    <Simulator Name="Riviera">
+      <Option Name="Description" Val="Riviera-PRO Simulator"/>
+    </Simulator>
+    <Simulator Name="ActiveHDL">
+      <Option Name="Description" Val="Active-HDL Simulator"/>
+    </Simulator>
+  </Simulators>
+  <Runs Version="1" Minor="11">
+    <Run Id="synth_1" Type="Ft3:Synth" SrcSet="sources_1" Part="xc7z020clg400-1" ConstrsSet="constrs_1" Description="Vivado Synthesis Defaults" AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" State="current" IncludeInArchive="true">
+      <Strategy Version="1" Minor="2">
+        <StratHandle Name="Vivado Synthesis Defaults" Flow="Vivado Synthesis 2019"/>
+        <Step Id="synth_design"/>
+      </Strategy>
+      <ReportStrategy Name="Vivado Synthesis Default Reports" Flow="Vivado Synthesis 2019"/>
+      <Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
+      <RQSFiles/>
+    </Run>
+    <Run Id="impl_1" Type="Ft2:EntireDesign" Part="xc7z020clg400-1" ConstrsSet="constrs_1" Description="Default settings for Implementation." AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" State="current" SynthRun="synth_1" IncludeInArchive="true" GenFullBitstream="true">
+      <Strategy Version="1" Minor="2">
+        <StratHandle Name="Vivado Implementation Defaults" Flow="Vivado Implementation 2019"/>
+        <Step Id="init_design"/>
+        <Step Id="opt_design"/>
+        <Step Id="power_opt_design"/>
+        <Step Id="place_design"/>
+        <Step Id="post_place_power_opt_design"/>
+        <Step Id="phys_opt_design"/>
+        <Step Id="route_design"/>
+        <Step Id="post_route_phys_opt_design"/>
+        <Step Id="write_bitstream"/>
+      </Strategy>
+      <ReportStrategy Name="Vivado Implementation Default Reports" Flow="Vivado Implementation 2019"/>
+      <Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
+      <RQSFiles/>
+    </Run>
+  </Runs>
+  <Board/>
+  <DashboardSummary Version="1" Minor="0">
+    <Dashboards>
+      <Dashboard Name="default_dashboard">
+        <Gadgets>
+          <Gadget Name="drc_1" Type="drc" Version="1" Row="2" Column="0">
+            <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_drc_0 "/>
+          </Gadget>
+          <Gadget Name="methodology_1" Type="methodology" Version="1" Row="2" Column="1">
+            <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_methodology_0 "/>
+          </Gadget>
+          <Gadget Name="power_1" Type="power" Version="1" Row="1" Column="0">
+            <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_power_0 "/>
+          </Gadget>
+          <Gadget Name="timing_1" Type="timing" Version="1" Row="0" Column="1">
+            <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_timing_summary_0 "/>
+          </Gadget>
+          <Gadget Name="utilization_1" Type="utilization" Version="1" Row="0" Column="0">
+            <GadgetParam Name="REPORTS" Type="string_list" Value="synth_1#synth_1_synth_report_utilization_0 "/>
+            <GadgetParam Name="RUN.STEP" Type="string" Value="synth_design"/>
+            <GadgetParam Name="RUN.TYPE" Type="string" Value="synthesis"/>
+          </Gadget>
+          <Gadget Name="utilization_2" Type="utilization" Version="1" Row="1" Column="1">
+            <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_place_report_utilization_0 "/>
+          </Gadget>
+        </Gadgets>
+      </Dashboard>
+      <CurrentDashboard>default_dashboard</CurrentDashboard>
+    </Dashboards>
+  </DashboardSummary>
+</Project>
diff --git a/casper_wb_fft/fft_gnrcs_intrfcs_pkg.vhd b/casper_wb_fft/fft_gnrcs_intrfcs_pkg.vhd
index 19d3cae8..bab7b02d 100644
--- a/casper_wb_fft/fft_gnrcs_intrfcs_pkg.vhd
+++ b/casper_wb_fft/fft_gnrcs_intrfcs_pkg.vhd
@@ -5,7 +5,7 @@ USE common_pkg_lib.common_pkg.ALL;
 
 PACKAGE fft_gnrcs_intrfcs_pkg IS
 --UPDATED BY MATLAB CODE GENERATION FOR SLV ARRAYS/INTERFACES:
-CONSTANT c_fft_in_dat_w       : natural := 16;
+CONSTANT c_fft_in_dat_w       : natural := 8;
 CONSTANT c_fft_out_dat_w      : natural := 16;
 CONSTANT c_fft_stage_dat_w    : natural := 18;
 
@@ -87,8 +87,8 @@ function fft_r2_parameter_asserts(g_fft : t_fft) return boolean; -- the return v
 TYPE t_fft_sosi_in IS RECORD  -- Source Out or Sink In
 sync     : STD_LOGIC; 
 bsn      : STD_LOGIC_VECTOR(c_dp_stream_bsn_w-1 DOWNTO 0);      -- ctrl
-re       : STD_LOGIC_VECTOR; --(c_fft_in_dat_w-1 DOWNTO 0);             -- data
-im       : STD_LOGIC_VECTOR; --(c_fft_in_dat_w-1 DOWNTO 0);             -- data
+re       : STD_LOGIC_VECTOR(c_fft_in_dat_w-1 DOWNTO 0);             -- data
+im       : STD_LOGIC_VECTOR(c_fft_in_dat_w-1 DOWNTO 0);             -- data
 valid    : STD_LOGIC;                                           -- ctrl
 sop      : STD_LOGIC;                                           -- ctrl
 eop      : STD_LOGIC;                                           -- ctrl
diff --git a/casper_wb_fft/fft_r2_bf_par.vhd b/casper_wb_fft/fft_r2_bf_par.vhd
index 01a25e15..d16943b2 100755
--- a/casper_wb_fft/fft_r2_bf_par.vhd
+++ b/casper_wb_fft/fft_r2_bf_par.vhd
@@ -46,8 +46,8 @@ entity fft_r2_bf_par is
 		-- multiplier settings
 		g_use_variant  	 : STRING     		:= "4DSP";
 		g_ovflw_behav  	 : string			:= "WRAP";
-		g_use_round	   	 : string			:= "ROUND";
-		g_use_mult_round : string           := "TRUNCATE";
+		g_round	   	 	 : t_rounding_mode	:= ROUND;
+		g_use_mult_round : t_rounding_mode  := TRUNCATE;
 		g_use_dsp      	 : STRING         	:= "yes"
 	);
 	port(
@@ -70,9 +70,7 @@ end entity fft_r2_bf_par;
 
 architecture str of fft_r2_bf_par is
 
-	constant c_round	: boolean := sel_a_b(g_use_round ="ROUND", TRUE, FALSE);
 	constant c_clip		: boolean := sel_a_b(g_ovflw_behav="SATURATE", TRUE, FALSE);
-	constant c_mult_trunc	: boolean := sel_a_b(g_use_mult_round ="ROUND", FALSE, TRUE);
 	constant c_out_dat_w : natural := x_out_re'length; -- re and im have same width  
 
 	constant c_bf_in_a_zdly  : natural := 0; -- No delays in bf_stage, since they only apply to one in- or output
@@ -150,7 +148,7 @@ begin
 	------------------------------------------------------------------------------
 	u_requantize_x_re : entity casper_requantize_lib.r_shift_requantize
 		generic map(
-			g_lsb_round           => c_round,
+			g_lsb_round           => g_round,
 			g_lsb_round_clip      => FALSE,
 			g_in_dat_w            => sum_re'LENGTH,
 			g_out_dat_w           => sum_quant_re'LENGTH
@@ -165,7 +163,7 @@ begin
 
 	u_requantize_x_im : entity casper_requantize_lib.r_shift_requantize
 		generic map(
-			g_lsb_round           => c_round,
+			g_lsb_round           => g_round,
 			g_lsb_round_clip      => FALSE,
 			g_in_dat_w            => sum_im'LENGTH,
 			g_out_dat_w           => sum_quant_im'LENGTH
@@ -247,7 +245,7 @@ begin
 			g_use_dsp    	=> g_use_dsp,
 			g_use_variant	=> g_use_variant,
 			g_stage      	=> g_stage,
-			g_use_truncate  => c_mult_trunc,
+			g_round  		=> g_use_mult_round,
 			g_lat        	=> g_pipeline.mul_lat
 		)
 		port map(
@@ -278,7 +276,7 @@ begin
 	------------------------------------------------------------------------------
 	u_requantize_y_re : entity casper_requantize_lib.r_shift_requantize
 		generic map(
-			g_lsb_round         => c_round,
+			g_lsb_round         => g_round,
 			g_lsb_round_clip    => FALSE,
 			g_in_dat_w          => mul_out_re'LENGTH,
 			g_out_dat_w         => mul_quant_re'LENGTH
@@ -293,7 +291,7 @@ begin
 
 	u_requantize_y_im : entity casper_requantize_lib.r_shift_requantize
 		generic map(
-			g_lsb_round         => c_round,
+			g_lsb_round         => g_round,
 			g_lsb_round_clip    => FALSE,
 			g_in_dat_w          => mul_out_im'LENGTH,
 			g_out_dat_w         => mul_quant_im'LENGTH
diff --git a/casper_wb_fft/fft_r2_par.vhd b/casper_wb_fft/fft_r2_par.vhd
index e97d33fa..e224917a 100755
--- a/casper_wb_fft/fft_r2_par.vhd
+++ b/casper_wb_fft/fft_r2_par.vhd
@@ -42,13 +42,13 @@ use work.fft_gnrcs_intrfcs_pkg.all;
 
 entity fft_r2_par is
     generic(
-        g_fft         : t_fft          := c_fft; --! generics for the FFT
-        g_pipeline    : t_fft_pipeline := c_fft_pipeline; --! generics for pipelining, defined in r2sdf_fft_lib.rTwoSDFPkg
-        g_use_variant : string         := "4DSP"; --! = "4DSP" or "3DSP" for 3 or 4 mult cmult.
-        g_use_dsp     : string         := "yes"; --! = "yes" or "no"
-        g_ovflw_behav : string         := "WRAP"; --! = "WRAP" or "SATURATE" will default to WRAP if invalid option used
-        g_use_mult_round : string      := "TRUNCATE";
-        g_use_round   : string         := "ROUND" --! = "ROUND" or "TRUNCATE" will default to TRUNCATE if invalid option used
+        g_fft               : t_fft             := c_fft; --! generics for the FFT
+        g_pipeline          : t_fft_pipeline    := c_fft_pipeline; --! generics for pipelining, defined in r2sdf_fft_lib.rTwoSDFPkg
+        g_use_variant       : string            := "4DSP"; --! = "4DSP" or "3DSP" for 3 or 4 mult cmult.
+        g_use_dsp           : string            := "yes"; --! = "yes" or "no"
+        g_ovflw_behav       : string            := "WRAP"; --! = "WRAP" or "SATURATE" will default to WRAP if invalid option used
+        g_use_mult_round    : t_rounding_mode   := TRUNCATE;
+        g_round             : t_rounding_mode   := ROUND --! = "ROUND" or "TRUNCATE" will default to TRUNCATE if invalid option used
     );
     port(
         clk        : in  std_logic;     --! Clock
@@ -127,7 +127,6 @@ architecture str of fft_r2_par is
         return v_return;
     end;
 
-    constant c_round : boolean := sel_a_b(g_use_round = "ROUND", TRUE, FALSE);
     constant c_clip  : boolean := sel_a_b(g_ovflw_behav = "SATURATE", TRUE, FALSE);
 
     constant c_pipeline_add_sub    : natural := 1;
@@ -192,7 +191,7 @@ begin
                     g_pipeline    => g_pipeline,
                     g_use_variant => g_use_variant,
                     g_ovflw_behav => g_ovflw_behav,
-                    g_use_round   => g_use_round,
+                    g_round   => g_round,
                     g_use_mult_round => g_use_mult_round,
                     g_use_dsp     => g_use_dsp
                 )
@@ -328,7 +327,7 @@ begin
                 round_re_a : ENTITY casper_requantize_lib.common_round
                     GENERIC MAP(
                         g_representation  => "SIGNED", -- SIGNED (round +-0.5 away from zero to +- infinity) or UNSIGNED rounding (round 0.5 up to + inifinity)
-                        g_round           => c_round, -- when TRUE round the input, else truncate the input
+                        g_round           => g_round, 
                         g_round_clip      => c_clip, -- when TRUE clip rounded input >= +max to avoid wrapping to output -min (signed) or 0 (unsigned)
                         g_pipeline_input  => 0, -- >= 0
                         g_pipeline_output => 0, -- >= 0, use g_pipeline_input=0 and g_pipeline_output=0 for combinatorial output
@@ -344,7 +343,7 @@ begin
                 round_re_b : ENTITY casper_requantize_lib.common_round
                     GENERIC MAP(
                         g_representation  => "SIGNED", -- SIGNED (round +-0.5 away from zero to +- infinity) or UNSIGNED rounding (round 0.5 up to + inifinity)
-                        g_round           => c_round, -- when TRUE round the input, else truncate the input
+                        g_round           => g_round, 
                         g_round_clip      => c_clip, -- when TRUE clip rounded input >= +max to avoid wrapping to output -min (signed) or 0 (unsigned)
                         g_pipeline_input  => 0, -- >= 0
                         g_pipeline_output => 0, -- >= 0, use g_pipeline_input=0 and g_pipeline_output=0 for combinatorial output
@@ -360,7 +359,7 @@ begin
                 round_im_a : ENTITY casper_requantize_lib.common_round
                     GENERIC MAP(
                         g_representation  => "SIGNED", -- SIGNED (round +-0.5 away from zero to +- infinity) or UNSIGNED rounding (round 0.5 up to + inifinity)
-                        g_round           => c_round, -- when TRUE round the input, else truncate the input
+                        g_round           => g_round, 
                         g_round_clip      => c_clip, -- when TRUE clip rounded input >= +max to avoid wrapping to output -min (signed) or 0 (unsigned)
                         g_pipeline_input  => 0, -- >= 0
                         g_pipeline_output => 0, -- >= 0, use g_pipeline_input=0 and g_pipeline_output=0 for combinatorial output
@@ -376,7 +375,7 @@ begin
                 round_im_b : ENTITY casper_requantize_lib.common_round
                     GENERIC MAP(
                         g_representation  => "SIGNED", -- SIGNED (round +-0.5 away from zero to +- infinity) or UNSIGNED rounding (round 0.5 up to + inifinity)
-                        g_round           => c_round, -- when TRUE round the input, else truncate the input
+                        g_round           => g_round, 
                         g_round_clip      => c_clip, -- when TRUE clip rounded input >= +max to avoid wrapping to output -min (signed) or 0 (unsigned)
                         g_pipeline_input  => 0, -- >= 0
                         g_pipeline_output => 0, -- >= 0, use g_pipeline_input=0 and g_pipeline_output=0 for combinatorial output
@@ -458,7 +457,7 @@ begin
             generic map(
                 g_representation      => "SIGNED",
                 g_lsb_w               => c_out_scale_w,
-                g_lsb_round           => c_round,
+                g_lsb_round           => g_round,
                 g_lsb_round_clip      => FALSE,
                 g_msb_clip            => c_clip,
                 g_msb_clip_symmetric  => FALSE,
@@ -480,7 +479,7 @@ begin
             generic map(
                 g_representation      => "SIGNED",
                 g_lsb_w               => c_out_scale_w,
-                g_lsb_round           => c_round,
+                g_lsb_round           => g_round,
                 g_lsb_round_clip      => FALSE,
                 g_msb_clip            => c_clip,
                 g_msb_clip_symmetric  => FALSE,
diff --git a/casper_wb_fft/fft_r2_pipe.vhd b/casper_wb_fft/fft_r2_pipe.vhd
index d9fccbd2..98ee7573 100755
--- a/casper_wb_fft/fft_r2_pipe.vhd
+++ b/casper_wb_fft/fft_r2_pipe.vhd
@@ -54,17 +54,17 @@ use work.fft_gnrcs_intrfcs_pkg.all;
 
 entity fft_r2_pipe is
     generic(
-        g_fft                : t_fft          := c_fft; --! generics for the FFT
-        g_pipeline           : t_fft_pipeline := c_fft_pipeline; --! generics for pipelining in each stage, defined in r2sdf_fft_lib.rTwoSDFPkg
-        g_dont_flip_channels : boolean        := false; --! generic to prevent re-ordering of the channels
-        g_wb_inst            : natural        := 0; --! pipeline instance in a wb fft. =1 if r2sdf_fft.
-        g_use_variant        : string         := "4DSP"; --! = "4DSP" or "3DSP" for 3 or 4 mult cmult.
-        g_use_dsp            : string         := "yes"; --! = "yes" or "no"
-        g_ovflw_behav        : string         := "WRAP"; --! = "WRAP" or "SATURATE" will default to WRAP if invalid option used
-        g_use_round          : string         := "ROUND"; --! = "ROUND" or "TRUNCATE" will default to TRUNCATE if invalid option used
-        g_use_mult_round     : string         := "TRUNCATE";
-        g_twid_file_stem     : string         := "UNUSED"; --! path stem for twiddle factors
-        g_ram_primitive      : string         := "auto" --! = "auto", "distributed", "ultra" or "block"
+        g_fft                : t_fft            := c_fft;           --! generics for the FFT
+        g_pipeline           : t_fft_pipeline   := c_fft_pipeline;  --! generics for pipelining in each stage, defined in r2sdf_fft_lib.rTwoSDFPkg
+        g_dont_flip_channels : boolean          := false;           --! generic to prevent re-ordering of the channels
+        g_wb_inst            : natural          := 0;               --! pipeline instance in a wb fft. =1 if r2sdf_fft.
+        g_use_variant        : string           := "4DSP";          --! = "4DSP" or "3DSP" for 3 or 4 mult cmult.
+        g_use_dsp            : string           := "yes";           --! = "yes" or "no"
+        g_ovflw_behav        : string           := "WRAP";          --! = "WRAP" or "SATURATE" will default to WRAP if invalid option used
+        g_round              : t_rounding_mode  := ROUND;           --! = ROUND, ROUNDINF or TRUNCATE
+        g_use_mult_round     : t_rounding_mode  := TRUNCATE;
+        g_twid_file_stem     : string           := "UNUSED";        --! path stem for twiddle factors
+        g_ram_primitive      : string           := "auto"           --! = "auto", "distributed", "ultra" or "block"
     );
     port(
         clken    : in  std_logic;       --! Clock enable
@@ -83,7 +83,6 @@ end entity fft_r2_pipe;
 
 architecture str of fft_r2_pipe is
 
-    constant c_round : boolean := sel_a_b(g_use_round = "ROUND", TRUE, FALSE);
     constant c_clip  : boolean := sel_a_b(g_ovflw_behav = "SATURATE", TRUE, FALSE);
 
     constant c_pipeline_remove_lsb : natural := 0;
@@ -130,7 +129,7 @@ begin
                 g_use_variant    => g_use_variant,
                 g_use_dsp        => g_use_dsp,
                 g_ovflw_behav    => g_ovflw_behav,
-                g_use_round      => g_use_round,
+                g_round          => g_round,
                 g_use_mult_round => g_use_mult_round,
                 g_ram_primitive  => g_ram_primitive,
                 g_twid_file_stem => g_twid_file_stem,
@@ -195,7 +194,7 @@ begin
         generic map(
             g_representation      => "SIGNED",
             g_lsb_w               => c_out_scale_w,
-            g_lsb_round           => c_round,
+            g_lsb_round           => g_round,
             g_lsb_round_clip      => FALSE,
             g_msb_clip            => c_clip,
             g_msb_clip_symmetric  => FALSE,
@@ -215,7 +214,7 @@ begin
         generic map(
             g_representation      => "SIGNED",
             g_lsb_w               => c_out_scale_w,
-            g_lsb_round           => c_round,
+            g_lsb_round           => g_round,
             g_lsb_round_clip      => FALSE,
             g_msb_clip            => c_clip,
             g_msb_clip_symmetric  => FALSE,
diff --git a/casper_wb_fft/fft_r2_wide.vhd b/casper_wb_fft/fft_r2_wide.vhd
index 091857c9..ebee4ef7 100755
--- a/casper_wb_fft/fft_r2_wide.vhd
+++ b/casper_wb_fft/fft_r2_wide.vhd
@@ -72,17 +72,17 @@ use work.fft_gnrcs_intrfcs_pkg.all;
 
 entity fft_r2_wide is
     generic(
-        g_fft            : t_fft          := c_fft; --! generics for the FFT
-        g_pft_pipeline   : t_fft_pipeline := c_fft_pipeline; --! For the pipelined part, from r2sdf_fft_lib.rTwoSDFPkg
-        g_fft_pipeline   : t_fft_pipeline := c_fft_pipeline; --! For the parallel part, from r2sdf_fft_lib.rTwoSDFPkg
-        g_alt_output     : boolean        := FALSE; --! Governs the ordering of the output samples. False = ArBrArBr;AiBiAiBi, True = AiArAiAr;BiBrBiBr
-        g_use_variant    : string         := "4DSP"; --! = "4DSP" or "3DSP" for 3 or 4 mult cmult.
-        g_use_dsp        : string         := "yes"; --! = "yes" or "no"
-        g_ovflw_behav    : string         := "WRAP"; --! = "WRAP" or "SATURATE" will default to WRAP if invalid option used
-        g_use_round      : string         := "ROUND"; --! = "ROUND" or "TRUNCATE" will default to TRUNCATE if invalid option used
-        g_use_mult_round : string         := "TRUNCATE";
-        g_ram_primitive  : string         := "auto"; --! = "auto", "distributed", "block" or "ultra" for RAM architecture
-        g_twid_file_stem : string         := "UNUSED" --! twid file stem location
+        g_fft            : t_fft            := c_fft; --! generics for the FFT
+        g_pft_pipeline   : t_fft_pipeline   := c_fft_pipeline; --! For the pipelined part, from r2sdf_fft_lib.rTwoSDFPkg
+        g_fft_pipeline   : t_fft_pipeline   := c_fft_pipeline; --! For the parallel part, from r2sdf_fft_lib.rTwoSDFPkg
+        g_alt_output     : boolean          := FALSE; --! Governs the ordering of the output samples. False = ArBrArBr;AiBiAiBi, True = AiArAiAr;BiBrBiBr
+        g_use_variant    : string           := "4DSP"; --! = "4DSP" or "3DSP" for 3 or 4 mult cmult.
+        g_use_dsp        : string           := "yes"; --! = "yes" or "no"
+        g_ovflw_behav    : string           := "WRAP"; --! = "WRAP" or "SATURATE" will default to WRAP if invalid option used
+        g_round          : t_rounding_mode  := ROUND; --! = ROUND, ROUNDINF or TRUNCATE will default to TRUNCATE if invalid option used
+        g_use_mult_round : t_rounding_mode  := TRUNCATE;
+        g_ram_primitive  : string           := "auto"; --! = "auto", "distributed", "block" or "ultra" for RAM architecture
+        g_twid_file_stem : string           := "UNUSED" --! twid file stem location
     );
     port(
         clken      : in  std_logic;     --! Clock enable
@@ -150,7 +150,6 @@ architecture rtl of fft_r2_wide is
         return v_return;
     end;
 
-    constant c_round : boolean := sel_a_b(g_use_round = "ROUND", true, false);
     constant c_clip  : boolean := sel_a_b(g_ovflw_behav = "SATURATE", true, false);
 
     constant c_pipeline_remove_lsb : natural := 0;
@@ -209,7 +208,7 @@ begin
                 g_use_variant    => g_use_variant,
                 g_use_dsp        => g_use_dsp,
                 g_ovflw_behav    => g_ovflw_behav,
-                g_use_round      => g_use_round,
+                g_round          => g_round,
                 g_use_mult_round => g_use_mult_round,
                 g_ram_primitive  => g_ram_primitive,
                 g_twid_file_stem => g_twid_file_stem
@@ -252,7 +251,7 @@ begin
                 g_use_dsp     => g_use_dsp,
                 g_ovflw_behav => g_ovflw_behav,
                 g_use_mult_round => g_use_mult_round,
-                g_use_round   => g_use_round
+                g_round      => g_round
             )
             port map(
                 clk        => clk,
@@ -292,7 +291,7 @@ begin
                     g_use_variant    => g_use_variant,
                     g_use_dsp        => g_use_dsp,
                     g_ovflw_behav    => g_ovflw_behav,
-                    g_use_round      => g_use_round,
+                    g_round          => g_round,
                     g_use_mult_round => g_use_mult_round,
                     g_ram_primitive  => g_ram_primitive,
                     g_twid_file_stem => g_twid_file_stem
@@ -341,7 +340,7 @@ begin
                 g_use_dsp     => g_use_dsp,
                 g_ovflw_behav => g_ovflw_behav,
                 g_use_mult_round=>g_use_mult_round,
-                g_use_round   => g_use_round
+                g_round       => g_round
             )
             port map(
                 clk        => clk,
@@ -396,7 +395,7 @@ begin
                 generic map(
                     g_representation      => "SIGNED",
                     g_lsb_w               => c_out_scale_w,
-                    g_lsb_round           => c_round,
+                    g_lsb_round           => g_round,
                     g_lsb_round_clip      => FALSE,
                     g_msb_clip            => c_clip,
                     g_msb_clip_symmetric  => FALSE,
@@ -417,7 +416,7 @@ begin
                 generic map(
                     g_representation      => "SIGNED",
                     g_lsb_w               => c_out_scale_w,
-                    g_lsb_round           => c_round,
+                    g_lsb_round           => g_round,
                     g_lsb_round_clip      => FALSE,
                     g_msb_clip            => c_clip,
                     g_msb_clip_symmetric  => FALSE,
diff --git a/casper_wb_fft/fft_sepa.vhd b/casper_wb_fft/fft_sepa.vhd
index 4563eedc..bb19a5a5 100755
--- a/casper_wb_fft/fft_sepa.vhd
+++ b/casper_wb_fft/fft_sepa.vhd
@@ -152,7 +152,7 @@ begin
         round_add : ENTITY casper_requantize_lib.common_round
             GENERIC MAP(
                 g_representation  => "SIGNED", -- SIGNED (round +-0.5 away from zero to +- infinity) or UNSIGNED rounding (round 0.5 up to + inifinity)
-                g_round           => TRUE, -- when TRUE round the input, else truncate the input
+                g_round           => ROUND, -- when TRUE round the input, else truncate the input
                 g_round_clip      => FALSE, -- when TRUE clip rounded input >= +max to avoid wrapping to output -min (signed) or 0 (unsigned)
                 g_pipeline_input  => 0, -- >= 0
                 g_pipeline_output => 0, -- >= 0, use g_pipeline_input=0 and g_pipeline_output=0 for combinatorial output
@@ -169,7 +169,7 @@ begin
         round_sub : ENTITY casper_requantize_lib.common_round
             GENERIC MAP(
                 g_representation  => "SIGNED", -- SIGNED (round +-0.5 away from zero to +- infinity) or UNSIGNED rounding (round 0.5 up to + inifinity)
-                g_round           => TRUE, -- when TRUE round the input, else truncate the input
+                g_round           => ROUND, -- when TRUE round the input, else truncate the input
                 g_round_clip      => FALSE, -- when TRUE clip rounded input >= +max to avoid wrapping to output -min (signed) or 0 (unsigned)
                 g_pipeline_input  => 0, -- >= 0
                 g_pipeline_output => 0, -- >= 0, use g_pipeline_input=0 and g_pipeline_output=0 for combinatorial output
diff --git a/casper_wb_fft/fft_wide_unit.vhd b/casper_wb_fft/fft_wide_unit.vhd
index 0461fc8e..69b46ac4 100755
--- a/casper_wb_fft/fft_wide_unit.vhd
+++ b/casper_wb_fft/fft_wide_unit.vhd
@@ -39,16 +39,16 @@ use work.fft_gnrcs_intrfcs_pkg.all;
 
 entity fft_wide_unit is
     generic(
-        g_fft            : t_fft          := c_fft; --! generics for the FFT
-        g_pft_pipeline   : t_fft_pipeline := c_fft_pipeline; --! For the pipelined part, defined in casper_r2sdf_fft_lib.rTwoSDFPkg
-        g_fft_pipeline   : t_fft_pipeline := c_fft_pipeline; --! For the parallel part, defined in casper_r2sdf_fft_lib.rTwoSDFPkg
-        g_alt_output     : boolean        := FALSE; --! Governs the ordering of the output samples. False = ArBrArBr;AiBiAiBi, True = AiArAiAr;BiBrBiBr
-        g_use_variant    : string         := "4DSP"; --! = "4DSP" or "3DSP" for 3 or 4 mult cmult.
-        g_use_dsp        : string         := "yes"; --! = "yes" or "no"
-        g_ovflw_behav    : string         := "WRAP"; --! = "WRAP" or "SATURATE" will default to WRAP if invalid option used
-        g_use_round      : string         := "ROUND"; --! = "ROUND" or "TRUNCATE" will default to TRUNCATE if invalid option used
-        g_ram_primitive  : string         := "auto"; --! = "auto", "distributed", "block" or "ultra" for RAM architecture
-        g_twid_file_stem : string         := c_twid_file_stem --! path stem for twiddle factors
+        g_fft            : t_fft            := c_fft; --! generics for the FFT
+        g_pft_pipeline   : t_fft_pipeline   := c_fft_pipeline; --! For the pipelined part, defined in casper_r2sdf_fft_lib.rTwoSDFPkg
+        g_fft_pipeline   : t_fft_pipeline   := c_fft_pipeline; --! For the parallel part, defined in casper_r2sdf_fft_lib.rTwoSDFPkg
+        g_alt_output     : boolean          := FALSE; --! Governs the ordering of the output samples. False = ArBrArBr;AiBiAiBi, True = AiArAiAr;BiBrBiBr
+        g_use_variant    : string           := "4DSP"; --! = "4DSP" or "3DSP" for 3 or 4 mult cmult.
+        g_use_dsp        : string           := "yes"; --! = "yes" or "no"
+        g_ovflw_behav    : string           := "WRAP"; --! = "WRAP" or "SATURATE" will default to WRAP if invalid option used
+        g_round          : t_rounding_mode  := ROUND; --! = ROUND, ROUNDINF or TRUNCATE - defaults to ROUND if not specified
+        g_ram_primitive  : string           := "auto"; --! = "auto", "distributed", "block" or "ultra" for RAM architecture
+        g_twid_file_stem : string           := c_twid_file_stem --! path stem for twiddle factors
     );
     port(
         clken            : in  std_logic := '1'; --! Clock enable
@@ -126,7 +126,7 @@ begin
             g_use_variant    => g_use_variant,
             g_use_dsp        => g_use_dsp,
             g_ovflw_behav    => g_ovflw_behav,
-            g_use_round      => g_use_round,
+            g_round          => g_round,
             g_ram_primitive  => g_ram_primitive,
             g_twid_file_stem => g_twid_file_stem
         )
diff --git a/casper_wb_fft/run.py b/casper_wb_fft/run.py
index 06bdfe38..a4ef8b4b 100644
--- a/casper_wb_fft/run.py
+++ b/casper_wb_fft/run.py
@@ -158,6 +158,7 @@ def manglePkg(file_name, line_number, new_line):
 
 # COMMON PACKAGE Library
 common_pkg_lib = vu.add_library("common_pkg_lib")
+common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
 if SIMULATOR_FACTORY.select_simulator().name == "ghdl":
     common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_generic_pkg_2008redirect.vhdl"))
     common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/float_generic_pkg_2008redirect.vhdl"))
@@ -165,7 +166,6 @@ def manglePkg(file_name, line_number, new_line):
     common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_pkg_c_2008redirect.vhdl"))
 else:
     # use the "hacked" up VHDL93 version in other simulators 
-    #common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
     common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_pkg_c.vhd"))
     common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/float_pkg_c.vhd")) 
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/common_pkg.vhd"))
diff --git a/casper_wb_fft/tb_fft_r2_par.vhd b/casper_wb_fft/tb_fft_r2_par.vhd
index 588628dc..0cdc888b 100755
--- a/casper_wb_fft/tb_fft_r2_par.vhd
+++ b/casper_wb_fft/tb_fft_r2_par.vhd
@@ -340,7 +340,7 @@ begin
     g_fft      => g_fft,
     g_use_variant => g_use_variant,
     g_ovflw_behav => g_ovflw_behav,
-    g_use_round => g_use_round
+    g_round => stringround_to_enum_round(g_use_round)
   )
   port map(
     clk        => dut_clk,
diff --git a/casper_wb_fft/tb_fft_r2_pipe.vhd b/casper_wb_fft/tb_fft_r2_pipe.vhd
index 4eedd21d..5d7ba130 100755
--- a/casper_wb_fft/tb_fft_r2_pipe.vhd
+++ b/casper_wb_fft/tb_fft_r2_pipe.vhd
@@ -373,7 +373,7 @@ begin
     g_fft      => g_fft,
     g_use_variant => g_use_variant,
     g_ovflw_behav => g_ovflw_behav,
-    g_use_round => g_use_round,
+    g_round => stringround_to_enum_round(g_use_round),
     g_twid_file_stem => g_twid_file_stem
   )
   port map (
diff --git a/casper_wb_fft/tb_fft_r2_wide.vhd b/casper_wb_fft/tb_fft_r2_wide.vhd
index b2aba657..023b19eb 100755
--- a/casper_wb_fft/tb_fft_r2_wide.vhd
+++ b/casper_wb_fft/tb_fft_r2_wide.vhd
@@ -359,7 +359,7 @@ begin
     g_alt_output     => g_alt_output,
     g_use_variant    => g_use_variant,
     g_ovflw_behav    => g_ovflw_behav,
-    g_use_round      => g_use_round,
+    g_round      => stringround_to_enum_round(g_use_round),
     g_twid_file_stem => g_twid_file_stem
   )
   port map(
diff --git a/casper_wb_fft/tb_vu_wb_fft_vfmodel.vhd b/casper_wb_fft/tb_vu_wb_fft_vfmodel.vhd
index 603e664f..e123dd90 100644
--- a/casper_wb_fft/tb_vu_wb_fft_vfmodel.vhd
+++ b/casper_wb_fft/tb_vu_wb_fft_vfmodel.vhd
@@ -90,8 +90,8 @@ fft_r2_wide_inst : entity wb_fft_lib.fft_r2_wide
     g_use_variant       => "4DSP",
     g_use_dsp           => "yes",
     g_ovflw_behav       => g_ovflw_behav,
-    g_use_round         => g_use_round,
-    g_use_mult_round    => g_use_mult_round,
+    g_round             => stringround_to_enum_round(g_use_round),
+    g_use_mult_round    => stringround_to_enum_round(g_use_mult_round),
     g_ram_primitive     => "auto",
     g_twid_file_stem    => "UNUSED"
   )
diff --git a/casper_wbpfb/run.py b/casper_wbpfb/run.py
index 904fa60e..925cc23a 100644
--- a/casper_wbpfb/run.py
+++ b/casper_wbpfb/run.py
@@ -78,6 +78,7 @@ def manglePkg(file_name, line_number, new_line):
 
 # COMMON PACKAGE Library
 common_pkg_lib = vu.add_library("common_pkg_lib")
+common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
 if SIMULATOR_FACTORY.select_simulator().name == "ghdl":
     #common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c_2008redirect.vhdl"))
     #common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_generic_pkg-body_2008redirect.vhdl"))
@@ -88,7 +89,6 @@ def manglePkg(file_name, line_number, new_line):
     common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_pkg_c_2008redirect.vhdl"))
 else:
     # use the "hacked" up VHDL93 version in other simulators 
-    #common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
     common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_pkg_c.vhd"))
     common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/float_pkg_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/common_pkg.vhd"))
diff --git a/casper_wbpfb/wbpfb_unit.vhd b/casper_wbpfb/wbpfb_unit.vhd
index f5949351..d25e69eb 100644
--- a/casper_wbpfb/wbpfb_unit.vhd
+++ b/casper_wbpfb/wbpfb_unit.vhd
@@ -67,7 +67,7 @@ entity wbpfb_unit is
         g_use_variant       : string  := "4DSP"; --! = "4DSP" or "3DSP" for 3 or 4 mult cmult.
         g_use_dsp           : string  := "yes"; --! = "yes" or "no"
         g_ovflw_behav       : string  := "WRAP"; --! = "WRAP" or "SATURATE" will default to WRAP if invalid option used
-        g_use_round         : string  := "ROUND"; --! = "ROUND" or "TRUNCATE" will default to TRUNCATE if invalid option used
+        g_use_round         : t_rounding_mode  := ROUND; --! = "ROUND" or "TRUNCATE" will default to TRUNCATE if invalid option used
         g_fft_ram_primitive : string  := "auto"; --! = "auto", "distributed", "block" or "ultra" for RAM architecture
         g_fil_ram_primitive : string  := "auto"
     );
@@ -301,7 +301,7 @@ begin
                     g_use_variant => g_use_variant,
                     g_use_dsp => g_use_dsp,
                     g_ovflw_behav => g_ovflw_behav,
-                    g_use_round => g_use_round
+                    g_round => g_use_round
                 )
                 port map(
                     clk      => clk,
diff --git a/casper_wbpfb/wbpfb_unit_dev.vhd b/casper_wbpfb/wbpfb_unit_dev.vhd
index 92430090..bbdf1b96 100644
--- a/casper_wbpfb/wbpfb_unit_dev.vhd
+++ b/casper_wbpfb/wbpfb_unit_dev.vhd
@@ -347,7 +347,7 @@ entity wbpfb_unit_dev is
         g_use_variant        : string  := "4DSP"; --! = "4DSP" or "3DSP" for 3 or 4 mult cmult.
         g_use_dsp            : string  := "yes"; --! = "yes" or "no"
         g_ovflw_behav        : string  := "WRAP"; --! = "WRAP" or "SATURATE" will default to WRAP if invalid option used
-        g_use_round          : string  := "ROUND"; --! = "ROUND" or "TRUNCATE" will default to TRUNCATE if invalid option used
+        g_round              : t_rounding_mode  := ROUND; --! = ROUND, ROUNDINF or TRUNCATE - defaults to ROUND if not specified
         g_fft_ram_primitive  : string  := "block"; --! = "auto", "distributed", "block" or "ultra" for RAM architecture
         g_twid_file_stem     : string  := c_twid_file_stem --! file stem for the twiddle coefficients                  
     );
@@ -524,7 +524,7 @@ begin
                     g_use_variant    => g_use_variant,
                     g_use_dsp        => g_use_dsp,
                     g_ovflw_behav    => g_ovflw_behav,
-                    g_use_round      => g_use_round,
+                    g_round          => g_round,
                     g_ram_primitive  => g_fft_ram_primitive,
                     g_twid_file_stem => g_twid_file_stem
                 )
@@ -561,7 +561,7 @@ begin
                     g_use_variant        => g_use_variant,
                     g_use_dsp            => g_use_dsp,
                     g_ovflw_behav        => g_ovflw_behav,
-                    g_use_round          => g_use_round,
+                    g_round              => g_round,
                     g_ram_primitive      => g_fft_ram_primitive,
                     g_twid_file_stem     => g_twid_file_stem
                 )
diff --git a/casper_wbpfb/wbpfb_vivproj/wbpfb_vivproj.xpr b/casper_wbpfb/wbpfb_vivproj/wbpfb_vivproj.xpr
index 90c1cb67..f48cde11 100644
--- a/casper_wbpfb/wbpfb_vivproj/wbpfb_vivproj.xpr
+++ b/casper_wbpfb/wbpfb_vivproj/wbpfb_vivproj.xpr
@@ -38,7 +38,7 @@
     <Option Name="IPStaticSourceDir" Val="$PIPUSERFILESDIR/ipstatic"/>
     <Option Name="UseIPStaticLibs" Val="0"/>
     <Option Name="EnableBDX" Val="FALSE"/>
-    <Option Name="WTXSimLaunchSim" Val="472"/>
+    <Option Name="WTXSimLaunchSim" Val="476"/>
     <Option Name="WTModelSimLaunchSim" Val="0"/>
     <Option Name="WTQuestaLaunchSim" Val="0"/>
     <Option Name="WTIesLaunchSim" Val="0"/>
@@ -67,6 +67,13 @@
   <FileSets Version="1" Minor="31">
     <FileSet Name="sources_1" Type="DesignSrcs" RelSrcDir="$PSRCDIR/sources_1">
       <Filter Type="Srcs"/>
+      <File Path="$PPRDIR/../../common_pkg/fixed_float_types_c.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="common_pkg_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
       <File Path="$PPRDIR/../../common_pkg/fixed_pkg_c.vhd">
         <FileInfo>
           <Attr Name="Library" Val="common_pkg_lib"/>
@@ -75,7 +82,7 @@
         </FileInfo>
       </File>
       <File Path="$PPRDIR/../../common_pkg/common_pkg.vhd">
-        <FileInfo SFType="VHDL2008">
+        <FileInfo>
           <Attr Name="Library" Val="common_pkg_lib"/>
           <Attr Name="UsedIn" Val="synthesis"/>
           <Attr Name="UsedIn" Val="simulation"/>
@@ -138,14 +145,14 @@
         </FileInfo>
       </File>
       <File Path="$PPRDIR/../../casper_multiplier/tech_agilex_versal_cmult.vhd">
-        <FileInfo SFType="VHDL2008">
+        <FileInfo>
           <Attr Name="Library" Val="casper_multiplier_lib"/>
           <Attr Name="UsedIn" Val="synthesis"/>
           <Attr Name="UsedIn" Val="simulation"/>
         </FileInfo>
       </File>
       <File Path="$PPRDIR/../../casper_multiplier/tech_complex_mult.vhd">
-        <FileInfo SFType="VHDL2008">
+        <FileInfo>
           <Attr Name="Library" Val="casper_multiplier_lib"/>
           <Attr Name="UsedIn" Val="synthesis"/>
           <Attr Name="UsedIn" Val="simulation"/>
@@ -173,7 +180,7 @@
         </FileInfo>
       </File>
       <File Path="$PPRDIR/../../casper_multiplier/tech_mult.vhd">
-        <FileInfo SFType="VHDL2008">
+        <FileInfo>
           <Attr Name="Library" Val="casper_multiplier_lib"/>
           <Attr Name="UsedIn" Val="synthesis"/>
           <Attr Name="UsedIn" Val="simulation"/>
@@ -285,14 +292,14 @@
         </FileInfo>
       </File>
       <File Path="$PPRDIR/../../casper_ram/tech_memory_rom_r_r.vhd">
-        <FileInfo SFType="VHDL2008">
+        <FileInfo>
           <Attr Name="Library" Val="casper_ram_lib"/>
           <Attr Name="UsedIn" Val="synthesis"/>
           <Attr Name="UsedIn" Val="simulation"/>
         </FileInfo>
       </File>
       <File Path="$PPRDIR/../../casper_ram/tech_memory_rom_r.vhd">
-        <FileInfo SFType="VHDL2008">
+        <FileInfo>
           <Attr Name="Library" Val="casper_ram_lib"/>
           <Attr Name="UsedIn" Val="synthesis"/>
           <Attr Name="UsedIn" Val="simulation"/>
@@ -397,7 +404,7 @@
         </FileInfo>
       </File>
       <File Path="$PPRDIR/../../r2sdf_fft/twiddlesPkg.vhd">
-        <FileInfo SFType="VHDL2008">
+        <FileInfo>
           <Attr Name="Library" Val="r2sdf_fft_lib"/>
           <Attr Name="UsedIn" Val="synthesis"/>
           <Attr Name="UsedIn" Val="simulation"/>
@@ -431,6 +438,13 @@
           <Attr Name="UsedIn" Val="simulation"/>
         </FileInfo>
       </File>
+      <File Path="$PPRDIR/../../casper_wb_fft/fft_r2_par.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="wb_fft_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
       <File Path="$PPRDIR/../../r2sdf_fft/rTwoBFStage.vhd">
         <FileInfo>
           <Attr Name="Library" Val="r2sdf_fft_lib"/>
@@ -439,7 +453,7 @@
         </FileInfo>
       </File>
       <File Path="$PPRDIR/../../r2sdf_fft/rTwoWeights.vhd">
-        <FileInfo SFType="VHDL2008">
+        <FileInfo>
           <Attr Name="Library" Val="r2sdf_fft_lib"/>
           <Attr Name="UsedIn" Val="synthesis"/>
           <Attr Name="UsedIn" Val="simulation"/>
@@ -473,6 +487,20 @@
           <Attr Name="UsedIn" Val="simulation"/>
         </FileInfo>
       </File>
+      <File Path="$PPRDIR/../../casper_wb_fft/fft_sepa_wide.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="wb_fft_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
+      <File Path="$PPRDIR/../../casper_wb_fft/fft_r2_wide.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="wb_fft_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
       <File Path="$PPRDIR/../../casper_filter/fil_ppf_ctrl.vhd">
         <FileInfo>
           <Attr Name="Library" Val="casper_filter_lib"/>
@@ -494,6 +522,13 @@
           <Attr Name="UsedIn" Val="simulation"/>
         </FileInfo>
       </File>
+      <File Path="$PPRDIR/../../casper_filter/fil_ppf_wide.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="casper_filter_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
       <File Path="$PPRDIR/../../ip_xpm/mult/ip_cmult_rtl_3dsp.vhd">
         <FileInfo>
           <Attr Name="Library" Val="casper_multiplier_lib"/>
@@ -536,36 +571,8 @@
           <Attr Name="UsedIn" Val="simulation"/>
         </FileInfo>
       </File>
-      <File Path="$PPRDIR/../../casper_wb_fft/fft_r2_par.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="Library" Val="wb_fft_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_wb_fft/fft_sepa_wide.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="Library" Val="wb_fft_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_wb_fft/fft_r2_wide.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="Library" Val="wb_fft_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
-      <File Path="$PPRDIR/../../casper_filter/fil_ppf_wide.vhd">
-        <FileInfo SFType="VHDL2008">
-          <Attr Name="Library" Val="casper_filter_lib"/>
-          <Attr Name="UsedIn" Val="synthesis"/>
-          <Attr Name="UsedIn" Val="simulation"/>
-        </FileInfo>
-      </File>
       <File Path="$PPRDIR/../wbpfb_unit_dev.vhd">
-        <FileInfo SFType="VHDL2008">
+        <FileInfo>
           <Attr Name="Library" Val="wpfb_lib"/>
           <Attr Name="UsedIn" Val="synthesis"/>
           <Attr Name="UsedIn" Val="simulation"/>
diff --git a/common_components/common_delay.vhd b/common_components/common_delay.vhd
index 523cbf99..bae8c82b 100644
--- a/common_components/common_delay.vhd
+++ b/common_components/common_delay.vhd
@@ -25,7 +25,9 @@
 
 library ieee;
 use IEEE.STD_LOGIC_1164.all;
-
+use IEEE.numeric_std.all;
+library common_pkg_lib;
+use common_pkg_lib.common_pkg.all;
 entity common_delay is
 	generic(
 		g_dat_w : NATURAL := 8;         --! need g_dat_w to be able to use (others=>'') assignments for two dimensional unconstraint vector arrays
@@ -45,15 +47,23 @@ architecture rtl of common_delay is
 	-- delay, in this way the t_dly_arr type can support all g_depth >= 0
 	type t_dly_arr is array (0 to g_depth) of STD_LOGIC_VECTOR(g_dat_w - 1 downto 0);
 
-	signal shift_reg : t_dly_arr := (others => (others => '0'));
-
+	
+    type t_mem_arr is array (0 to g_depth-2) of STD_LOGIC_VECTOR(g_dat_w - 1 downto 0);
+    --signal shift_reg : t_dly_arr := (others => (others => '0'));
 begin
 
-	shift_reg(0) <= in_dat;
-
-	out_dat <= shift_reg(g_depth);
-
-	gen_reg : if g_depth > 0 generate
+    gen_zero : if g_depth = 0 generate 
+    signal shift_reg : t_dly_arr := (others => (others => '0'));
+    begin
+        shift_reg(0) <= in_dat;
+	    out_dat <= shift_reg(g_depth);
+	end generate;
+	gen_regSR : if g_depth > 0 and g_depth<128 generate -- Use a shift register implementation
+        signal shift_reg : t_dly_arr := (others => (others => '0'));
+    begin
+    
+		shift_reg(0) <= in_dat;
+	    out_dat <= shift_reg(g_depth);
 		p_clk : process(clk)
 		begin
 			if rising_edge(clk) then
@@ -63,5 +73,33 @@ begin
 			end if;
 		end process;
 	end generate;
+	gen_regMEM : if g_depth >= 128 generate -- Use a Memory implementation
+	--signal mem_addr_rd : unsigned(ceil_log2(g_depth-1)-1 downto 0) := to_unsigned(g_depth-2,ceil_log2(g_depth-1));
+	signal mem_addr_wr : unsigned(ceil_log2(g_depth-1)-1 downto 0) := to_unsigned(0,ceil_log2(g_depth-1));
+	signal memory : t_mem_arr := (others => (others => '0'));
+    attribute ram_style: string;
+    attribute ram_style of memory: signal is "block";
+	signal out_datmem  : STD_LOGIC_VECTOR(g_dat_w - 1 downto 0) := (others => '0'); --! Output value
+    begin
+        out_dat <= out_datmem;
+        --assert out_datmem = shift_reg(g_depth) report "non matching data" severity failure;
+		p_clk : process(clk)
+		begin
+			if rising_edge(clk) then
+			    
+				if in_val = '1' then
+				    out_datmem <= memory(to_integer(mem_addr_wr));
+					memory(to_integer(mem_addr_wr)) <= in_dat;
+					--mem_addr_rd <= mem_addr_wr;
+					if mem_addr_wr=(g_depth-2) then
+					   mem_addr_wr <= to_unsigned(0,mem_addr_wr'length);
+					else
+					   mem_addr_wr <= mem_addr_wr + 1;
+					end if;
 
+					--shift_reg(1 to g_depth) <= shift_reg(0 to g_depth - 1);
+				end if;
+			end if;
+		end process;
+	end generate;
 end rtl;
diff --git a/common_pkg/common_pkg.vhd b/common_pkg/common_pkg.vhd
index 425e7b61..6a8183e3 100644
--- a/common_pkg/common_pkg.vhd
+++ b/common_pkg/common_pkg.vhd
@@ -32,7 +32,7 @@ LIBRARY IEEE;
 USE IEEE.STD_LOGIC_1164.ALL;
 USE IEEE.NUMERIC_STD.ALL;
 USE IEEE.MATH_REAL.ALL;
-use IEEE.fixed_float_types.all;
+use work.common_fixed_float_types.all;
 use work.fixed_pkg.all;
 
 PACKAGE common_pkg IS
@@ -128,8 +128,7 @@ PACKAGE common_pkg IS
 	--type t_unsigned_array is array(natural range <>)    of unsigned;
 	--type t_slv_array is array(natural range <>)         of std_logic_vector;
 	--type t_signed_array is array(natural range <>)      of signed;
-
-
+	TYPE t_rounding_mode is (TRUNCATE, ROUND, ROUNDINF);
 
 	CONSTANT c_boolean_arr     : t_boolean_arr     := (TRUE, FALSE); -- array all possible values that can be iterated over
 	CONSTANT c_nat_boolean_arr : t_nat_boolean_arr := (TRUE, FALSE); -- array all possible values that can be iterated over
@@ -398,7 +397,8 @@ PACKAGE common_pkg IS
 	FUNCTION truncate_or_resize_uvec(vec : STD_LOGIC_VECTOR; b : BOOLEAN; w : NATURAL) RETURN STD_LOGIC_VECTOR; -- when b=TRUE then truncate to width w, else resize to width w
 	FUNCTION truncate_or_resize_svec(vec : STD_LOGIC_VECTOR; b : BOOLEAN; w : NATURAL) RETURN STD_LOGIC_VECTOR; -- idem for signed values
 
-	FUNCTION s_round(vec : STD_LOGIC_VECTOR; n : NATURAL; clip : BOOLEAN) RETURN STD_LOGIC_VECTOR; -- remove n LSBits from vec by rounding away from 0, so result has width vec'LENGTH-n, and clip to avoid wrap
+    FUNCTION s_round_inf(vec : STD_LOGIC_VECTOR; n : NATURAL; clip : BOOLEAN) RETURN STD_LOGIC_VECTOR; -- remove n LSBits from vec by rounding away from 0, so result has width vec'LENGTH-n, and clip to avoid wrap
+	FUNCTION s_round(vec : STD_LOGIC_VECTOR; n : NATURAL; clip : BOOLEAN; round_style : t_rounding_mode) RETURN STD_LOGIC_VECTOR; -- remove n LSBits from vec by rounding away from 0, so result has width vec'LENGTH-n, and clip to avoid wrap
 	FUNCTION s_round(vec : STD_LOGIC_VECTOR; n : NATURAL) RETURN STD_LOGIC_VECTOR; -- remove n LSBits from vec by rounding away from 0, so result has width vec'LENGTH-n
 	FUNCTION s_round_up(vec : STD_LOGIC_VECTOR; n : NATURAL; clip : BOOLEAN) RETURN STD_LOGIC_VECTOR; -- idem but round up to +infinity (s_round_up = u_round)
 	FUNCTION s_round_up(vec : STD_LOGIC_VECTOR; n : NATURAL) RETURN STD_LOGIC_VECTOR; -- idem but round up to +infinity (s_round_up = u_round)
@@ -472,7 +472,7 @@ PACKAGE common_pkg IS
 	PROCEDURE proc_common_dclk_generate_sclk(CONSTANT Pfactor : IN POSITIVE;
 	                                         SIGNAL dclk      : IN STD_LOGIC;
 	                                         SIGNAL sclk      : INOUT STD_LOGIC);
-
+	function stringround_to_enum_round (stringin : string) return t_rounding_mode;
 END common_pkg;
 
 PACKAGE BODY common_pkg IS
@@ -2155,26 +2155,61 @@ PACKAGE BODY common_pkg IS
 	--   maximum product is 15*15=225 <= 255-8, and for signed 4b*4b=8b->4b the
 	--   maximum product is -8*-8=+64 <= 127-8, so wrapping due to rounding
 	--   overflow will never occur.
-
-	FUNCTION s_round(vec : STD_LOGIC_VECTOR; n : NATURAL; clip : BOOLEAN) RETURN STD_LOGIC_VECTOR IS
-		-- Use SIGNED to avoid NATURAL (32 bit range) overflow error
-		--CONSTANT c_in_w             : NATURAL                      := vec'LENGTH;
-		CONSTANT c_out_w            : NATURAL                      := vec'LENGTH - n;
-		variable input_data_fixed   : sfixed(c_out_w-1 downto (-n)); -- we will use Fixed Point Lib in VHDL 2008 to do the calcs
-	  variable output_data_fixed  : sfixed(c_out_w-1 downto 0);                     
-	BEGIN
-	  input_data_fixed := sfixed(signed(vec));
-	  if clip then
-	    output_data_fixed := resize(arg=>input_data_fixed,size_res=>output_data_fixed,overflow_style=>fixed_saturate,round_style=>fixed_round);
-	  else
-        output_data_fixed := resize(arg=>input_data_fixed,size_res=>output_data_fixed,overflow_style=>fixed_wrap,round_style=>fixed_round);
-      end if;	   
-	  RETURN to_slv(output_data_fixed);
-	END;
+	
+	FUNCTION s_round_inf(vec : STD_LOGIC_VECTOR; n : NATURAL; clip : BOOLEAN) RETURN STD_LOGIC_VECTOR IS
+        -- Use SIGNED to avoid NATURAL (32 bit range) overflow error
+        CONSTANT c_in_w  : NATURAL                      := vec'LENGTH;
+        CONSTANT c_out_w : NATURAL                      := vec'LENGTH - n;
+        CONSTANT c_one   : SIGNED(c_in_w - 1 DOWNTO 0)  := TO_SIGNED(1, c_in_w);
+        CONSTANT c_half  : SIGNED(c_in_w - 1 DOWNTO 0)  := SHIFT_LEFT(c_one, n - 1); -- = 2**(n-1)
+        CONSTANT c_max   : SIGNED(c_in_w - 1 DOWNTO 0)  := SIGNED('0' & c_slv1(c_in_w - 2 DOWNTO 0)) - c_half; -- = 2**(c_in_w-1)-1 - c_half  
+        CONSTANT c_clip  : SIGNED(c_out_w - 1 DOWNTO 0) := SIGNED('0' & c_slv1(c_out_w - 2 DOWNTO 0)); -- = 2**(c_out_w-1)-1
+        VARIABLE v_in    : SIGNED(c_in_w - 1 DOWNTO 0);
+        VARIABLE v_out   : SIGNED(c_out_w - 1 DOWNTO 0);
+    BEGIN
+        v_in := SIGNED(vec);
+        IF n > 0 THEN
+            IF clip AND v_in > c_max THEN
+                v_out := c_clip;        -- Round clip to maximum positive to avoid wrap to negative
+            ELSE
+                IF vec(vec'HIGH) = '0' THEN
+                    v_out := RESIZE_NUM(SHIFT_RIGHT(v_in + c_half + 0, n), c_out_w); -- Round up for positive
+                ELSE
+                    v_out := RESIZE_NUM(SHIFT_RIGHT(v_in + c_half - 1, n), c_out_w); -- Round down for negative
+                END IF;
+            END IF;
+        ELSE
+            v_out := RESIZE_NUM(v_in, c_out_w); -- NOP
+        END IF;
+        RETURN STD_LOGIC_VECTOR(v_out);
+    END;
+
+	FUNCTION s_round(vec : STD_LOGIC_VECTOR; n : NATURAL; clip : BOOLEAN; round_style : t_rounding_mode) RETURN STD_LOGIC_VECTOR IS
+        -- Use SIGNED to avoid NATURAL (32 bit range) overflow error
+        CONSTANT c_out_w           : NATURAL := vec'LENGTH - n;
+        variable input_data_fixed  : sfixed(c_out_w - 1 downto (-n)); -- we will use Fixed Point Lib in VHDL 2008 to do the calcs
+        variable output_data_fixed : sfixed(c_out_w - 1 downto 0);
+    BEGIN
+        input_data_fixed := sfixed(signed(vec));
+        --even rounding specified
+        if round_style = ROUND then
+            if clip then
+                output_data_fixed := resize(arg => input_data_fixed, size_res => output_data_fixed, overflow_style => fixed_saturate, round_style => fixed_round);
+            else
+                output_data_fixed := resize(arg => input_data_fixed, size_res => output_data_fixed, overflow_style => fixed_wrap, round_style => fixed_round);
+            end if;
+        --infinite rounding specified
+        elsif round_style = ROUNDINF then
+            RETURN s_round_inf(vec => vec, n => n, clip => clip);
+		else
+			RETURN truncate(vec, n);
+        end if;
+        RETURN to_slv(output_data_fixed);
+    END;
 
 	FUNCTION s_round(vec : STD_LOGIC_VECTOR; n : NATURAL) RETURN STD_LOGIC_VECTOR IS
 	BEGIN
-		RETURN s_round(vec, n, FALSE);  -- no round clip
+		RETURN s_round(vec, n, FALSE, ROUND);  -- no even-round clip
 	END;
 
 	-- An alternative is to always round up, also for negative numbers (i.e. s_round_up = u_round).
@@ -2643,4 +2678,15 @@ PACKAGE BODY common_pkg IS
 		WAIT;
 	END proc_common_dclk_generate_sclk;
 
+	function stringround_to_enum_round (stringin : string) return t_rounding_mode is
+	begin
+		-- use an ugly if because CASE expects string to always be the same length
+		if stringin = "ROUND" then
+			return ROUND;
+		elsif stringin = "ROUNDINF" then
+			return ROUNDINF;
+		else
+			return TRUNCATE;
+		end if;
+	end function stringround_to_enum_round;
 END common_pkg;
diff --git a/common_pkg/fixed_float_types_c.vhd b/common_pkg/fixed_float_types_c.vhd
new file mode 100644
index 00000000..0e13a196
--- /dev/null
+++ b/common_pkg/fixed_float_types_c.vhd
@@ -0,0 +1,35 @@
+-- --------------------------------------------------------------------
+-- "fixed_float_types" package contains types used in the fixed and floating
+-- point packages..
+-- Please see the documentation for the floating point package.
+-- This package should be compiled into "ieee_proposed" and used as follows:
+--
+--  This verison is designed to work with the VHDL-93 compilers.  Please
+--  note the "%%%" comments.  These are where we diverge from the
+--  VHDL-200X LRM.
+--
+-- --------------------------------------------------------------------
+-- Version    : $Revision: 1.2 $
+-- Date       : $Date: 2011/03/24 07:44:24 $
+-- --------------------------------------------------------------------
+
+package common_fixed_float_types is
+
+  -- Types used for generics of fixed_generic_pkg
+  
+  type com_fixed_round_style_type is (fixed_round, fixed_truncate);
+  
+  type com_fixed_overflow_style_type is (fixed_saturate, fixed_wrap);
+
+  -- Type used for generics of float_generic_pkg
+
+  -- These are the same as the C FE_TONEAREST, FE_UPWARD, FE_DOWNWARD,
+  -- and FE_TOWARDZERO floating point rounding macros.
+
+  type com_round_type is (round_nearest,    -- Default, nearest LSB '0'
+                      round_inf,        -- Round toward positive infinity
+                      round_neginf,     -- Round toward negative infinity
+                      round_zero);      -- Round toward zero (truncate)
+
+end package common_fixed_float_types;
+
diff --git a/common_pkg/fixed_generic_pkg_2008redirect.vhdl b/common_pkg/fixed_generic_pkg_2008redirect.vhdl
index 1f64d88a..bd3a6b8b 100755
--- a/common_pkg/fixed_generic_pkg_2008redirect.vhdl
+++ b/common_pkg/fixed_generic_pkg_2008redirect.vhdl
@@ -45,15 +45,15 @@ library IEEE;
 use IEEE.STD_LOGIC_1164.all;
 use IEEE.NUMERIC_STD.all;
 library common_pkg_lib;
-use ieee.fixed_float_types.all;
+use common_pkg_lib.common_fixed_float_types.all;
 use ieee.math_real.all;
 
 package fixed_generic_pkg is
   generic (
     -- Rounding routine to use in fixed point, fixed_round or fixed_truncate
-    fixed_round_style    : fixed_round_style_type    := fixed_round;
+    fixed_round_style    : com_fixed_round_style_type    := fixed_round;
     -- Overflow routine to use in fixed point, fixed_saturate or fixed_wrap
-    fixed_overflow_style : fixed_overflow_style_type := fixed_saturate;
+    fixed_overflow_style : com_fixed_overflow_style_type := fixed_saturate;
     -- Extra bits used in divide routines
     fixed_guard_bits     : NATURAL                   := 3;
     -- If TRUE, then turn off warnings on "X" propagation
@@ -294,7 +294,7 @@ package fixed_generic_pkg is
   -- ufixed(a downto b) / ufixed(c downto d) = ufixed(a-d downto b-c-1)
   function divide (
     l, r                 : UNRESOLVED_ufixed;
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_ufixed;
 
@@ -302,7 +302,7 @@ package fixed_generic_pkg is
   -- sfixed(a downto b) / sfixed(c downto d) = sfixed(a-d+1 downto b-c)
   function divide (
     l, r                 : UNRESOLVED_sfixed;
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_sfixed;
 
@@ -310,14 +310,14 @@ package fixed_generic_pkg is
   -- 1 / ufixed(a downto b) = ufixed(-b downto -a-1)
   function reciprocal (
     arg                  : UNRESOLVED_ufixed;  -- fixed point input
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_ufixed;
 
   -- 1 / sfixed(a downto b) = sfixed(-b+1 downto -a)
   function reciprocal (
     arg                  : UNRESOLVED_sfixed;  -- fixed point input
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_sfixed;
 
@@ -326,7 +326,7 @@ package fixed_generic_pkg is
   --   = ufixed (minimum(a,c) downto minimum(b,d))
   function remainder (
     l, r                 : UNRESOLVED_ufixed;
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_ufixed;
 
@@ -334,7 +334,7 @@ package fixed_generic_pkg is
   --   = sfixed (minimum(a,c) downto minimum(b,d))
   function remainder (
     l, r                 : UNRESOLVED_sfixed;
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_sfixed;
 
@@ -343,7 +343,7 @@ package fixed_generic_pkg is
   --        = ufixed (minimum(a,c) downto minimum(b, d))
   function modulo (
     l, r                 : UNRESOLVED_ufixed;
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_ufixed;
 
@@ -351,8 +351,8 @@ package fixed_generic_pkg is
   --        = sfixed (c downto minimum(b, d))
   function modulo (
     l, r                    : UNRESOLVED_sfixed;
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)
     return UNRESOLVED_sfixed;
 
@@ -729,8 +729,8 @@ package fixed_generic_pkg is
     arg                     : UNRESOLVED_ufixed;  -- input
     constant left_index     : INTEGER;  -- integer portion
     constant right_index    : INTEGER;  -- size of fraction
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed;
 
   -- "size_res" functions create the size of the output from the indices
@@ -738,8 +738,8 @@ package fixed_generic_pkg is
   function resize (
     arg                     : UNRESOLVED_ufixed;  -- input
     size_res                : UNRESOLVED_ufixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed;
 
   -- Note that in "wrap" mode the sign bit is not replicated.  Thus the
@@ -748,15 +748,15 @@ package fixed_generic_pkg is
     arg                     : UNRESOLVED_sfixed;  -- input
     constant left_index     : INTEGER;            -- integer portion
     constant right_index    : INTEGER;            -- size of fraction
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed;
 
   function resize (
     arg                     : UNRESOLVED_sfixed;  -- input
     size_res                : UNRESOLVED_sfixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed;
 
   --===========================================================================
@@ -770,15 +770,15 @@ package fixed_generic_pkg is
     arg                     : NATURAL;  -- integer
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER                   := 0;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed;
 
   function to_ufixed (
     arg                     : NATURAL;            -- integer
     size_res                : UNRESOLVED_ufixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed;
 
   -- real to unsigned fixed point
@@ -786,16 +786,16 @@ package fixed_generic_pkg is
     arg                     : REAL;     -- real
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)
     return UNRESOLVED_ufixed;
 
   function to_ufixed (
     arg                     : REAL;     -- real
     size_res                : UNRESOLVED_ufixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)
     return UNRESOLVED_ufixed;
 
@@ -804,15 +804,15 @@ package fixed_generic_pkg is
     arg                     : UNRESOLVED_UNSIGNED;             -- unsigned
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER                   := 0;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed;
 
   function to_ufixed (
     arg                     : UNRESOLVED_UNSIGNED;           -- unsigned
     size_res                : UNRESOLVED_ufixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed;
 
   -- Performs a conversion.  ufixed (arg'range) is returned
@@ -824,16 +824,16 @@ package fixed_generic_pkg is
   function to_unsigned (
     arg                     : UNRESOLVED_ufixed;  -- fixed point input
     constant size           : NATURAL;            -- length of output
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_UNSIGNED;
 
   -- unsigned fixed point to unsigned
   function to_unsigned (
     arg                     : UNRESOLVED_ufixed;    -- fixed point input
     size_res                : UNRESOLVED_UNSIGNED;  -- used for length of output
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_UNSIGNED;
 
   -- unsigned fixed point to real
@@ -844,8 +844,8 @@ package fixed_generic_pkg is
   -- unsigned fixed point to integer
   function to_integer (
     arg                     : UNRESOLVED_ufixed;  -- fixed point input
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return NATURAL;
 
   -- Integer to UNRESOLVED_sfixed
@@ -853,15 +853,15 @@ package fixed_generic_pkg is
     arg                     : INTEGER;   -- integer
     constant left_index     : INTEGER;   -- left index (high index)
     constant right_index    : INTEGER                   := 0;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed;
 
   function to_sfixed (
     arg                     : INTEGER;            -- integer
     size_res                : UNRESOLVED_sfixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed;
 
   -- Real to sfixed
@@ -869,16 +869,16 @@ package fixed_generic_pkg is
     arg                     : REAL;     -- real
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)
     return UNRESOLVED_sfixed;
 
   function to_sfixed (
     arg                     : REAL;     -- real
     size_res                : UNRESOLVED_sfixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)
     return UNRESOLVED_sfixed;
 
@@ -887,15 +887,15 @@ package fixed_generic_pkg is
     arg                     : UNRESOLVED_SIGNED;               -- signed
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER                   := 0;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed;
 
   function to_sfixed (
     arg                     : UNRESOLVED_SIGNED;  -- signed
     size_res                : UNRESOLVED_sfixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed;
 
   -- signed to sfixed (output assumed to be size of signed input)
@@ -912,16 +912,16 @@ package fixed_generic_pkg is
   function to_signed (
     arg                     : UNRESOLVED_sfixed;  -- fixed point input
     constant size           : NATURAL;            -- length of output
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_SIGNED;
 
   -- signed fixed point to signed
   function to_signed (
     arg                     : UNRESOLVED_sfixed;  -- fixed point input
     size_res                : UNRESOLVED_SIGNED;  -- used for length of output
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_SIGNED;
 
   -- signed fixed point to real
@@ -932,8 +932,8 @@ package fixed_generic_pkg is
   -- signed fixed point to integer
   function to_integer (
     arg                     : UNRESOLVED_sfixed;  -- fixed point input
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return INTEGER;
 
   -- Because of the fairly complicated sizing rules in the fixed point
@@ -1587,7 +1587,7 @@ package body fixed_generic_pkg is
   -- bottom bit is a "1" it is rounded, otherwise it remains the same.
   function round_fixed (arg            : UNRESOLVED_ufixed;
                         remainder      : UNRESOLVED_ufixed;
-                        overflow_style : fixed_overflow_style_type := fixed_overflow_style)
+                        overflow_style : com_fixed_overflow_style_type := fixed_overflow_style)
     return UNRESOLVED_ufixed
   is
     variable rounds         : BOOLEAN;
@@ -1620,7 +1620,7 @@ package body fixed_generic_pkg is
   -- Rounding case statement
   function round_fixed (arg            : UNRESOLVED_sfixed;
                         remainder      : UNRESOLVED_sfixed;
-                        overflow_style : fixed_overflow_style_type := fixed_overflow_style)
+                        overflow_style : com_fixed_overflow_style_type := fixed_overflow_style)
     return UNRESOLVED_sfixed
   is
     variable rounds         : BOOLEAN;
@@ -1970,7 +1970,7 @@ package body fixed_generic_pkg is
   -- ufixed(a downto b) / ufixed(c downto d) = ufixed(a-d downto b-c-1)
   function divide (
     l, r                 : UNRESOLVED_ufixed;
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_ufixed
   is
@@ -2012,7 +2012,7 @@ package body fixed_generic_pkg is
   -- sfixed(a downto b) / sfixed(c downto d) = sfixed(a-d+1 downto b-c)
   function divide (
     l, r                 : UNRESOLVED_sfixed;
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_sfixed
   is
@@ -2054,7 +2054,7 @@ package body fixed_generic_pkg is
   -- 1 / ufixed(a downto b) = ufixed(-b downto -a-1)
   function reciprocal (
     arg                  : UNRESOLVED_ufixed;  -- fixed point input
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_ufixed
   is
@@ -2069,7 +2069,7 @@ package body fixed_generic_pkg is
   -- 1 / sfixed(a downto b) = sfixed(-b+1 downto -a)
   function reciprocal (
     arg                  : UNRESOLVED_sfixed;              -- fixed point input
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_sfixed
   is
@@ -2110,7 +2110,7 @@ package body fixed_generic_pkg is
   --        = ufixed (min(a,c) downto min(b,d))
   function remainder (
     l, r                 : UNRESOLVED_ufixed;            -- fixed point input
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_ufixed
   is
@@ -2167,7 +2167,7 @@ package body fixed_generic_pkg is
   --        = sfixed (min(a,c) downto min(b,d))
   function remainder (
     l, r                 : UNRESOLVED_sfixed;  -- fixed point input
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_sfixed
   is
@@ -2219,7 +2219,7 @@ package body fixed_generic_pkg is
   --        = ufixed (min(a,c) downto min(b, d))
   function modulo (
     l, r                 : UNRESOLVED_ufixed;  -- fixed point input
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_ufixed is
   begin
@@ -2233,8 +2233,8 @@ package body fixed_generic_pkg is
   --        = sfixed (c downto min(b, d))
   function modulo (
     l, r                    : UNRESOLVED_sfixed;  -- fixed point input
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)
     return UNRESOLVED_sfixed
   is
@@ -3853,8 +3853,8 @@ package body fixed_generic_pkg is
     arg                     : NATURAL;  -- integer
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER                   := 0;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed
   is
     constant fw      : INTEGER := mins (right_index, right_index);  -- catch literals
@@ -3900,8 +3900,8 @@ package body fixed_generic_pkg is
     arg                     : INTEGER;  -- integer
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER                   := 0;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed
   is
     constant fw      : INTEGER := mins (right_index, right_index);  -- catch literals
@@ -3959,8 +3959,8 @@ package body fixed_generic_pkg is
     arg                     : REAL;     -- real
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)  -- # of guard bits
     return UNRESOLVED_ufixed
   is
@@ -4017,8 +4017,8 @@ package body fixed_generic_pkg is
     arg                     : REAL;     -- real
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)  -- # of guard bits
     return UNRESOLVED_sfixed
   is
@@ -4076,8 +4076,8 @@ package body fixed_generic_pkg is
     arg                     : UNRESOLVED_UNSIGNED;             -- unsigned
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER                   := 0;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed
   is
     constant ARG_LEFT : INTEGER := arg'length-1;
@@ -4113,8 +4113,8 @@ package body fixed_generic_pkg is
     arg                     : UNRESOLVED_SIGNED;               -- signed
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER                   := 0;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed
   is
     constant ARG_LEFT : INTEGER := arg'length-1;
@@ -4440,8 +4440,8 @@ package body fixed_generic_pkg is
   function to_unsigned (
     arg                     : UNRESOLVED_ufixed;  -- ufixed point input
     constant size           : NATURAL;            -- length of output
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_UNSIGNED is
   begin
     return to_uns(resize (arg            => arg,
@@ -4454,8 +4454,8 @@ package body fixed_generic_pkg is
   function to_unsigned (
     arg                     : UNRESOLVED_ufixed;    -- ufixed point input
     size_res                : UNRESOLVED_UNSIGNED;  -- length of output
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_UNSIGNED is
   begin
     return to_unsigned (arg            => arg,
@@ -4467,8 +4467,8 @@ package body fixed_generic_pkg is
   function to_signed (
     arg                     : UNRESOLVED_sfixed;  -- sfixed point input
     constant size           : NATURAL;            -- length of output
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_SIGNED is
   begin
     return to_s(resize (arg            => arg,
@@ -4481,8 +4481,8 @@ package body fixed_generic_pkg is
   function to_signed (
     arg                     : UNRESOLVED_sfixed;  -- sfixed point input
     size_res                : UNRESOLVED_SIGNED;  -- used for length of output
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_SIGNED is
   begin
     return to_signed (arg            => arg,
@@ -4553,8 +4553,8 @@ package body fixed_generic_pkg is
 
   function to_integer (
     arg                     : UNRESOLVED_ufixed;  -- fixed point input
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return NATURAL
   is
     constant left_index : INTEGER := arg'high;
@@ -4584,8 +4584,8 @@ package body fixed_generic_pkg is
 
   function to_integer (
     arg                     : UNRESOLVED_sfixed;  -- fixed point input
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return INTEGER
   is
     constant left_index  : INTEGER := arg'high;
@@ -4710,8 +4710,8 @@ package body fixed_generic_pkg is
     arg                     : UNRESOLVED_ufixed;            -- input
     constant left_index     : INTEGER;  -- integer portion
     constant right_index    : INTEGER;  -- size of fraction
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed
   is
     constant arghigh : INTEGER := maximum (arg'high, arg'low);
@@ -4775,8 +4775,8 @@ package body fixed_generic_pkg is
     arg                     : UNRESOLVED_sfixed;          -- input
     constant left_index     : INTEGER;  -- integer portion
     constant right_index    : INTEGER;  -- size of fraction
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed
   is
     constant arghigh : INTEGER := maximum (arg'high, arg'low);
@@ -4911,8 +4911,8 @@ package body fixed_generic_pkg is
   function to_ufixed (
     arg                     : NATURAL;            -- integer
     size_res                : UNRESOLVED_ufixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed
   is
     constant fw     : INTEGER := mine (size_res'low, size_res'low);  -- catch literals
@@ -4933,8 +4933,8 @@ package body fixed_generic_pkg is
   function to_sfixed (
     arg                     : INTEGER;            -- integer
     size_res                : UNRESOLVED_sfixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed
   is
     constant fw     : INTEGER := mine (size_res'low, size_res'low);  -- catch literals
@@ -4955,8 +4955,8 @@ package body fixed_generic_pkg is
   function to_ufixed (
     arg                     : REAL;     -- real
     size_res                : UNRESOLVED_ufixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)  -- # of guard bits
     return UNRESOLVED_ufixed
   is
@@ -4979,8 +4979,8 @@ package body fixed_generic_pkg is
   function to_sfixed (
     arg                     : REAL;     -- real
     size_res                : UNRESOLVED_sfixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)  -- # of guard bits
     return UNRESOLVED_sfixed
   is
@@ -5003,8 +5003,8 @@ package body fixed_generic_pkg is
   function to_ufixed (
     arg                     : UNRESOLVED_UNSIGNED;  -- unsigned
     size_res                : UNRESOLVED_ufixed;    -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed
   is
     constant fw     : INTEGER := mine (size_res'low, size_res'low);  -- catch literals
@@ -5025,8 +5025,8 @@ package body fixed_generic_pkg is
   function to_sfixed (
     arg                     : UNRESOLVED_SIGNED;  -- signed
     size_res                : UNRESOLVED_sfixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed
   is
     constant fw     : INTEGER := mine (size_res'low, size_res'low);  -- catch literals
@@ -5047,8 +5047,8 @@ package body fixed_generic_pkg is
   function resize (
     arg                     : UNRESOLVED_ufixed;  -- input
     size_res                : UNRESOLVED_ufixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed
   is
     constant fw     : INTEGER := mine (size_res'low, size_res'low);  -- catch literals
@@ -5069,8 +5069,8 @@ package body fixed_generic_pkg is
   function resize (
     arg                     : UNRESOLVED_sfixed;  -- input
     size_res                : UNRESOLVED_sfixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed
   is
     constant fw     : INTEGER := mine (size_res'low, size_res'low);  -- catch literals
diff --git a/common_pkg/fixed_pkg_c.vhd b/common_pkg/fixed_pkg_c.vhd
index cf18e940..95f20e41 100644
--- a/common_pkg/fixed_pkg_c.vhd
+++ b/common_pkg/fixed_pkg_c.vhd
@@ -20,14 +20,14 @@ library IEEE;
 use IEEE.STD_LOGIC_1164.all;
 use IEEE.NUMERIC_STD.all;
 library common_pkg_lib;
-use ieee.fixed_float_types.all;
+use common_pkg_lib.common_fixed_float_types.all;
 
 package fixed_pkg is
 -- generic (
   -- Rounding routine to use in fixed point, fixed_round or fixed_truncate
-  constant fixed_round_style    : fixed_round_style_type    := fixed_round;
+  constant fixed_round_style    : com_fixed_round_style_type    := fixed_round;
   -- Overflow routine to use in fixed point, fixed_saturate or fixed_wrap
-  constant fixed_overflow_style : fixed_overflow_style_type := fixed_saturate;
+  constant fixed_overflow_style : com_fixed_overflow_style_type := fixed_saturate;
   -- Extra bits used in divide routines
   constant fixed_guard_bits     : NATURAL                   := 3;
   -- If TRUE, then turn off warnings on "X" propagation
@@ -266,7 +266,7 @@ package fixed_pkg is
   -- ufixed(a downto b) / ufixed(c downto d) = ufixed(a-d downto b-c-1)
   function divide (
     l, r                 : UNRESOLVED_ufixed;
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_ufixed;
 
@@ -274,7 +274,7 @@ package fixed_pkg is
   -- sfixed(a downto b) / sfixed(c downto d) = sfixed(a-d+1 downto b-c)
   function divide (
     l, r                 : UNRESOLVED_sfixed;
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_sfixed;
 
@@ -282,14 +282,14 @@ package fixed_pkg is
   -- 1 / ufixed(a downto b) = ufixed(-b downto -a-1)
   function reciprocal (
     arg                  : UNRESOLVED_ufixed;  -- fixed point input
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_ufixed;
 
   -- 1 / sfixed(a downto b) = sfixed(-b+1 downto -a)
   function reciprocal (
     arg                  : UNRESOLVED_sfixed;  -- fixed point input
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_sfixed;
 
@@ -298,7 +298,7 @@ package fixed_pkg is
   --   = ufixed (minimum(a,c) downto minimum(b,d))
   function remainder (
     l, r                 : UNRESOLVED_ufixed;
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_ufixed;
 
@@ -306,7 +306,7 @@ package fixed_pkg is
   --   = sfixed (minimum(a,c) downto minimum(b,d))
   function remainder (
     l, r                 : UNRESOLVED_sfixed;
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_sfixed;
 
@@ -315,7 +315,7 @@ package fixed_pkg is
   --        = ufixed (minimum(a,c) downto minimum(b, d))
   function modulo (
     l, r                 : UNRESOLVED_ufixed;
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_ufixed;
 
@@ -323,8 +323,8 @@ package fixed_pkg is
   --        = sfixed (c downto minimum(b, d))
   function modulo (
     l, r                    : UNRESOLVED_sfixed;
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)
     return UNRESOLVED_sfixed;
 
@@ -701,8 +701,8 @@ package fixed_pkg is
     arg                     : UNRESOLVED_ufixed;  -- input
     constant left_index     : INTEGER;  -- integer portion
     constant right_index    : INTEGER;  -- size of fraction
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed;
 
   -- "size_res" functions create the size of the output from the indices
@@ -710,8 +710,8 @@ package fixed_pkg is
   function resize (
     arg                     : UNRESOLVED_ufixed;  -- input
     size_res                : UNRESOLVED_ufixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed;
 
   -- Note that in "wrap" mode the sign bit is not replicated.  Thus the
@@ -720,15 +720,15 @@ package fixed_pkg is
     arg                     : UNRESOLVED_sfixed;  -- input
     constant left_index     : INTEGER;            -- integer portion
     constant right_index    : INTEGER;            -- size of fraction
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed;
 
   function resize (
     arg                     : UNRESOLVED_sfixed;  -- input
     size_res                : UNRESOLVED_sfixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed;
 
   --===========================================================================
@@ -742,15 +742,15 @@ package fixed_pkg is
     arg                     : NATURAL;  -- integer
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER                   := 0;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed;
 
   function to_ufixed (
     arg                     : NATURAL;            -- integer
     size_res                : UNRESOLVED_ufixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed;
 
   -- real to unsigned fixed point
@@ -758,16 +758,16 @@ package fixed_pkg is
     arg                     : REAL;     -- real
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)
     return UNRESOLVED_ufixed;
 
   function to_ufixed (
     arg                     : REAL;     -- real
     size_res                : UNRESOLVED_ufixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)
     return UNRESOLVED_ufixed;
 
@@ -776,15 +776,15 @@ package fixed_pkg is
     arg                     : UNSIGNED;                        -- unsigned
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER                   := 0;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed;
 
   function to_ufixed (
     arg                     : UNSIGNED;           -- unsigned
     size_res                : UNRESOLVED_ufixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed;
 
   -- Performs a conversion.  ufixed (arg'range) is returned
@@ -796,16 +796,16 @@ package fixed_pkg is
   function to_unsigned (
     arg                     : UNRESOLVED_ufixed;  -- fixed point input
     constant size           : NATURAL;            -- length of output
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNSIGNED;
 
   -- unsigned fixed point to unsigned
   function to_unsigned (
     arg                     : UNRESOLVED_ufixed;    -- fixed point input
     size_res                : UNSIGNED;  -- used for length of output
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNSIGNED;
 
   -- unsigned fixed point to real
@@ -816,8 +816,8 @@ package fixed_pkg is
   -- unsigned fixed point to integer
   function to_integer (
     arg                     : UNRESOLVED_ufixed;  -- fixed point input
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return NATURAL;
 
   -- Integer to UNRESOLVED_sfixed
@@ -825,15 +825,15 @@ package fixed_pkg is
     arg                     : INTEGER;  -- integer
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER                   := 0;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed;
 
   function to_sfixed (
     arg                     : INTEGER;            -- integer
     size_res                : UNRESOLVED_sfixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed;
 
   -- Real to sfixed
@@ -841,16 +841,16 @@ package fixed_pkg is
     arg                     : REAL;     -- real
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)
     return UNRESOLVED_sfixed;
 
   function to_sfixed (
     arg                     : REAL;     -- real
     size_res                : UNRESOLVED_sfixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)
     return UNRESOLVED_sfixed;
 
@@ -859,15 +859,15 @@ package fixed_pkg is
     arg                     : SIGNED;               -- signed
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER                   := 0;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed;
 
   function to_sfixed (
     arg                     : SIGNED;  -- signed
     size_res                : UNRESOLVED_sfixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed;
 
   -- signed to sfixed (output assumed to be size of signed input)
@@ -884,16 +884,16 @@ package fixed_pkg is
   function to_signed (
     arg                     : UNRESOLVED_sfixed;  -- fixed point input
     constant size           : NATURAL;            -- length of output
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return SIGNED;
 
   -- signed fixed point to signed
   function to_signed (
     arg                     : UNRESOLVED_sfixed;  -- fixed point input
     size_res                : SIGNED;  -- used for length of output
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return SIGNED;
 
   -- signed fixed point to real
@@ -904,8 +904,8 @@ package fixed_pkg is
   -- signed fixed point to integer
   function to_integer (
     arg                     : UNRESOLVED_sfixed;  -- fixed point input
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return INTEGER;
 
   -- Because of the fairly complicated sizing rules in the fixed point
@@ -2119,7 +2119,7 @@ package body fixed_pkg is
   -- bottom bit is a "1" it is rounded, otherwise it remains the same.
   function round_fixed (arg            : UNRESOLVED_ufixed;
                         remainder      : UNRESOLVED_ufixed;
-                        overflow_style : fixed_overflow_style_type := fixed_overflow_style)
+                        overflow_style : com_fixed_overflow_style_type := fixed_overflow_style)
     return UNRESOLVED_ufixed is
     variable rounds         : BOOLEAN;
     variable round_overflow : BOOLEAN;
@@ -2151,7 +2151,7 @@ package body fixed_pkg is
   -- Rounding case statement
   function round_fixed (arg            : UNRESOLVED_sfixed;
                         remainder      : UNRESOLVED_sfixed;
-                        overflow_style : fixed_overflow_style_type := fixed_overflow_style)
+                        overflow_style : com_fixed_overflow_style_type := fixed_overflow_style)
     return UNRESOLVED_sfixed is
     variable rounds         : BOOLEAN;
     variable round_overflow : BOOLEAN;
@@ -2489,7 +2489,7 @@ package body fixed_pkg is
   -- ufixed(a downto b) / ufixed(c downto d) = ufixed(a-d downto b-c-1)
   function divide (
     l, r                 : UNRESOLVED_ufixed;
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_ufixed is
     variable result : UNRESOLVED_ufixed (l'high - mine(r'low, r'low) downto
@@ -2530,7 +2530,7 @@ package body fixed_pkg is
   -- sfixed(a downto b) / sfixed(c downto d) = sfixed(a-d+1 downto b-c)
   function divide (
     l, r                 : UNRESOLVED_sfixed;
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_sfixed is
     variable result     : UNRESOLVED_sfixed (l'high - mine(r'low, r'low) + 1 downto 
@@ -2571,7 +2571,7 @@ package body fixed_pkg is
   -- 1 / ufixed(a downto b) = ufixed(-b downto -a-1)
   function reciprocal (
     arg                  : UNRESOLVED_ufixed;  -- fixed point input
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_ufixed is
     constant one : UNRESOLVED_ufixed (0 downto 0) := "1";
@@ -2585,7 +2585,7 @@ package body fixed_pkg is
   -- 1 / sfixed(a downto b) = sfixed(-b+1 downto -a)
   function reciprocal (
     arg                  : UNRESOLVED_sfixed;              -- fixed point input
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_sfixed is
     constant one     : UNRESOLVED_sfixed (1 downto 0) := "01";  -- extra bit.
@@ -2625,7 +2625,7 @@ package body fixed_pkg is
   --        = ufixed (min(a,c) downto min(b,d))
   function remainder (
     l, r                 : UNRESOLVED_ufixed;            -- fixed point input
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_ufixed is
     variable result     : UNRESOLVED_ufixed (minimum(l'high, r'high) downto
@@ -2681,7 +2681,7 @@ package body fixed_pkg is
   --        = sfixed (min(a,c) downto min(b,d))
   function remainder (
     l, r                 : UNRESOLVED_sfixed;  -- fixed point input
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_sfixed is
     variable l_abs      : UNRESOLVED_ufixed (l'range);
@@ -2732,7 +2732,7 @@ package body fixed_pkg is
   --        = ufixed (min(a,c) downto min(b, d))
   function modulo (
     l, r                 : UNRESOLVED_ufixed;  -- fixed point input
-    constant round_style : fixed_round_style_type := fixed_round_style;
+    constant round_style : com_fixed_round_style_type := fixed_round_style;
     constant guard_bits  : NATURAL                := fixed_guard_bits)
     return UNRESOLVED_ufixed is
   begin
@@ -2746,8 +2746,8 @@ package body fixed_pkg is
   --        = sfixed (c downto min(b, d))
   function modulo (
     l, r                    : UNRESOLVED_sfixed;  -- fixed point input
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)
     return UNRESOLVED_sfixed is
     variable l_abs : UNRESOLVED_ufixed (l'range);
@@ -4319,8 +4319,8 @@ package body fixed_pkg is
     arg                     : NATURAL;  -- integer
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER                   := 0;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed is
     constant fw      : INTEGER := mins (right_index, right_index);  -- catch literals
     variable result  : UNRESOLVED_ufixed (left_index downto fw);
@@ -4365,8 +4365,8 @@ package body fixed_pkg is
     arg                     : INTEGER;  -- integer
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER                   := 0;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed is
     constant fw      : INTEGER := mins (right_index, right_index);  -- catch literals
     variable result  : UNRESOLVED_sfixed (left_index downto fw);
@@ -4423,8 +4423,8 @@ package body fixed_pkg is
     arg                     : REAL;     -- real
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)  -- # of guard bits
     return UNRESOLVED_ufixed is
     constant fw              : INTEGER := mins (right_index, right_index);  -- catch literals
@@ -4481,8 +4481,8 @@ package body fixed_pkg is
     arg                     : REAL;     -- real
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)  -- # of guard bits
     return UNRESOLVED_sfixed is
     constant fw     : INTEGER := mins (right_index, right_index);  -- catch literals
@@ -4539,8 +4539,8 @@ package body fixed_pkg is
     arg                     : UNSIGNED;             -- unsigned
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER                   := 0;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed is
     constant ARG_LEFT : INTEGER := ARG'length-1;
     alias XARG        : UNSIGNED(ARG_LEFT downto 0) is ARG;
@@ -4574,8 +4574,8 @@ package body fixed_pkg is
     arg                     : SIGNED;               -- signed
     constant left_index     : INTEGER;  -- left index (high index)
     constant right_index    : INTEGER                   := 0;  -- right index
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed is
     constant ARG_LEFT : INTEGER := ARG'length-1;
     alias XARG        : SIGNED(ARG_LEFT downto 0) is ARG;
@@ -4895,8 +4895,8 @@ package body fixed_pkg is
   function to_unsigned (
     arg                     : UNRESOLVED_ufixed;  -- ufixed point input
     constant size           : NATURAL;            -- length of output
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNSIGNED is
   begin
     return to_uns(resize (arg            => arg,
@@ -4909,8 +4909,8 @@ package body fixed_pkg is
   function to_unsigned (
     arg                     : UNRESOLVED_ufixed;    -- ufixed point input
     size_res                : UNSIGNED;  -- length of output
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNSIGNED is
   begin
     return to_unsigned (arg            => arg,
@@ -4922,8 +4922,8 @@ package body fixed_pkg is
   function to_signed (
     arg                     : UNRESOLVED_sfixed;  -- sfixed point input
     constant size           : NATURAL;            -- length of output
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return SIGNED is
   begin
     return to_s(resize (arg            => arg,
@@ -4936,8 +4936,8 @@ package body fixed_pkg is
   function to_signed (
     arg                     : UNRESOLVED_sfixed;  -- sfixed point input
     size_res                : SIGNED;  -- used for length of output
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return SIGNED is
   begin
     return to_signed (arg            => arg,
@@ -5006,8 +5006,8 @@ package body fixed_pkg is
 
   function to_integer (
     arg                     : UNRESOLVED_ufixed;  -- fixed point input
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return NATURAL is
     constant left_index : INTEGER := arg'high;
     variable arg_uns    : UNSIGNED (left_index+1 downto 0)
@@ -5036,8 +5036,8 @@ package body fixed_pkg is
 
   function to_integer (
     arg                     : UNRESOLVED_sfixed;  -- fixed point input
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return INTEGER is
     constant left_index  : INTEGER := arg'high;
     constant right_index : INTEGER := arg'low;
@@ -5160,8 +5160,8 @@ package body fixed_pkg is
     arg                     : UNRESOLVED_ufixed;            -- input
     constant left_index     : INTEGER;  -- integer portion
     constant right_index    : INTEGER;  -- size of fraction
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed is
     constant arghigh : INTEGER := maximum (arg'high, arg'low);
     constant arglow  : INTEGER := mine (arg'high, arg'low);
@@ -5224,8 +5224,8 @@ package body fixed_pkg is
     arg                     : UNRESOLVED_sfixed;          -- input
     constant left_index     : INTEGER;  -- integer portion
     constant right_index    : INTEGER;  -- size of fraction
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed is
     constant arghigh : INTEGER := maximum (arg'high, arg'low);
     constant arglow  : INTEGER := mine (arg'high, arg'low);
@@ -5357,8 +5357,8 @@ package body fixed_pkg is
   function to_ufixed (
     arg                     : NATURAL;            -- integer
     size_res                : UNRESOLVED_ufixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed is
     constant fw     : INTEGER := mine (size_res'low, size_res'low);  -- catch literals
     variable result : UNRESOLVED_ufixed (size_res'left downto fw);
@@ -5378,8 +5378,8 @@ package body fixed_pkg is
   function to_sfixed (
     arg                     : INTEGER;            -- integer
     size_res                : UNRESOLVED_sfixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed is
     constant fw     : INTEGER := mine (size_res'low, size_res'low);  -- catch literals
     variable result : UNRESOLVED_sfixed (size_res'left downto fw);
@@ -5399,8 +5399,8 @@ package body fixed_pkg is
   function to_ufixed (
     arg                     : REAL;     -- real
     size_res                : UNRESOLVED_ufixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)  -- # of guard bits
     return UNRESOLVED_ufixed is
     constant fw     : INTEGER := mine (size_res'low, size_res'low);  -- catch literals
@@ -5422,8 +5422,8 @@ package body fixed_pkg is
   function to_sfixed (
     arg                     : REAL;     -- real
     size_res                : UNRESOLVED_sfixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style;
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;
     constant guard_bits     : NATURAL                   := fixed_guard_bits)  -- # of guard bits
     return UNRESOLVED_sfixed is
     constant fw     : INTEGER := mine (size_res'low, size_res'low);  -- catch literals
@@ -5445,8 +5445,8 @@ package body fixed_pkg is
   function to_ufixed (
     arg                     : UNSIGNED;  -- unsigned
     size_res                : UNRESOLVED_ufixed;    -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed is
     constant fw     : INTEGER := mine (size_res'low, size_res'low);  -- catch literals
     variable result : UNRESOLVED_ufixed (size_res'left downto fw);
@@ -5466,8 +5466,8 @@ package body fixed_pkg is
   function to_sfixed (
     arg                     : SIGNED;  -- signed
     size_res                : UNRESOLVED_sfixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed is
     constant fw     : INTEGER := mine (size_res'low, size_res'low);  -- catch literals
     variable result : UNRESOLVED_sfixed (size_res'left downto fw);
@@ -5487,8 +5487,8 @@ package body fixed_pkg is
   function resize (
     arg                     : UNRESOLVED_ufixed;  -- input
     size_res                : UNRESOLVED_ufixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_ufixed is
     constant fw     : INTEGER := mine (size_res'low, size_res'low);  -- catch literals
     variable result : UNRESOLVED_ufixed (size_res'high downto fw);
@@ -5508,8 +5508,8 @@ package body fixed_pkg is
   function resize (
     arg                     : UNRESOLVED_sfixed;  -- input
     size_res                : UNRESOLVED_sfixed;  -- for size only
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-    constant round_style    : fixed_round_style_type    := fixed_round_style)
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style)
     return UNRESOLVED_sfixed is
     constant fw     : INTEGER := mine (size_res'low, size_res'low);  -- catch literals
     variable result : UNRESOLVED_sfixed (size_res'high downto fw);
diff --git a/common_pkg/fixed_pkg_c_2008redirect.vhdl b/common_pkg/fixed_pkg_c_2008redirect.vhdl
index 0ec0d920..922e71f4 100755
--- a/common_pkg/fixed_pkg_c_2008redirect.vhdl
+++ b/common_pkg/fixed_pkg_c_2008redirect.vhdl
@@ -43,13 +43,13 @@
 
 library common_pkg_lib;
 library IEEE;
-use IEEE.fixed_float_types.all;
+use common_pkg_lib.common_fixed_float_types.all;
 --use common_pkg_lib.fixed_generic_pkg.all;
 
 package fixed_pkg is new common_pkg_lib.fixed_generic_pkg
   generic map (
-    fixed_round_style    => IEEE.fixed_float_types.fixed_round,
-    fixed_overflow_style => IEEE.fixed_float_types.fixed_saturate,
+    fixed_round_style    => common_pkg_lib.common_fixed_float_types.fixed_round,
+    fixed_overflow_style => common_pkg_lib.common_fixed_float_types.fixed_saturate,
     fixed_guard_bits     => 3,
     no_warning           => false
     );
diff --git a/common_pkg/float_generic_pkg_2008redirect.vhdl b/common_pkg/float_generic_pkg_2008redirect.vhdl
index 61b93faf..aad38b4e 100755
--- a/common_pkg/float_generic_pkg_2008redirect.vhdl
+++ b/common_pkg/float_generic_pkg_2008redirect.vhdl
@@ -45,7 +45,7 @@ library IEEE;
 use IEEE.STD_LOGIC_1164.all;
 use IEEE.NUMERIC_STD.all;
 library common_pkg_lib;
-use IEEE.fixed_float_types.all;
+use common_pkg_lib.common_fixed_float_types.all;
 
 package float_generic_pkg is
   generic (
@@ -56,7 +56,7 @@ package float_generic_pkg is
     -- Rounding algorithm, "round_nearest" is default, other valid values
     -- are "round_zero" (truncation), "round_inf" (round up), and
     -- "round_neginf" (round down)
-    float_round_style    : round_type := round_nearest;
+    float_round_style    : com_round_type := round_nearest;
     -- Denormal numbers (very small numbers near zero) true or false
     float_denormalize    : BOOLEAN    := true;
     -- Turns on NAN processing (invalid numbers and overflow) true of false
@@ -180,7 +180,7 @@ package float_generic_pkg is
 
   function add (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -188,7 +188,7 @@ package float_generic_pkg is
 
   function subtract (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -196,7 +196,7 @@ package float_generic_pkg is
 
   function multiply (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -204,7 +204,7 @@ package float_generic_pkg is
 
   function divide (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -212,7 +212,7 @@ package float_generic_pkg is
 
   function remainder (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -220,7 +220,7 @@ package float_generic_pkg is
 
   function modulo (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -229,7 +229,7 @@ package float_generic_pkg is
   -- reciprocal
   function reciprocal (
     arg                  : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -237,7 +237,7 @@ package float_generic_pkg is
 
   function dividebyp2 (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -246,7 +246,7 @@ package float_generic_pkg is
   -- Multiply accumulate  result = l*r + c
   function mac (
     l, r, c              : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -255,7 +255,7 @@ package float_generic_pkg is
   -- Square root (all 754 based implementations need this)
   function sqrt (
     arg                  : UNRESOLVED_float;       -- floating point input
-    constant round_style : round_type := float_round_style;
+    constant round_style : com_round_type := float_round_style;
     constant guard       : NATURAL    := float_guard_bits;
     constant check_error : BOOLEAN    := float_check_error;
     constant denormalize : BOOLEAN    := float_denormalize)
@@ -333,7 +333,7 @@ package float_generic_pkg is
     arg                     : UNRESOLVED_float;  -- Floating point input
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -342,7 +342,7 @@ package float_generic_pkg is
   function resize (
     arg                     : UNRESOLVED_float;  -- Floating point input
     size_res                : UNRESOLVED_float;
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -350,7 +350,7 @@ package float_generic_pkg is
 
   function to_float32 (
     arg                     : UNRESOLVED_float;
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -358,7 +358,7 @@ package float_generic_pkg is
 
   function to_float64 (
     arg                     : UNRESOLVED_float;
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -366,7 +366,7 @@ package float_generic_pkg is
 
   function to_float128 (
     arg                     : UNRESOLVED_float;
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -394,7 +394,7 @@ package float_generic_pkg is
     arg                     : INTEGER;
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style)  -- rounding option
+    constant round_style    : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float;
 
   -- real to float
@@ -402,7 +402,7 @@ package float_generic_pkg is
     arg                     : REAL;
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
     return UNRESOLVED_float;
 
@@ -411,7 +411,7 @@ package float_generic_pkg is
     arg                     : UNRESOLVED_UNSIGNED;
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style)  -- rounding option
+    constant round_style    : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float;
 
   -- signed to float
@@ -419,7 +419,7 @@ package float_generic_pkg is
     arg                     : UNRESOLVED_SIGNED;
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style)  -- rounding option
+    constant round_style    : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float;
 
   -- unsigned fixed point to float
@@ -427,7 +427,7 @@ package float_generic_pkg is
     arg                     : UNRESOLVED_ufixed;  -- unsigned fixed point input
     constant exponent_width : NATURAL    := float_exponent_width;  -- width of exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- width of fraction
-    constant round_style    : round_type := float_round_style;  -- rounding
+    constant round_style    : com_round_type := float_round_style;  -- rounding
     constant denormalize    : BOOLEAN    := float_denormalize)  -- use ieee extensions
     return UNRESOLVED_float;
 
@@ -436,7 +436,7 @@ package float_generic_pkg is
     arg                     : UNRESOLVED_sfixed;
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding
+    constant round_style    : com_round_type := float_round_style;  -- rounding
     constant denormalize    : BOOLEAN    := float_denormalize)  -- rounding option
     return UNRESOLVED_float;
 
@@ -445,14 +445,14 @@ package float_generic_pkg is
   function to_float (
     arg                  : INTEGER;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style)  -- rounding option
+    constant round_style : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float;
 
   -- real to float
   function to_float (
     arg                  : REAL;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
     return UNRESOLVED_float;
 
@@ -460,14 +460,14 @@ package float_generic_pkg is
   function to_float (
     arg                  : UNRESOLVED_UNSIGNED;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style)  -- rounding option
+    constant round_style : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float;
 
   -- signed to float
   function to_float (
     arg                  : UNRESOLVED_SIGNED;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style)  -- rounding option
+    constant round_style : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float;
 
   -- sulv to float
@@ -480,7 +480,7 @@ package float_generic_pkg is
   function to_float (
     arg                  : UNRESOLVED_ufixed;  -- unsigned fixed point input
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style;  -- rounding
+    constant round_style : com_round_type := float_round_style;  -- rounding
     constant denormalize : BOOLEAN    := float_denormalize)  -- use ieee extensions
     return UNRESOLVED_float;
 
@@ -488,7 +488,7 @@ package float_generic_pkg is
   function to_float (
     arg                  : UNRESOLVED_sfixed;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style;  -- rounding
+    constant round_style : com_round_type := float_round_style;  -- rounding
     constant denormalize : BOOLEAN    := float_denormalize)  -- rounding option
     return UNRESOLVED_float;
 
@@ -496,7 +496,7 @@ package float_generic_pkg is
   function to_unsigned (
     arg                  : UNRESOLVED_float;  -- floating point input
     constant size        : NATURAL;     -- length of output
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return UNRESOLVED_UNSIGNED;
 
@@ -504,7 +504,7 @@ package float_generic_pkg is
   function to_signed (
     arg                  : UNRESOLVED_float;  -- floating point input
     constant size        : NATURAL;     -- length of output
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return UNRESOLVED_SIGNED;
 
@@ -513,8 +513,8 @@ package float_generic_pkg is
     arg                     : UNRESOLVED_float;  -- fp input
     constant left_index     : INTEGER;  -- integer part
     constant right_index    : INTEGER;  -- fraction part
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;  -- saturate
-    constant round_style    : fixed_round_style_type    := fixed_round_style;  -- rounding
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;  -- saturate
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;  -- rounding
     constant check_error    : BOOLEAN                   := float_check_error;  -- check for errors
     constant denormalize    : BOOLEAN                   := float_denormalize)
     return UNRESOLVED_ufixed;
@@ -524,8 +524,8 @@ package float_generic_pkg is
     arg                     : UNRESOLVED_float;  -- fp input
     constant left_index     : INTEGER;  -- integer part
     constant right_index    : INTEGER;  -- fraction part
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;  -- saturate
-    constant round_style    : fixed_round_style_type    := fixed_round_style;  -- rounding
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;  -- saturate
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;  -- rounding
     constant check_error    : BOOLEAN                   := float_check_error;  -- check for errors
     constant denormalize    : BOOLEAN                   := float_denormalize)
     return UNRESOLVED_sfixed;
@@ -535,7 +535,7 @@ package float_generic_pkg is
   function to_unsigned (
     arg                  : UNRESOLVED_float;  -- floating point input
     size_res             : UNRESOLVED_UNSIGNED;
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return UNRESOLVED_UNSIGNED;
 
@@ -543,7 +543,7 @@ package float_generic_pkg is
   function to_signed (
     arg                  : UNRESOLVED_float;  -- floating point input
     size_res             : UNRESOLVED_SIGNED;
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return UNRESOLVED_SIGNED;
 
@@ -551,8 +551,8 @@ package float_generic_pkg is
   function to_ufixed (
     arg                     : UNRESOLVED_float;  -- fp input
     size_res                : UNRESOLVED_ufixed;
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;  -- saturate
-    constant round_style    : fixed_round_style_type    := fixed_round_style;  -- rounding
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;  -- saturate
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;  -- rounding
     constant check_error    : BOOLEAN                   := float_check_error;  -- check for errors
     constant denormalize    : BOOLEAN                   := float_denormalize)
     return UNRESOLVED_ufixed;
@@ -561,8 +561,8 @@ package float_generic_pkg is
   function to_sfixed (
     arg                     : UNRESOLVED_float;  -- fp input
     size_res                : UNRESOLVED_sfixed;
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;  -- saturate
-    constant round_style    : fixed_round_style_type    := fixed_round_style;  -- rounding
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;  -- saturate
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;  -- rounding
     constant check_error    : BOOLEAN                   := float_check_error;  -- check for errors
     constant denormalize    : BOOLEAN                   := float_denormalize)
     return UNRESOLVED_sfixed;
@@ -577,7 +577,7 @@ package float_generic_pkg is
   -- float to integer
   function to_integer (
     arg                  : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return INTEGER;
 
@@ -628,7 +628,7 @@ package float_generic_pkg is
     sticky                  : STD_ULOGIC := '0';  -- Sticky bit (rounding)
     constant exponent_width : NATURAL    := float_exponent_width;  -- size of output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- size of output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant denormalize    : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant nguard         : NATURAL    := float_guard_bits)   -- guard bits
     return UNRESOLVED_float;
@@ -641,7 +641,7 @@ package float_generic_pkg is
     sticky                  : STD_ULOGIC := '0';  -- Sticky bit (rounding)
     constant exponent_width : NATURAL    := float_exponent_width;  -- size of output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- size of output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant denormalize    : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant nguard         : NATURAL    := float_guard_bits)   -- guard bits
     return UNRESOLVED_float;
@@ -652,7 +652,7 @@ package float_generic_pkg is
     sign                 : STD_ULOGIC;  -- sign bit
     sticky               : STD_ULOGIC := '0';  -- Sticky bit (rounding)
     size_res             : UNRESOLVED_float;   -- used for sizing only
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant denormalize : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant nguard      : NATURAL    := float_guard_bits)   -- guard bits
     return UNRESOLVED_float;
@@ -664,7 +664,7 @@ package float_generic_pkg is
     sign                 : STD_ULOGIC;  -- sign bit
     sticky               : STD_ULOGIC := '0';  -- Sticky bit (rounding)
     size_res             : UNRESOLVED_float;   -- used for sizing only
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant denormalize : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant nguard      : NATURAL    := float_guard_bits)   -- guard bits
     return UNRESOLVED_float;
@@ -810,7 +810,7 @@ package float_generic_pkg is
   function Scalb (
     y                    : UNRESOLVED_float;  -- floating point input
     N                    : INTEGER;     -- exponent to add
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
     return UNRESOLVED_float;
@@ -819,7 +819,7 @@ package float_generic_pkg is
   function Scalb (
     y                    : UNRESOLVED_float;  -- floating point input
     N                    : UNRESOLVED_SIGNED;      -- exponent to add
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
     return UNRESOLVED_float;
@@ -1182,7 +1182,7 @@ package body float_generic_pkg is
     sign                 : STD_ULOGIC;  -- sign bit
     remainder            : UNSIGNED;    -- remainder to round from
     sticky               : STD_ULOGIC := '0';      -- Sticky bit
-    constant round_style : round_type)  -- rounding type
+    constant round_style : com_round_type)  -- rounding type
     return BOOLEAN
   is
     variable result     : BOOLEAN;
@@ -1290,7 +1290,7 @@ package body float_generic_pkg is
     variable frac        : out UNSIGNED;            -- unsigned biased output
     constant denormalize : in  BOOLEAN;             -- turn on denormalization
     constant bias        : in  NATURAL;             -- bias for fixed point
-    constant round_style : in  round_type) is       -- rounding method
+    constant round_style : in  com_round_type) is       -- rounding method
     constant fraction_width : INTEGER := -mine(arg'low, arg'low);  -- length of FP output fraction
     constant exponent_width : INTEGER := arg'high;  -- length of FP output exponent
     variable fract          : UNSIGNED (frac'range);  -- internal version of frac
@@ -1398,7 +1398,7 @@ package body float_generic_pkg is
     sticky                  : STD_ULOGIC := '0';  -- Sticky bit (rounding)
     constant exponent_width : NATURAL    := float_exponent_width;  -- size of output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- size of output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant denormalize    : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant nguard         : NATURAL    := float_guard_bits)  -- guard bits
     return UNRESOLVED_float
@@ -1485,7 +1485,7 @@ package body float_generic_pkg is
     sticky                  : STD_ULOGIC := '0';  -- Sticky bit (rounding)
     constant exponent_width : NATURAL    := float_exponent_width;  -- size of output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- size of output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant denormalize    : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant nguard         : NATURAL    := float_guard_bits)   -- guard bits
     return UNRESOLVED_float
@@ -1516,7 +1516,7 @@ package body float_generic_pkg is
     sign                 : STD_ULOGIC;  -- sign bit
     sticky               : STD_ULOGIC := '0';  -- Sticky bit (rounding)
     size_res             : UNRESOLVED_float;   -- used for sizing only
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant denormalize : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant nguard      : NATURAL    := float_guard_bits)   -- guard bits
     return UNRESOLVED_float
@@ -1548,7 +1548,7 @@ package body float_generic_pkg is
     sign                 : STD_ULOGIC;  -- sign bit
     sticky               : STD_ULOGIC := '0';  -- Sticky bit (rounding)
     size_res             : UNRESOLVED_float;   -- used for sizing only
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant denormalize : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant nguard      : NATURAL    := float_guard_bits)   -- guard bits
     return UNRESOLVED_float is
@@ -1705,7 +1705,7 @@ package body float_generic_pkg is
   -- Addition, adds two floating point numbers
   function add (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -1856,7 +1856,7 @@ package body float_generic_pkg is
   -- Subtraction, Calls "add".
   function subtract (
     l, r                 : UNRESOLVED_float;     -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -1876,7 +1876,7 @@ package body float_generic_pkg is
   -- Floating point multiply
   function multiply (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -2014,7 +2014,7 @@ package body float_generic_pkg is
   -- 1/X function.  Needed for algorithm development.
   function reciprocal (
     arg                  : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -2111,7 +2111,7 @@ package body float_generic_pkg is
   -- floating point division
   function divide (
     l, r                 : UNRESOLVED_float;       -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -2260,7 +2260,7 @@ package body float_generic_pkg is
   -- division by a power of 2
   function dividebyp2 (
     l, r                 : UNRESOLVED_float;      -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -2385,7 +2385,7 @@ package body float_generic_pkg is
   -- Multiply accumulate  result = l*r + c
   function mac (
     l, r, c              : UNRESOLVED_float;      -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -2568,7 +2568,7 @@ package body float_generic_pkg is
   -- "rem" function
   function remainder (
     l, r                 : UNRESOLVED_float;       -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -2673,7 +2673,7 @@ package body float_generic_pkg is
   -- "mod" function
   function modulo (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -2734,7 +2734,7 @@ package body float_generic_pkg is
   -- Square root of a floating point number.  Done using Newton's Iteration.
   function sqrt (
     arg                  : UNRESOLVED_float;        -- floating point input
-    constant round_style : round_type := float_round_style;
+    constant round_style : com_round_type := float_round_style;
     constant guard       : NATURAL    := float_guard_bits;
     constant check_error : BOOLEAN    := float_check_error;
     constant denormalize : BOOLEAN    := float_denormalize)
@@ -3369,7 +3369,7 @@ package body float_generic_pkg is
     arg                     : UNRESOLVED_float;        -- Floating point input
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -3474,7 +3474,7 @@ package body float_generic_pkg is
   function resize (
     arg                     : UNRESOLVED_float;  -- floating point input
     size_res                : UNRESOLVED_float;
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -3498,7 +3498,7 @@ package body float_generic_pkg is
 
   function to_float32 (
     arg                     : UNRESOLVED_float;
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -3515,7 +3515,7 @@ package body float_generic_pkg is
 
   function to_float64 (
     arg                     : UNRESOLVED_float;
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -3532,7 +3532,7 @@ package body float_generic_pkg is
 
   function to_float128 (
     arg                     : UNRESOLVED_float;
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -3553,7 +3553,7 @@ package body float_generic_pkg is
     arg                     : REAL;
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
     return UNRESOLVED_float
   is
@@ -3643,7 +3643,7 @@ package body float_generic_pkg is
     arg                     : INTEGER;
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style)  -- rounding option
+    constant round_style    : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float
   is
     variable result     : UNRESOLVED_float (exponent_width downto -fraction_width);
@@ -3743,7 +3743,7 @@ package body float_generic_pkg is
     arg                     : UNRESOLVED_UNSIGNED;
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style)  -- rounding option
+    constant round_style    : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float
   is
     variable result   : UNRESOLVED_float (exponent_width downto -fraction_width);
@@ -3768,7 +3768,7 @@ package body float_generic_pkg is
     arg                     : UNRESOLVED_SIGNED;
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style)  -- rounding option
+    constant round_style    : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float
   is
     variable result     : UNRESOLVED_float (exponent_width downto -fraction_width);
@@ -3862,7 +3862,7 @@ package body float_generic_pkg is
     arg                     : UNRESOLVED_ufixed;  -- unsigned fixed point input
     constant exponent_width : NATURAL    := float_exponent_width;  -- width of exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- width of fraction
-    constant round_style    : round_type := float_round_style;  -- rounding
+    constant round_style    : com_round_type := float_round_style;  -- rounding
     constant denormalize    : BOOLEAN    := float_denormalize)  -- use ieee extensions
     return UNRESOLVED_float
   is
@@ -3886,7 +3886,7 @@ package body float_generic_pkg is
     arg                     : UNRESOLVED_sfixed;    -- signed fixed point
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding
+    constant round_style    : com_round_type := float_round_style;  -- rounding
     constant denormalize    : BOOLEAN    := float_denormalize)  -- rounding option
     return UNRESOLVED_float
   is
@@ -3994,7 +3994,7 @@ package body float_generic_pkg is
   function to_float (
     arg                  : INTEGER;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style)  -- rounding option
+    constant round_style : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float
   is
     variable result : UNRESOLVED_float (size_res'left downto size_res'right);
@@ -4014,7 +4014,7 @@ package body float_generic_pkg is
   function to_float (
     arg                  : REAL;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
     return UNRESOLVED_float
   is
@@ -4036,7 +4036,7 @@ package body float_generic_pkg is
   function to_float (
     arg                  : UNRESOLVED_UNSIGNED;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style)  -- rounding option
+    constant round_style : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float
   is
     variable result : UNRESOLVED_float (size_res'left downto size_res'right);
@@ -4056,7 +4056,7 @@ package body float_generic_pkg is
   function to_float (
     arg                  : UNRESOLVED_SIGNED;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style)  -- rounding
+    constant round_style : com_round_type := float_round_style)  -- rounding
     return UNRESOLVED_float
   is
     variable result : UNRESOLVED_float (size_res'left downto size_res'right);
@@ -4094,7 +4094,7 @@ package body float_generic_pkg is
   function to_float (
     arg                  : UNRESOLVED_ufixed;  -- unsigned fixed point input
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style;  -- rounding
+    constant round_style : com_round_type := float_round_style;  -- rounding
     constant denormalize : BOOLEAN    := float_denormalize)  -- use ieee extensions
     return UNRESOLVED_float
   is
@@ -4116,7 +4116,7 @@ package body float_generic_pkg is
   function to_float (
     arg                  : UNRESOLVED_sfixed;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style;  -- rounding
+    constant round_style : com_round_type := float_round_style;  -- rounding
     constant denormalize : BOOLEAN    := float_denormalize)  -- rounding option
     return UNRESOLVED_float
   is
@@ -4137,7 +4137,7 @@ package body float_generic_pkg is
   -- to_integer (float)
   function to_integer (
     arg                  : UNRESOLVED_float;   -- floating point input
-     constant round_style : round_type := float_round_style;  -- rounding option
+     constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return INTEGER
   is
@@ -4212,7 +4212,7 @@ package body float_generic_pkg is
   function to_unsigned (
     arg                  : UNRESOLVED_float;  -- floating point input
     constant size        : NATURAL;     -- length of output
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return UNRESOLVED_UNSIGNED
   is
@@ -4244,7 +4244,7 @@ package body float_generic_pkg is
   function to_signed (
     arg                  : UNRESOLVED_float;  -- floating point input
     constant size        : NATURAL;     -- length of output
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return UNRESOLVED_SIGNED
   is
@@ -4299,8 +4299,8 @@ package body float_generic_pkg is
     arg                     : UNRESOLVED_float;            -- fp input
     constant left_index     : INTEGER;  -- integer part
     constant right_index    : INTEGER;  -- fraction part
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;  -- saturate
-    constant round_style    : fixed_round_style_type    := fixed_round_style;  -- rounding
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;  -- saturate
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;  -- rounding
     constant check_error    : BOOLEAN                   := float_check_error;  -- check for errors
     constant denormalize    : BOOLEAN                   := float_denormalize)
     return UNRESOLVED_ufixed
@@ -4372,8 +4372,8 @@ package body float_generic_pkg is
     arg                     : UNRESOLVED_float;  -- fp input
     constant left_index     : INTEGER;  -- integer part
     constant right_index    : INTEGER;  -- fraction part
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;  -- saturate
-    constant round_style    : fixed_round_style_type    := fixed_round_style;  -- rounding
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;  -- saturate
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;  -- rounding
     constant check_error    : BOOLEAN                   := float_check_error;  -- check for errors
     constant denormalize    : BOOLEAN                   := float_denormalize)
     return UNRESOLVED_sfixed
@@ -4462,7 +4462,7 @@ package body float_generic_pkg is
   function to_unsigned (
     arg                  : UNRESOLVED_float;  -- floating point input
     size_res             : UNRESOLVED_UNSIGNED;
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return UNRESOLVED_UNSIGNED
   is
@@ -4484,7 +4484,7 @@ package body float_generic_pkg is
   function to_signed (
     arg                  : UNRESOLVED_float;  -- floating point input
     size_res             : UNRESOLVED_SIGNED;
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return UNRESOLVED_SIGNED
   is
@@ -4506,8 +4506,8 @@ package body float_generic_pkg is
   function to_ufixed (
     arg                     : UNRESOLVED_float;  -- fp input
     size_res                : UNRESOLVED_ufixed;
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;  -- saturate
-    constant round_style    : fixed_round_style_type    := fixed_round_style;  -- rounding
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;  -- saturate
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;  -- rounding
     constant check_error    : BOOLEAN                   := float_check_error;  -- check for errors
     constant denormalize    : BOOLEAN                   := float_denormalize)
     return UNRESOLVED_ufixed
@@ -4533,8 +4533,8 @@ package body float_generic_pkg is
   function to_sfixed (
     arg                     : UNRESOLVED_float;  -- fp input
     size_res                : UNRESOLVED_sfixed;
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;  -- saturate
-    constant round_style    : fixed_round_style_type    := fixed_round_style;  -- rounding
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;  -- saturate
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;  -- rounding
     constant check_error    : BOOLEAN                   := float_check_error;  -- check for errors
     constant denormalize    : BOOLEAN                   := float_denormalize)
     return UNRESOLVED_sfixed
@@ -5569,7 +5569,7 @@ package body float_generic_pkg is
   function Scalb (
     y                    : UNRESOLVED_float;      -- floating point input
     N                    : INTEGER;     -- exponent to add
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
     return UNRESOLVED_float
@@ -5617,7 +5617,7 @@ package body float_generic_pkg is
   function Scalb (
     y                    : UNRESOLVED_float;   -- floating point input
     N                    : UNRESOLVED_SIGNED;  -- exponent to add
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
     return UNRESOLVED_float
diff --git a/common_pkg/float_pkg_c.vhd b/common_pkg/float_pkg_c.vhd
index fb819da7..4443ce05 100644
--- a/common_pkg/float_pkg_c.vhd
+++ b/common_pkg/float_pkg_c.vhd
@@ -22,7 +22,7 @@ library IEEE;
 use IEEE.STD_LOGIC_1164.all;
 use IEEE.NUMERIC_STD.all;
 library common_pkg_lib;
-use ieee.fixed_float_types.all;
+use common_pkg_lib.common_fixed_float_types.all;
 use common_pkg_lib.fixed_pkg.all;
 
 package float_pkg is
@@ -34,7 +34,7 @@ package float_pkg is
   -- Rounding algorithm, "round_nearest" is default, other valid values
   -- are "round_zero" (truncation), "round_inf" (round up), and
   -- "round_neginf" (round down)
-  constant float_round_style    : round_type := round_nearest;
+  constant float_round_style    : com_round_type := round_nearest;
   -- Denormal numbers (very small numbers near zero) true or false
   constant float_denormalize    : BOOLEAN    := true;
   -- Turns on NAN processing (invalid numbers and overflow) true of false
@@ -153,7 +153,7 @@ package float_pkg is
 
   function add (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -161,7 +161,7 @@ package float_pkg is
 
   function subtract (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -169,7 +169,7 @@ package float_pkg is
 
   function multiply (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -177,7 +177,7 @@ package float_pkg is
 
   function divide (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -185,7 +185,7 @@ package float_pkg is
 
   function remainder (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -193,7 +193,7 @@ package float_pkg is
 
   function modulo (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -202,7 +202,7 @@ package float_pkg is
   -- reciprocal
   function reciprocal (
     arg                  : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -210,7 +210,7 @@ package float_pkg is
 
   function dividebyp2 (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -219,7 +219,7 @@ package float_pkg is
   -- Multiply accumulate  result = l*r + c
   function mac (
     l, r, c              : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -228,7 +228,7 @@ package float_pkg is
   -- Square root (all 754 based implementations need this)
   function sqrt (
     arg                  : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;
+    constant round_style : com_round_type := float_round_style;
     constant guard       : NATURAL    := float_guard_bits;
     constant check_error : BOOLEAN    := float_check_error;
     constant denormalize : BOOLEAN    := float_denormalize)
@@ -306,7 +306,7 @@ package float_pkg is
     arg                     : UNRESOLVED_float;  -- Floating point input
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -315,7 +315,7 @@ package float_pkg is
   function resize (
     arg                     : UNRESOLVED_float;  -- Floating point input
     size_res                : UNRESOLVED_float;
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -323,7 +323,7 @@ package float_pkg is
 
   function to_float32 (
     arg                     : UNRESOLVED_float;
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -331,7 +331,7 @@ package float_pkg is
 
   function to_float64 (
     arg                     : UNRESOLVED_float;
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -339,7 +339,7 @@ package float_pkg is
 
   function to_float128 (
     arg                     : UNRESOLVED_float;
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -367,7 +367,7 @@ package float_pkg is
     arg                     : INTEGER;
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style)  -- rounding option
+    constant round_style    : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float;
 
   -- real to float
@@ -375,7 +375,7 @@ package float_pkg is
     arg                     : REAL;
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
     return UNRESOLVED_float;
 
@@ -384,7 +384,7 @@ package float_pkg is
     arg                     : UNSIGNED;
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style)  -- rounding option
+    constant round_style    : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float;
 
   -- signed to float
@@ -392,7 +392,7 @@ package float_pkg is
     arg                     : SIGNED;
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style)  -- rounding option
+    constant round_style    : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float;
 
   -- unsigned fixed point to float
@@ -400,7 +400,7 @@ package float_pkg is
     arg                     : UNRESOLVED_ufixed;  -- unsigned fixed point input
     constant exponent_width : NATURAL    := float_exponent_width;  -- width of exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- width of fraction
-    constant round_style    : round_type := float_round_style;  -- rounding
+    constant round_style    : com_round_type := float_round_style;  -- rounding
     constant denormalize    : BOOLEAN    := float_denormalize)  -- use ieee extensions
     return UNRESOLVED_float;
 
@@ -409,7 +409,7 @@ package float_pkg is
     arg                     : UNRESOLVED_sfixed;
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding
+    constant round_style    : com_round_type := float_round_style;  -- rounding
     constant denormalize    : BOOLEAN    := float_denormalize)  -- rounding option
     return UNRESOLVED_float;
 
@@ -418,14 +418,14 @@ package float_pkg is
   function to_float (
     arg                  : INTEGER;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style)  -- rounding option
+    constant round_style : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float;
 
   -- real to float
   function to_float (
     arg                  : REAL;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
     return UNRESOLVED_float;
 
@@ -433,14 +433,14 @@ package float_pkg is
   function to_float (
     arg                  : UNSIGNED;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style)  -- rounding option
+    constant round_style : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float;
 
   -- signed to float
   function to_float (
     arg                  : SIGNED;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style)  -- rounding option
+    constant round_style : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float;
 
   -- sulv to float
@@ -453,7 +453,7 @@ package float_pkg is
   function to_float (
     arg                  : UNRESOLVED_ufixed;  -- unsigned fixed point input
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style;  -- rounding
+    constant round_style : com_round_type := float_round_style;  -- rounding
     constant denormalize : BOOLEAN    := float_denormalize)  -- use ieee extensions
     return UNRESOLVED_float;
 
@@ -461,7 +461,7 @@ package float_pkg is
   function to_float (
     arg                  : UNRESOLVED_sfixed;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style;  -- rounding
+    constant round_style : com_round_type := float_round_style;  -- rounding
     constant denormalize : BOOLEAN    := float_denormalize)  -- rounding option
     return UNRESOLVED_float;
 
@@ -469,7 +469,7 @@ package float_pkg is
   function to_unsigned (
     arg                  : UNRESOLVED_float;  -- floating point input
     constant size        : NATURAL;     -- length of output
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return UNSIGNED;
 
@@ -477,7 +477,7 @@ package float_pkg is
   function to_signed (
     arg                  : UNRESOLVED_float;  -- floating point input
     constant size        : NATURAL;     -- length of output
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return SIGNED;
 
@@ -486,8 +486,8 @@ package float_pkg is
     arg                     : UNRESOLVED_float;  -- fp input
     constant left_index     : INTEGER;  -- integer part
     constant right_index    : INTEGER;  -- fraction part
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;  -- saturate
-    constant round_style    : fixed_round_style_type    := fixed_round_style;  -- rounding
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;  -- saturate
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;  -- rounding
     constant check_error    : BOOLEAN                   := float_check_error;  -- check for errors
     constant denormalize    : BOOLEAN                   := float_denormalize)
     return UNRESOLVED_ufixed;
@@ -497,8 +497,8 @@ package float_pkg is
     arg                     : UNRESOLVED_float;  -- fp input
     constant left_index     : INTEGER;  -- integer part
     constant right_index    : INTEGER;  -- fraction part
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;  -- saturate
-    constant round_style    : fixed_round_style_type    := fixed_round_style;  -- rounding
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;  -- saturate
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;  -- rounding
     constant check_error    : BOOLEAN                   := float_check_error;  -- check for errors
     constant denormalize    : BOOLEAN                   := float_denormalize)
     return UNRESOLVED_sfixed;
@@ -508,7 +508,7 @@ package float_pkg is
   function to_unsigned (
     arg                  : UNRESOLVED_float;  -- floating point input
     size_res             : UNSIGNED;
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return UNSIGNED;
 
@@ -516,7 +516,7 @@ package float_pkg is
   function to_signed (
     arg                  : UNRESOLVED_float;  -- floating point input
     size_res             : SIGNED;
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return SIGNED;
 
@@ -524,8 +524,8 @@ package float_pkg is
   function to_ufixed (
     arg                     : UNRESOLVED_float;  -- fp input
     size_res                : UNRESOLVED_ufixed;
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;  -- saturate
-    constant round_style    : fixed_round_style_type    := fixed_round_style;  -- rounding
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;  -- saturate
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;  -- rounding
     constant check_error    : BOOLEAN                   := float_check_error;  -- check for errors
     constant denormalize    : BOOLEAN                   := float_denormalize)
     return UNRESOLVED_ufixed;
@@ -534,8 +534,8 @@ package float_pkg is
   function to_sfixed (
     arg                     : UNRESOLVED_float;  -- fp input
     size_res                : UNRESOLVED_sfixed;
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;  -- saturate
-    constant round_style    : fixed_round_style_type    := fixed_round_style;  -- rounding
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;  -- saturate
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;  -- rounding
     constant check_error    : BOOLEAN                   := float_check_error;  -- check for errors
     constant denormalize    : BOOLEAN                   := float_denormalize)
     return UNRESOLVED_sfixed;
@@ -550,7 +550,7 @@ package float_pkg is
   -- float to integer
   function to_integer (
     arg                  : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return INTEGER;
 
@@ -601,7 +601,7 @@ package float_pkg is
     sticky                  : STD_ULOGIC := '0';  -- Sticky bit (rounding)
     constant exponent_width : NATURAL    := float_exponent_width;  -- size of output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- size of output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant denormalize    : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant nguard         : NATURAL    := float_guard_bits)   -- guard bits
     return UNRESOLVED_float;
@@ -614,7 +614,7 @@ package float_pkg is
     sticky                  : STD_ULOGIC := '0';  -- Sticky bit (rounding)
     constant exponent_width : NATURAL    := float_exponent_width;  -- size of output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- size of output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant denormalize    : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant nguard         : NATURAL    := float_guard_bits)   -- guard bits
     return UNRESOLVED_float;
@@ -625,7 +625,7 @@ package float_pkg is
     sign                 : STD_ULOGIC;  -- sign bit
     sticky               : STD_ULOGIC := '0';  -- Sticky bit (rounding)
     size_res             : UNRESOLVED_float;   -- used for sizing only
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant denormalize : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant nguard      : NATURAL    := float_guard_bits)   -- guard bits
     return UNRESOLVED_float;
@@ -637,7 +637,7 @@ package float_pkg is
     sign                 : STD_ULOGIC;  -- sign bit
     sticky               : STD_ULOGIC := '0';  -- Sticky bit (rounding)
     size_res             : UNRESOLVED_float;   -- used for sizing only
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant denormalize : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant nguard      : NATURAL    := float_guard_bits)   -- guard bits
     return UNRESOLVED_float;
@@ -783,7 +783,7 @@ package float_pkg is
   function Scalb (
     y                    : UNRESOLVED_float;  -- floating point input
     N                    : INTEGER;     -- exponent to add    
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
     return UNRESOLVED_float;
@@ -792,7 +792,7 @@ package float_pkg is
   function Scalb (
     y                    : UNRESOLVED_float;  -- floating point input
     N                    : SIGNED;      -- exponent to add    
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
     return UNRESOLVED_float;
@@ -1346,7 +1346,7 @@ package body float_pkg is
     sign                 : STD_ULOGIC;  -- sign bit
     remainder            : UNSIGNED;    -- remainder to round from
     sticky               : STD_ULOGIC := '0';      -- Sticky bit
-    constant round_style : round_type)  -- rounding type
+    constant round_style : com_round_type)  -- rounding type
     return BOOLEAN is
     variable result     : BOOLEAN;
     variable or_reduced : STD_ULOGIC;
@@ -1453,7 +1453,7 @@ package body float_pkg is
     variable frac        : out UNSIGNED;            -- unsigned biased output
     constant denormalize : in  BOOLEAN;             -- turn on denormalization
     constant bias        : in  NATURAL;             -- bias for fixed point
-    constant round_style : in  round_type) is       -- rounding method
+    constant round_style : in  com_round_type) is       -- rounding method
     constant fraction_width : INTEGER := -mine(arg'low, arg'low);  -- length of FP output fraction
     constant exponent_width : INTEGER := arg'high;  -- length of FP output exponent
     variable fract          : UNSIGNED (frac'range);  -- internal version of frac
@@ -1559,7 +1559,7 @@ package body float_pkg is
     sticky                  : STD_ULOGIC := '0';  -- Sticky bit (rounding)
     constant exponent_width : NATURAL    := float_exponent_width;  -- size of output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- size of output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant denormalize    : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant nguard         : NATURAL    := float_guard_bits)  -- guard bits
     return UNRESOLVED_float is
@@ -1645,7 +1645,7 @@ package body float_pkg is
     sticky                  : STD_ULOGIC := '0';  -- Sticky bit (rounding)
     constant exponent_width : NATURAL    := float_exponent_width;  -- size of output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- size of output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant denormalize    : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant nguard         : NATURAL    := float_guard_bits)   -- guard bits
     return UNRESOLVED_float is
@@ -1675,7 +1675,7 @@ package body float_pkg is
     sign                 : STD_ULOGIC;  -- sign bit
     sticky               : STD_ULOGIC := '0';  -- Sticky bit (rounding)
     size_res             : UNRESOLVED_float;   -- used for sizing only
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant denormalize : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant nguard      : NATURAL    := float_guard_bits)   -- guard bits
     return UNRESOLVED_float is
@@ -1706,7 +1706,7 @@ package body float_pkg is
     sign                 : STD_ULOGIC;  -- sign bit
     sticky               : STD_ULOGIC := '0';  -- Sticky bit (rounding)
     size_res             : UNRESOLVED_float;   -- used for sizing only
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant denormalize : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant nguard      : NATURAL    := float_guard_bits)   -- guard bits
     return UNRESOLVED_float is
@@ -1861,7 +1861,7 @@ package body float_pkg is
   -- Addition, adds two floating point numbers
   function add (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -2011,7 +2011,7 @@ package body float_pkg is
   -- Subtraction, Calls "add".
   function subtract (
     l, r                 : UNRESOLVED_float;     -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -2030,7 +2030,7 @@ package body float_pkg is
   -- Floating point multiply
   function multiply (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -2166,7 +2166,7 @@ package body float_pkg is
   -- 1/X function.  Needed for algorithm development.
   function reciprocal (
     arg                  : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -2261,7 +2261,7 @@ package body float_pkg is
   -- floating point division
   function divide (
     l, r                 : UNRESOLVED_float;       -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -2409,7 +2409,7 @@ package body float_pkg is
   -- division by a power of 2
   function dividebyp2 (
     l, r                 : UNRESOLVED_float;      -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -2533,7 +2533,7 @@ package body float_pkg is
   -- Multiply accumulate  result = l*r + c
   function mac (
     l, r, c              : UNRESOLVED_float;      -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -2715,7 +2715,7 @@ package body float_pkg is
   -- "rem" function
   function remainder (
     l, r                 : UNRESOLVED_float;       -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -2819,7 +2819,7 @@ package body float_pkg is
   -- "mod" function
   function modulo (
     l, r                 : UNRESOLVED_float;  -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant guard       : NATURAL    := float_guard_bits;  -- number of guard bits
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -2879,7 +2879,7 @@ package body float_pkg is
   -- Square root of a floating point number.  Done using Newton's Iteration.
   function sqrt (
     arg                  : UNRESOLVED_float;        -- floating point input
-    constant round_style : round_type := float_round_style;
+    constant round_style : com_round_type := float_round_style;
     constant guard       : NATURAL    := float_guard_bits;
     constant check_error : BOOLEAN    := float_check_error;
     constant denormalize : BOOLEAN    := float_denormalize)
@@ -3505,7 +3505,7 @@ package body float_pkg is
     arg                     : UNRESOLVED_float;        -- Floating point input
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -3611,7 +3611,7 @@ package body float_pkg is
   function resize (
     arg                     : UNRESOLVED_float;  -- floating point input
     size_res                : UNRESOLVED_float;
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -3634,7 +3634,7 @@ package body float_pkg is
 
   function to_float32 (
     arg                     : UNRESOLVED_float;
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -3651,7 +3651,7 @@ package body float_pkg is
 
   function to_float64 (
     arg                     : UNRESOLVED_float;
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -3668,7 +3668,7 @@ package body float_pkg is
 
   function to_float128 (
     arg                     : UNRESOLVED_float;
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant check_error    : BOOLEAN    := float_check_error;
     constant denormalize_in : BOOLEAN    := float_denormalize;  -- Use IEEE extended FP
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
@@ -3689,7 +3689,7 @@ package body float_pkg is
     arg                     : REAL;
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding option
+    constant round_style    : com_round_type := float_round_style;  -- rounding option
     constant denormalize    : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
     return UNRESOLVED_float is
     variable result     : UNRESOLVED_float (exponent_width downto -fraction_width);
@@ -3778,7 +3778,7 @@ package body float_pkg is
     arg                     : INTEGER;
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style)  -- rounding option
+    constant round_style    : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float is
     variable result     : UNRESOLVED_float (exponent_width downto -fraction_width);
     variable arg_int    : NATURAL;      -- Natural version of argument
@@ -3877,7 +3877,7 @@ package body float_pkg is
     arg                     : UNSIGNED;
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style)  -- rounding option
+    constant round_style    : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float is
     variable result   : UNRESOLVED_float (exponent_width downto -fraction_width);
     constant ARG_LEFT : INTEGER := ARG'length-1;
@@ -3901,7 +3901,7 @@ package body float_pkg is
     arg                     : SIGNED;
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style)  -- rounding option
+    constant round_style    : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float is
     variable result     : UNRESOLVED_float (exponent_width downto -fraction_width);
     constant ARG_LEFT   : INTEGER := ARG'length-1;
@@ -3993,7 +3993,7 @@ package body float_pkg is
     arg                     : UNRESOLVED_ufixed;  -- unsigned fixed point input
     constant exponent_width : NATURAL    := float_exponent_width;  -- width of exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- width of fraction
-    constant round_style    : round_type := float_round_style;  -- rounding
+    constant round_style    : com_round_type := float_round_style;  -- rounding
     constant denormalize    : BOOLEAN    := float_denormalize)  -- use ieee extensions
     return UNRESOLVED_float is
     variable sarg   : sfixed (arg'high+1 downto arg'low);  -- Signed version of arg
@@ -4016,7 +4016,7 @@ package body float_pkg is
     arg                     : UNRESOLVED_sfixed;    -- signed fixed point
     constant exponent_width : NATURAL    := float_exponent_width;  -- length of FP output exponent
     constant fraction_width : NATURAL    := float_fraction_width;  -- length of FP output fraction
-    constant round_style    : round_type := float_round_style;  -- rounding
+    constant round_style    : com_round_type := float_round_style;  -- rounding
     constant denormalize    : BOOLEAN    := float_denormalize)  -- rounding option
     return UNRESOLVED_float is
     constant integer_width     : INTEGER := arg'high;
@@ -4123,7 +4123,7 @@ package body float_pkg is
   function to_float (
     arg                  : INTEGER;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style)  -- rounding option
+    constant round_style : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float is
     variable result : UNRESOLVED_float (size_res'left downto size_res'right);
   begin
@@ -4142,7 +4142,7 @@ package body float_pkg is
   function to_float (
     arg                  : REAL;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
     return UNRESOLVED_float is
     variable result : UNRESOLVED_float (size_res'left downto size_res'right);
@@ -4163,7 +4163,7 @@ package body float_pkg is
   function to_float (
     arg                  : UNSIGNED;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style)  -- rounding option
+    constant round_style : com_round_type := float_round_style)  -- rounding option
     return UNRESOLVED_float is
     variable result : UNRESOLVED_float (size_res'left downto size_res'right);
   begin
@@ -4182,7 +4182,7 @@ package body float_pkg is
   function to_float (
     arg                  : SIGNED;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style)  -- rounding
+    constant round_style : com_round_type := float_round_style)  -- rounding
     return UNRESOLVED_float is
     variable result : UNRESOLVED_float (size_res'left downto size_res'right);
   begin
@@ -4218,7 +4218,7 @@ package body float_pkg is
   function to_float (
     arg                  : UNRESOLVED_ufixed;  -- unsigned fixed point input
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style;  -- rounding
+    constant round_style : com_round_type := float_round_style;  -- rounding
     constant denormalize : BOOLEAN    := float_denormalize)  -- use ieee extensions
     return UNRESOLVED_float is
     variable result : UNRESOLVED_float (size_res'left downto size_res'right);
@@ -4239,7 +4239,7 @@ package body float_pkg is
   function to_float (
     arg                  : UNRESOLVED_sfixed;
     size_res             : UNRESOLVED_float;
-    constant round_style : round_type := float_round_style;  -- rounding
+    constant round_style : com_round_type := float_round_style;  -- rounding
     constant denormalize : BOOLEAN    := float_denormalize)  -- rounding option
     return UNRESOLVED_float is
     variable result : UNRESOLVED_float (size_res'left downto size_res'right);
@@ -4259,7 +4259,7 @@ package body float_pkg is
   -- to_integer (float)
   function to_integer (
     arg                  : UNRESOLVED_float;   -- floating point input
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return INTEGER is
     variable validfp : valid_fpstate;   -- Valid FP state
@@ -4333,7 +4333,7 @@ package body float_pkg is
   function to_unsigned (
     arg                  : UNRESOLVED_float;  -- floating point input
     constant size        : NATURAL;     -- length of output
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return UNSIGNED is
     variable validfp : valid_fpstate;   -- Valid FP state
@@ -4364,7 +4364,7 @@ package body float_pkg is
   function to_signed (
     arg                  : UNRESOLVED_float;  -- floating point input
     constant size        : NATURAL;     -- length of output
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return SIGNED is
     variable sign    : STD_ULOGIC;      -- true if negative
@@ -4418,8 +4418,8 @@ package body float_pkg is
     arg                     : UNRESOLVED_float;            -- fp input
     constant left_index     : INTEGER;  -- integer part
     constant right_index    : INTEGER;  -- fraction part
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;  -- saturate
-    constant round_style    : fixed_round_style_type    := fixed_round_style;  -- rounding
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;  -- saturate
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;  -- rounding
     constant check_error    : BOOLEAN                   := float_check_error;  -- check for errors
     constant denormalize    : BOOLEAN                   := float_denormalize)
     return UNRESOLVED_ufixed is
@@ -4490,8 +4490,8 @@ package body float_pkg is
     arg                     : UNRESOLVED_float;  -- fp input
     constant left_index     : INTEGER;  -- integer part
     constant right_index    : INTEGER;  -- fraction part
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;  -- saturate
-    constant round_style    : fixed_round_style_type    := fixed_round_style;  -- rounding
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;  -- saturate
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;  -- rounding
     constant check_error    : BOOLEAN                   := float_check_error;  -- check for errors
     constant denormalize    : BOOLEAN                   := float_denormalize)
     return UNRESOLVED_sfixed is
@@ -4579,7 +4579,7 @@ package body float_pkg is
   function to_unsigned (
     arg                  : UNRESOLVED_float;  -- floating point input
     size_res             : UNSIGNED;
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return UNSIGNED is
     variable result : UNSIGNED (size_res'range);
@@ -4600,7 +4600,7 @@ package body float_pkg is
   function to_signed (
     arg                  : UNRESOLVED_float;  -- floating point input
     size_res             : SIGNED;
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error)  -- check for errors
     return SIGNED is
     variable result : SIGNED (size_res'range);
@@ -4621,8 +4621,8 @@ package body float_pkg is
   function to_ufixed (
     arg                     : UNRESOLVED_float;  -- fp input
     size_res                : UNRESOLVED_ufixed;
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;  -- saturate
-    constant round_style    : fixed_round_style_type    := fixed_round_style;  -- rounding
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;  -- saturate
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;  -- rounding
     constant check_error    : BOOLEAN                   := float_check_error;  -- check for errors
     constant denormalize    : BOOLEAN                   := float_denormalize)
     return UNRESOLVED_ufixed is
@@ -4647,8 +4647,8 @@ package body float_pkg is
   function to_sfixed (
     arg                     : UNRESOLVED_float;  -- fp input
     size_res                : UNRESOLVED_sfixed;
-    constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;  -- saturate
-    constant round_style    : fixed_round_style_type    := fixed_round_style;  -- rounding
+    constant overflow_style : com_fixed_overflow_style_type := fixed_overflow_style;  -- saturate
+    constant round_style    : com_fixed_round_style_type    := fixed_round_style;  -- rounding
     constant check_error    : BOOLEAN                   := float_check_error;  -- check for errors
     constant denormalize    : BOOLEAN                   := float_denormalize)
     return UNRESOLVED_sfixed is
@@ -5684,7 +5684,7 @@ package body float_pkg is
   function Scalb (
     y                    : UNRESOLVED_float;      -- floating point input
     N                    : INTEGER;     -- exponent to add    
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
     return UNRESOLVED_float is
@@ -5733,7 +5733,7 @@ package body float_pkg is
   function Scalb (
     y                    : UNRESOLVED_float;  -- floating point input
     N                    : SIGNED;      -- exponent to add    
-    constant round_style : round_type := float_round_style;  -- rounding option
+    constant round_style : com_round_type := float_round_style;  -- rounding option
     constant check_error : BOOLEAN    := float_check_error;  -- check for errors
     constant denormalize : BOOLEAN    := float_denormalize)  -- Use IEEE extended FP
     return UNRESOLVED_float is
diff --git a/common_pkg/float_pkg_c_2008redirect.vhdl b/common_pkg/float_pkg_c_2008redirect.vhdl
index 9ff06c79..9540de08 100755
--- a/common_pkg/float_pkg_c_2008redirect.vhdl
+++ b/common_pkg/float_pkg_c_2008redirect.vhdl
@@ -42,14 +42,14 @@
 
 library ieee;
 library common_pkg_lib;
-use IEEE.fixed_float_types.all;
+use common_pkg_lib.common_fixed_float_types.all;
 use common_pkg_lib.fixed_pkg.all;
 
 package float_pkg is new common_pkg_lib.float_generic_pkg
   generic map (
     float_exponent_width => 8,    -- float32'high
     float_fraction_width => 23,   -- -float32'low
-    float_round_style    => ieee.fixed_float_types.round_nearest,  -- round nearest algorithm
+    float_round_style    => common_pkg_lib.common_fixed_float_types.round_nearest,  -- round nearest algorithm
     float_denormalize    => true,  -- Use IEEE extended floating
     float_check_error    => true,  -- Turn on NAN and overflow processing
     float_guard_bits     => 3,     -- number of guard bits
diff --git a/misc/run.py b/misc/run.py
index 3b8c714a..f555aa45 100644
--- a/misc/run.py
+++ b/misc/run.py
@@ -10,7 +10,7 @@
 
 # Create library 'common_pkg_lib'
 common_pkg_lib = vu.add_library("common_pkg_lib")
-#common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
+common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_pkg_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/float_pkg_c.vhd"))
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/common_pkg.vhd"))
diff --git a/r2sdf_fft/r2SDF_FFT_proj/r2SDF_FFT_proj.xpr b/r2sdf_fft/r2SDF_FFT_proj/r2SDF_FFT_proj.xpr
index 653ed905..5ded0cc5 100644
--- a/r2sdf_fft/r2SDF_FFT_proj/r2SDF_FFT_proj.xpr
+++ b/r2sdf_fft/r2SDF_FFT_proj/r2SDF_FFT_proj.xpr
@@ -38,7 +38,7 @@
     <Option Name="IPStaticSourceDir" Val="$PIPUSERFILESDIR/ipstatic"/>
     <Option Name="UseIPStaticLibs" Val="0"/>
     <Option Name="EnableBDX" Val="FALSE"/>
-    <Option Name="WTXSimLaunchSim" Val="90"/>
+    <Option Name="WTXSimLaunchSim" Val="92"/>
     <Option Name="WTModelSimLaunchSim" Val="0"/>
     <Option Name="WTQuestaLaunchSim" Val="0"/>
     <Option Name="WTIesLaunchSim" Val="0"/>
@@ -74,6 +74,13 @@
           <Attr Name="UsedIn" Val="simulation"/>
         </FileInfo>
       </File>
+      <File Path="$PPRDIR/../../common_pkg/fixed_float_types_c.vhd">
+        <FileInfo>
+          <Attr Name="Library" Val="common_pkg_lib"/>
+          <Attr Name="UsedIn" Val="synthesis"/>
+          <Attr Name="UsedIn" Val="simulation"/>
+        </FileInfo>
+      </File>
       <File Path="$PPRDIR/../../common_pkg/fixed_pkg_c.vhd">
         <FileInfo>
           <Attr Name="Library" Val="common_pkg_lib"/>
@@ -82,7 +89,7 @@
         </FileInfo>
       </File>
       <File Path="$PPRDIR/../../common_pkg/common_pkg.vhd">
-        <FileInfo SFType="VHDL2008">
+        <FileInfo>
           <Attr Name="Library" Val="common_pkg_lib"/>
           <Attr Name="UsedIn" Val="synthesis"/>
           <Attr Name="UsedIn" Val="simulation"/>
@@ -117,14 +124,14 @@
         </FileInfo>
       </File>
       <File Path="$PPRDIR/../../casper_multiplier/tech_agilex_versal_cmult.vhd">
-        <FileInfo SFType="VHDL2008">
+        <FileInfo>
           <Attr Name="Library" Val="casper_multiplier_lib"/>
           <Attr Name="UsedIn" Val="synthesis"/>
           <Attr Name="UsedIn" Val="simulation"/>
         </FileInfo>
       </File>
       <File Path="$PPRDIR/../../casper_multiplier/tech_complex_mult.vhd">
-        <FileInfo SFType="VHDL2008">
+        <FileInfo>
           <Attr Name="Library" Val="casper_multiplier_lib"/>
           <Attr Name="UsedIn" Val="synthesis"/>
           <Attr Name="UsedIn" Val="simulation"/>
@@ -229,14 +236,14 @@
         </FileInfo>
       </File>
       <File Path="$PPRDIR/../../casper_ram/tech_memory_rom_r_r.vhd">
-        <FileInfo SFType="VHDL2008">
+        <FileInfo>
           <Attr Name="Library" Val="casper_ram_lib"/>
           <Attr Name="UsedIn" Val="synthesis"/>
           <Attr Name="UsedIn" Val="simulation"/>
         </FileInfo>
       </File>
       <File Path="$PPRDIR/../../casper_ram/tech_memory_rom_r.vhd">
-        <FileInfo SFType="VHDL2008">
+        <FileInfo>
           <Attr Name="Library" Val="casper_ram_lib"/>
           <Attr Name="UsedIn" Val="synthesis"/>
           <Attr Name="UsedIn" Val="simulation"/>
@@ -327,14 +334,14 @@
         </FileInfo>
       </File>
       <File Path="$PPRDIR/../twiddlesPkg.vhd">
-        <FileInfo SFType="VHDL2008">
+        <FileInfo>
           <Attr Name="Library" Val="r2sdf_fft_lib"/>
           <Attr Name="UsedIn" Val="synthesis"/>
           <Attr Name="UsedIn" Val="simulation"/>
         </FileInfo>
       </File>
       <File Path="$PPRDIR/../rTwoWeights.vhd">
-        <FileInfo SFType="VHDL2008">
+        <FileInfo>
           <Attr Name="Library" Val="r2sdf_fft_lib"/>
           <Attr Name="UsedIn" Val="synthesis"/>
           <Attr Name="UsedIn" Val="simulation"/>
diff --git a/r2sdf_fft/rTwoSDF.vhd b/r2sdf_fft/rTwoSDF.vhd
index a9ed2b98..66db2dc5 100644
--- a/r2sdf_fft/rTwoSDF.vhd
+++ b/r2sdf_fft/rTwoSDF.vhd
@@ -70,8 +70,8 @@ entity rTwoSDF is
 		g_variant       : string  := "4DSP"; --! Use 3dsp or 4dsp for multiplication
 		g_use_dsp       : string  := "yes"; --! Use dsp48 chips (yes) or LUT's (no) for cmults in butterflies
 		g_ovflw_behav   : string  := "WRAP";   --! = "WRAP" or "SATURATE" will default to WRAP if invalid option used
-		g_use_round     : string  := "ROUND";   --! = "ROUND" or "TRUNCATE" will default to TRUNCATE if invalid option used
-		g_use_mult_round: string  := "TRUNCATE";		--! Rounding behaviour "ROUND" or "TRUNCATE"
+		g_round		    : t_rounding_mode  := ROUND;    --! ROUND, ROUNDINF or TRUNCATE
+		g_use_mult_round: t_rounding_mode  := TRUNCATE; --! ROUND, ROUNDINF or TRUNCATE
 		g_twid_dat_w	: natural := 18;
 		g_max_addr_w	: natural := 9;
 		g_twid_file_stem: string  := c_twid_file_stem;
@@ -103,7 +103,6 @@ end entity rTwoSDF;
 
 architecture str of rTwoSDF is
 
-	constant c_round		: boolean := sel_a_b(g_use_round ="ROUND", TRUE, FALSE);
 	constant c_clip			: boolean := sel_a_b(g_ovflw_behav = "SATURATE", TRUE, FALSE);
 	constant c_nof_stages   : natural := ceil_log2(g_nof_points);
 
@@ -155,7 +154,7 @@ begin
 				g_use_variant    => g_variant,
 				g_use_dsp        => g_use_dsp,
 				g_ovflw_behav	 => g_ovflw_behav,
-				g_use_round		 => g_use_round, 
+				g_round		 	 => g_round, 
 				g_use_mult_round => g_use_mult_round,
 				g_ram_primitive	 => g_ram_primitive,
 				g_twid_file_stem => g_twid_file_stem,
@@ -216,7 +215,7 @@ begin
 		generic map(
 			g_representation      => "SIGNED",
 			g_lsb_w               => c_out_scale_w,
-			g_lsb_round           => c_round,
+			g_lsb_round           => g_round,
 			g_lsb_round_clip      => FALSE,
 			g_msb_clip            => c_clip,
 			g_msb_clip_symmetric  => FALSE,
@@ -236,7 +235,7 @@ begin
 		generic map(
 			g_representation      => "SIGNED",
 			g_lsb_w               => c_out_scale_w,
-			g_lsb_round           => c_round,
+			g_lsb_round           => g_round,
 			g_lsb_round_clip      => FALSE,
 			g_msb_clip            => c_clip,
 			g_msb_clip_symmetric  => FALSE,
diff --git a/r2sdf_fft/rTwoSDFStage.vhd b/r2sdf_fft/rTwoSDFStage.vhd
index 3cf4f425..4eaef9a5 100644
--- a/r2sdf_fft/rTwoSDFStage.vhd
+++ b/r2sdf_fft/rTwoSDFStage.vhd
@@ -26,21 +26,21 @@ use casper_ram_lib.common_ram_pkg.all;
 
 entity rTwoSDFStage is
 	generic(
-		g_nof_chan       : natural        := 0; 				--! Exponent of nr of subbands (0 means 1 subband)
-		g_stage          : natural        := 8; 				--! Stage number
-		g_nof_points	 : natural 		  := 32;				--! Number of points
-		g_wb_factor		 : natural 		  := 1;				    --! WB factor of a wideband FFT
-		g_wb_inst		 : natural 		  := 0; 				--! WB instance index. Altered for WB_FACTOR > 1
-		g_twid_dat_w     : natural		  := 18;				--! The coefficient data width
-		g_max_addr_w	 : natural		  := 10;				--! Address width above which to implement in block/ultra ram
-		g_use_variant    : string         := "4DSP";			--! Cmult variant to use "3DSP" or "4DSP"
-		g_use_dsp        : string         := "yes";				--! Use dsp for cmults
-		g_ovflw_behav	 : string		  := "WRAP";			--! Clip behaviour "WRAP" or "SATURATE"
-		g_use_round		 : string		  := "ROUND";			--! Rounding behaviour "ROUND" or "TRUNCATE"
-		g_use_mult_round : string         := "TRUNCATE";		--! Rounding behaviour "ROUND" or "TRUNCATE"
-		g_ram_primitive  : string		  := "block";			--! BRAM primitive for the Weights
-		g_twid_file_stem : string  		  := "UNUSED";			--! Path stem for the twiddle coefficient files
-		g_pipeline       : t_fft_pipeline := c_fft_pipeline		--! internal pipeline settings
+		g_nof_chan       : natural        	:= 0; 				--! Exponent of nr of subbands (0 means 1 subband)
+		g_stage          : natural        	:= 8; 				--! Stage number
+		g_nof_points	 : natural 		  	:= 32;				--! Number of points
+		g_wb_factor		 : natural 		  	:= 1;				--! WB factor of a wideband FFT
+		g_wb_inst		 : natural 		  	:= 0; 				--! WB instance index. Altered for WB_FACTOR > 1
+		g_twid_dat_w     : natural		  	:= 18;				--! The coefficient data width
+		g_max_addr_w	 : natural		  	:= 10;				--! Address width above which to implement in block/ultra ram
+		g_use_variant    : string         	:= "4DSP";			--! Cmult variant to use "3DSP" or "4DSP"
+		g_use_dsp        : string         	:= "yes";			--! Use dsp for cmults
+		g_ovflw_behav	 : string		  	:= "WRAP";			--! Clip behaviour "WRAP" or "SATURATE"
+		g_round      	 : t_rounding_mode  := ROUND; 			--! ROUND, ROUNDINF or TRUNCATE
+		g_use_mult_round : t_rounding_mode  := TRUNCATE;		--! ROUND, ROUNDINF or TRUNCATE
+		g_ram_primitive  : string		  	:= "block";			--! BRAM primitive for the Weights
+		g_twid_file_stem : string  		  	:= "UNUSED";		--! Path stem for the twiddle coefficient files
+		g_pipeline       : t_fft_pipeline 	:= c_fft_pipeline	--! internal pipeline settings
 	);
 	port(
 		clk     		 : in  std_logic;        				--! Input clock
@@ -62,10 +62,6 @@ architecture str of rTwoSDFStage is
 	constant c_cnt_lat  : integer := 1;
 	constant c_cnt_init : integer := 0;
 
-	constant c_round	 	: boolean := sel_a_b(g_use_round ="ROUND", TRUE, FALSE);
-	constant c_mult_trunc	: boolean := sel_a_b(g_use_mult_round ="ROUND", FALSE, TRUE);
-	constant c_clip		 	: boolean := sel_a_b(g_ovflw_behav="SATURATE", TRUE, FALSE);
-
 	constant c_coefs_file_stem : string := g_twid_file_stem & "_" & integer'image(g_nof_points) & "p_" & integer'image(g_twid_dat_w) & "b_" & integer'image(g_wb_factor) & "wb" ;
 
 	signal ctrl_sel : std_logic_vector(g_stage + g_nof_chan downto 1);
@@ -191,7 +187,7 @@ begin
 		generic map(
             g_use_dsp          => g_use_dsp,
             g_use_variant      => g_use_variant,
-			g_use_truncate     => c_mult_trunc,
+			g_round     	   => g_use_mult_round,
             g_stage            => g_stage,
             g_lat              => g_pipeline.mul_lat
 		)
@@ -213,8 +209,8 @@ begin
 	------------------------------------------------------------------------------
 	u_requantize_re : entity casper_requantize_lib.r_shift_requantize
 		generic map(
-			g_lsb_round           => c_round,
-			g_lsb_round_clip      => FALSE,	
+			g_lsb_round           => g_round,
+			g_lsb_round_clip      => FALSE,
 			g_in_dat_w            => in_re'LENGTH,
 			g_out_dat_w           => out_re'LENGTH
 		)
@@ -227,7 +223,7 @@ begin
 		);
 	u_requantize_im : entity casper_requantize_lib.r_shift_requantize
 		generic map(
-			g_lsb_round           => c_round,
+			g_lsb_round           => g_round,
 			g_lsb_round_clip      => FALSE,
 			g_in_dat_w            => in_im'LENGTH,
 			g_out_dat_w           => out_im'LENGTH
diff --git a/r2sdf_fft/rTwoWMul.vhd b/r2sdf_fft/rTwoWMul.vhd
index 701b3c65..45269852 100644
--- a/r2sdf_fft/rTwoWMul.vhd
+++ b/r2sdf_fft/rTwoWMul.vhd
@@ -26,8 +26,8 @@ use common_pkg_lib.common_pkg.all;
 entity rTwoWMul is
 	generic(
 		g_use_dsp    : STRING  := "yes";
-		g_use_variant    : STRING  := "4DSP";
-		g_use_truncate : boolean := true;
+		g_use_variant: STRING  := "4DSP";
+		g_round		 : t_rounding_mode := ROUND; -- even rounding by default
 		g_stage      : natural := 1;
 		g_lat        : natural := 3 + 1 -- 3 for mult, 1 for round
 	);
@@ -52,7 +52,7 @@ architecture str of rTwoWMul is
 	-- Apertif and using the WG at various frequencies at subband or between subbands it appears that
 	-- using truncate or sround does not make a noticable difference in the SST. Still choose to use
 	-- signed rounding to preserve zero DC.
-	constant c_use_truncate : boolean := g_use_truncate; --false;
+	constant c_use_truncate : boolean := sel_a_b(g_round = TRUNCATE, True, False); --false;
 
 	-- Derive the common_complex_mult g_pipeline_* values from g_lat. The sum c_total_lat = g_lat, so that g_lat defines
 	-- the total latency from in_* to out_*.
@@ -187,14 +187,15 @@ begin
 	gen_sround : if c_use_truncate = false GENERATE
 		-- Use resize_svec(s_round()) instead of truncate_and_resize_svec() to have symmetrical rounding around 0
 		-- Rounding takes logic due to adding 0.5 therefore need to use c_round_lat=1 to achieve timing
+		-- Overflow style is set to wrap, rounding can be specified by generic g_round
 		gen_comb : if c_round_lat = 0 generate
 			ASSERT false REPORT "rTwoWMul: can probably not achieve timing for sround without pipeline" SEVERITY FAILURE;
-			round_re <= RESIZE_SVEC(s_round(product_re, c_round_w), c_out_dat_w);
-			round_im <= RESIZE_SVEC(s_round(product_im, c_round_w), c_out_dat_w);
+			round_re <= RESIZE_SVEC(s_round(product_re, c_round_w, FALSE, g_round), c_out_dat_w);
+			round_im <= RESIZE_SVEC(s_round(product_im, c_round_w, FALSE, g_round), c_out_dat_w);
 		end generate;
 		gen_reg : if c_round_lat = 1 generate
-			round_re <= RESIZE_SVEC(s_round(product_re, c_round_w), c_out_dat_w) when rising_edge(clk);
-			round_im <= RESIZE_SVEC(s_round(product_im, c_round_w), c_out_dat_w) when rising_edge(clk);
+			round_re <= RESIZE_SVEC(s_round(product_re, c_round_w, FALSE, g_round), c_out_dat_w) when rising_edge(clk);
+			round_im <= RESIZE_SVEC(s_round(product_im, c_round_w, FALSE, g_round), c_out_dat_w) when rising_edge(clk);
 		end generate;
 	end generate;
 
diff --git a/r2sdf_fft/run.py b/r2sdf_fft/run.py
index 9cef3ab7..7346d790 100644
--- a/r2sdf_fft/run.py
+++ b/r2sdf_fft/run.py
@@ -70,8 +70,9 @@
 common_pkg_lib = vu.add_library("common_pkg_lib")
 # the latest version (4.0.0) of GHDL doesn't like the hacked up vhdl 93 fixed library so we'll use the real one but compile if for common_pkg
 # Questa simulator will still use the hacked up one so we have some verification it works as expected since the hacked one is uses in Vivado sim and synth
+common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
 if SIMULATOR_FACTORY.select_simulator().name == "ghdl":
-    #common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c_2008redirect.vhdl"))
+   #common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c_2008redirect.vhdl"))
     #common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_generic_pkg-body_2008redirect.vhdl"))
     common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_generic_pkg_2008redirect.vhdl"))
     #common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/float_generic_pkg-body_2008redirect.vhdl"))
@@ -80,7 +81,6 @@
     common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_pkg_c_2008redirect.vhdl"))
 else:
     # use the "hacked" up VHDL93 version in other simulators 
-    #common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_float_types_c.vhd"))
     common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/fixed_pkg_c.vhd"))
     common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/float_pkg_c.vhd"))    
 common_pkg_lib.add_source_files(join(script_dir, "../common_pkg/common_pkg.vhd"))
diff --git a/r2sdf_fft/tb_rTwoSDF.vhd b/r2sdf_fft/tb_rTwoSDF.vhd
index a98c47d6..8b7da1dc 100644
--- a/r2sdf_fft/tb_rTwoSDF.vhd
+++ b/r2sdf_fft/tb_rTwoSDF.vhd
@@ -77,7 +77,7 @@ entity tb_rTwoSDF is
     g_use_uniNoise_file : boolean  := true;
     g_in_en             : natural  := 1;     -- 1 = always active, others = random control
     -- generics for rTwoSDF
-    g_use_mult_round    : string   := "ROUND";
+    g_use_mult_round    : t_rounding_mode   := ROUND;
     g_use_reorder       : boolean  := false;  -- tb supports both true and false
     g_nof_points        : natural  := 1024;
     g_in_dat_w          : natural  := 8;   
diff --git a/r2sdf_fft/tb_vu_rtwosdf_vfmodel.vhd b/r2sdf_fft/tb_vu_rtwosdf_vfmodel.vhd
index dfb65194..999a8daa 100644
--- a/r2sdf_fft/tb_vu_rtwosdf_vfmodel.vhd
+++ b/r2sdf_fft/tb_vu_rtwosdf_vfmodel.vhd
@@ -3,7 +3,8 @@ use ieee.std_logic_1164.all;
 use ieee.numeric_std.all; 
 use ieee.math_real.all;
 library common_pkg_lib;
-use ieee.fixed_float_types.all;
+use common_pkg_lib.common_pkg.all;
+use common_pkg_lib.common_fixed_float_types.all;
 --use ieee.fixed_pkg.all;
 use common_pkg_lib.fixed_pkg.all;
 context vunit_lib.vunit_context;
@@ -35,6 +36,10 @@ entity tb_vu_trwosdf_vfmodel is
 end tb_vu_trwosdf_vfmodel;
 
 architecture tb_vu_trwosdf_vfmodel_arch of tb_vu_trwosdf_vfmodel is
+--TYPE t_rounding_mode is (TRUNCATE, ROUND, ROUNDINF);
+
+
+
 constant c_fftsize          : integer := 2**g_fftsize_log2;
 signal clk                  : std_logic;
 signal rst                  : std_logic;
@@ -70,8 +75,8 @@ BEGIN
             g_variant           => "4DSP",
             g_use_dsp           => "yes",
             g_ovflw_behav       => g_ovflw_behav,
-            g_use_round         => g_use_round,
-            g_use_mult_round    => g_use_mult_round,
+            g_round             => stringround_to_enum_round(g_use_round),
+            g_use_mult_round    => stringround_to_enum_round(g_use_mult_round),
             g_twid_dat_w        => g_twiddle_width,
             g_max_addr_w        => 10, -- Keep Default size to use Block Ram
             g_twid_file_stem    => "NONE", -- We don't simulate with Twiddle Files, so this should matter
diff --git a/r2sdf_fft/twiddlesPkg.vhd b/r2sdf_fft/twiddlesPkg.vhd
index d758227c..397dc9a1 100644
--- a/r2sdf_fft/twiddlesPkg.vhd
+++ b/r2sdf_fft/twiddlesPkg.vhd
@@ -27,7 +27,7 @@ use ieee.std_logic_1164.all;
 use ieee.numeric_std.all; 
 use ieee.math_real.all;
 library common_pkg_lib;
-use ieee.fixed_float_types.all;
+use common_pkg_lib.common_fixed_float_types.all;
 --use ieee.fixed_pkg.all;
 use common_pkg_lib.fixed_pkg.all;
 
diff --git a/wrappers/simulink/FFT.slx b/wrappers/simulink/FFT.slx
index e4d02717..48b2c118 100644
Binary files a/wrappers/simulink/FFT.slx and b/wrappers/simulink/FFT.slx differ
diff --git a/wrappers/simulink/PFB.slx b/wrappers/simulink/PFB.slx
index 87c6bc38..bfa1b3c3 100644
Binary files a/wrappers/simulink/PFB.slx and b/wrappers/simulink/PFB.slx differ
diff --git a/wrappers/simulink/casper_wb_fft_config.m b/wrappers/simulink/casper_wb_fft_config.m
index 94f90c19..05a747e6 100644
--- a/wrappers/simulink/casper_wb_fft_config.m
+++ b/wrappers/simulink/casper_wb_fft_config.m
@@ -239,7 +239,7 @@ function casper_wb_fft_config(this_block)
   this_block.addGeneric('use_variant','String',variant);
   this_block.addGeneric('use_dsp','String',use_dsp);
   this_block.addGeneric('ovflw_behav','String',ovflw_behav);
-  this_block.addGeneric('use_round','String',use_round);
+  this_block.addGeneric('use_round','natural',use_round);
   this_block.addGeneric('ram_primitive','String',ram_primitive);
   
 
@@ -268,6 +268,8 @@ function casper_wb_fft_config(this_block)
 copyfile(source_technology_select_pkg, [srcloc '/technology_select_pkg.vhd']);
 
 this_block.addFileToLibrary(vhdlfile,'xil_defaultlib');
+this_block.addFileToLibrary([filepath '/../../common_pkg/fixed_float_types_c.vhd'],'common_pkg_lib');
+this_block.addFileToLibrary([filepath '/../../common_pkg/fixed_pkg_c.vhd'],'common_pkg_lib');
 this_block.addFileToLibrary([filepath '/../../common_pkg/common_pkg.vhd'],'common_pkg_lib');
 this_block.addFileToLibrary([filepath '/../../common_components/common_pipeline.vhd'],'common_components_lib');
 this_block.addFileToLibrary([filepath '/../../casper_adder/common_add_sub.vhd'],'casper_adder_lib');
@@ -276,6 +278,7 @@ function casper_wb_fft_config(this_block)
 this_block.addFileToLibrary([filepath '/../../common_components/common_bit_delay.vhd'],'common_components_lib');
 this_block.addFileToLibrary([filepath '/../../common_components/common_pipeline_sl.vhd'],'common_components_lib');
 this_block.addFileToLibrary([filepath '/../../casper_multiplier/tech_mult_component.vhd'],'casper_multiplier_lib');
+this_block.addFileToLibrary([filepath '/../../casper_multiplier/tech_agilex_versal_cmult.vhd'],'casper_multiplier_lib');
 this_block.addFileToLibrary([srcloc '/technology_select_pkg.vhd'],'technology_lib');
 this_block.addFileToLibrary([filepath '/../../casper_multiplier/tech_complex_mult.vhd'],'casper_multiplier_lib');
 this_block.addFileToLibrary([filepath '/../../casper_multiplier/common_complex_mult.vhd'],'casper_multiplier_lib');
@@ -303,11 +306,7 @@ function casper_wb_fft_config(this_block)
 this_block.addFileToLibrary([filepath '/../../common_pkg/common_str_pkg.vhd'],'common_pkg_lib');
 this_block.addFileToLibrary([filepath '/../../casper_multiplexer/common_zip.vhd'],'casper_multiplexer_lib');
 this_block.addFileToLibrary([srcloc   '/fft_gnrcs_intrfcs_pkg.vhd'],'casper_wb_fft_lib');
-if dbl_wb_factor > 1
-  this_block.addFileToLibrary([srcloc   '/twiddlesPkg.vhd'],'r2sdf_fft_lib');
-else
-  this_block.addFileToLibrary([filepath '/../../r2sdf_fft/twiddlesPkg.vhd'], 'r2sdf_fft_lib');
-end
+this_block.addFileToLibrary([filepath '/../../r2sdf_fft/twiddlesPkg.vhd'], 'r2sdf_fft_lib');
 this_block.addFileToLibrary([srcloc   '/rTwoSDFPkg.vhd'],'r2sdf_fft_lib');
 this_block.addFileToLibrary([filepath '/../../r2sdf_fft/rTwoBF.vhd'],'r2sdf_fft_lib');
 this_block.addFileToLibrary([filepath '/../../casper_requantize/r_shift_requantize.vhd'],'casper_requantize_lib');
diff --git a/wrappers/simulink/filterbank_top_config.m b/wrappers/simulink/filterbank_top_config.m
index a7cd0006..d38f4163 100644
--- a/wrappers/simulink/filterbank_top_config.m
+++ b/wrappers/simulink/filterbank_top_config.m
@@ -126,7 +126,8 @@ function filterbank_top_config(this_block)
 
   %Add files:
   this_block.addFileToLibrary(vhdlfile,'xil_defaultlib'); %weirdly this file should come first... but then the compile order changes.
-
+  this_block.addFileToLibrary([filepath '/../../common_pkg/fixed_float_types_c.vhd'],'common_pkg_lib');
+  this_block.addFileToLibrary([filepath '/../../common_pkg/fixed_pkg_c.vhd'],'common_pkg_lib');
   this_block.addFileToLibrary([filepath '/../../common_pkg/common_pkg.vhd'],'common_pkg_lib');
   this_block.addFileToLibrary([filepath '/../../common_components/common_pipeline.vhd'],'common_components_lib');
   this_block.addFileToLibrary([filepath '/../../casper_adder/common_add_sub.vhd'],'casper_adder_lib');
diff --git a/wrappers/simulink/top_wb_fft_code_gen.m b/wrappers/simulink/top_wb_fft_code_gen.m
index e971c4e4..c59cfc5c 100644
--- a/wrappers/simulink/top_wb_fft_code_gen.m
+++ b/wrappers/simulink/top_wb_fft_code_gen.m
@@ -41,7 +41,7 @@
         "use_variant    : string;   -- = ""4DSP"" or ""3DSP"" for 3 or 4 mult cmult."
         "use_dsp        : string;   -- = ""yes"" or ""no"""
         "ovflw_behav    : string;   -- = ""WRAP"" or ""SATURATE"" will default to WRAP if invalid option used"
-        "use_round      : string;   -- = ""ROUND"" or ""TRUNCATE"" will default to TRUNCATE if invalid option used"
+        "use_round      : natural;  -- = 0, 1, 2 - indices corresponding to the rounding modes in the common_pkg_lib"
         "ram_primitive  : string   -- = ""auto"", ""distributed"", ""block"" or ""ultra"" for RAM architecture"
 	");"
 	"port("
@@ -98,7 +98,7 @@
         "use_variant    : string;  -- = ""4DSP"" or ""3DSP"" for 3 or 4 mult cmult."
         "use_dsp        : string;  -- = ""yes"" or ""no"""
         "ovflw_behav    : string;  -- = ""WRAP"" or ""SATURATE"" will default to WRAP if invalid option used"
-        "use_round      : string;  -- = ""ROUND"" or ""TRUNCATE"" will default to TRUNCATE if invalid option used"
+        "use_round      : natural;  -- = 0, 1, 2 - indices corresponding to the rounding modes in the common_pkg_lib"
         "ram_primitive  : string  -- = ""auto"", ""distributed"", ""block"" or ""ultra"" for RAM architecture"
 	");"
 	"port("
@@ -119,6 +119,7 @@
     lnsafterarchopen_w_xtradat = [");"
         "end entity wideband_fft_top;"
         "architecture RTL of wideband_fft_top is"
+        "constant round_mode : t_rounding_mode := t_rounding_mode'val(use_round);"
         "constant cc_fft : t_fft := (use_reorder,use_fft_shift,use_separate,0,wb_factor,nof_points,"
         "in_dat_w,out_dat_w,out_gain_w,stage_dat_w,twiddle_dat_w,max_addr_w,guard_w,guard_enable, 56, 2, pipe_reo_in_place);"
         "signal in_fft_sosi_arr : t_bb_sosi_arr_in(wb_factor - 1 downto 0);"
@@ -135,7 +136,7 @@
         "g_use_variant => use_variant,"
         "g_use_dsp   => use_dsp,"
         "g_ovflw_behav => ovflw_behav,"
-        "g_use_round => use_round,"
+        "g_round => round_mode,"
         "g_ram_primitive => ram_primitive"
         ")"
         "port map ("
@@ -171,6 +172,7 @@
     lnsafterarchopen_w_o_xtradat = [");"
         "end entity wideband_fft_top;"
         "architecture RTL of wideband_fft_top is"
+        "constant round_mode : t_rounding_mode := t_rounding_mode'val(use_round);"
         "constant cc_fft : t_fft := (use_reorder,use_fft_shift,use_separate,0,wb_factor,nof_points,"
         "in_dat_w,out_dat_w,out_gain_w,stage_dat_w,twiddle_dat_w,max_addr_w,guard_w,guard_enable, 56, 2, pipe_reo_in_place);"
         "signal in_fft_sosi_arr : t_fft_sosi_arr_in(wb_factor - 1 downto 0);"
@@ -187,7 +189,7 @@
         "g_use_variant => use_variant,"
         "g_use_dsp   => use_dsp,"
         "g_ovflw_behav => ovflw_behav,"
-        "g_use_round => use_round,"
+        "g_round => round_mode,"
         "g_ram_primitive => ram_primitive"
         ")"
         "port map ("
diff --git a/wrappers/simulink/top_wbpfb_code_gen.m b/wrappers/simulink/top_wbpfb_code_gen.m
index 4aab563d..36c95e16 100644
--- a/wrappers/simulink/top_wbpfb_code_gen.m
+++ b/wrappers/simulink/top_wbpfb_code_gen.m
@@ -59,7 +59,7 @@
     "    g_use_variant       : string  		     := ""4DSP"";       -- = ""4DSP"" or ""3DSP"" for 3 or 4 mult cmult."
     "    g_use_dsp           : string  		     := ""yes"";        -- = ""yes"" or ""no"""
     "    g_ovflw_behav       : string  		     := ""WRAP"";       -- = ""WRAP"" or ""SATURATE"" will default to WRAP if invalid option used"
-    "    g_use_round         : string  		     := ""ROUND"";      -- = ""ROUND"" or ""TRUNCATE"" will default to TRUNCATE if invalid option used"
+    "    g_use_round         : natural           := 1;  -- = 0, 1, 2 - indices corresponding to the rounding modes in the common_pkg_lib"
     "    g_fft_ram_primitive : string  		     := ""block""      -- = ""auto"", ""distributed"", ""block"" or ""ultra"" for RAM architecture"
     ");"
     "port"
@@ -69,8 +69,8 @@
     "    ce                  : in  std_logic := '1';"
     "    shiftreg            : in  std_logic_vector(ceil_log2(g_nof_points) - 1 DOWNTO 0) := (others=>'1');			--! Shift register"
     "    ovflw               : out std_logic_vector(ceil_log2(g_nof_points) - 1 DOWNTO 0) := (others=>'0');"
-    "    in_sync             : in std_logic;"
-    "    in_valid            : in std_logic;"
+    "    in_sync             : in std_logic := '0';"
+    "    in_valid            : in std_logic :=' 0';"
     "    out_sync            : out std_logic := '0';"
     "    out_valid           : out std_logic := '0';"
     "    fil_sync            : out std_logic := '0';"
@@ -143,7 +143,7 @@
     "    g_use_variant       : string  		     := ""4DSP"";       -- = ""4DSP"" or ""3DSP"" for 3 or 4 mult cmult."
     "    g_use_dsp           : string  		     := ""yes"";        -- = ""yes"" or ""no"""
     "    g_ovflw_behav       : string  		     := ""WRAP"";       -- = ""WRAP"" or ""SATURATE"" will default to WRAP if invalid option used"
-    "    g_use_round         : string  		     := ""ROUND"";      -- = ""ROUND"" or ""TRUNCATE"" will default to TRUNCATE if invalid option used"
+    "    g_use_round         : natural           := 1;  -- = 0, 1, 2 - indices corresponding to the rounding modes in the common_pkg_lib"
     "    g_fft_ram_primitive : string  		     := ""block""      -- = ""auto"", ""distributed"", ""block"" or ""ultra"" for RAM architecture"
     ");"
     "port"
@@ -153,8 +153,8 @@
     "    ce                  : in  std_logic := '1';"
     "    shiftreg            : in  std_logic_vector(ceil_log2(g_nof_points) - 1 DOWNTO 0) := (others=>'1');			--! Shift register"
     "    ovflw               : out std_logic_vector(ceil_log2(g_nof_points) - 1 DOWNTO 0) := (others=>'0');"
-    "    in_sync             : in std_logic;"
-    "    in_valid            : in std_logic;"
+    "    in_sync             : in std_logic := '0';"
+    "    in_valid            : in std_logic := '0';"
     "    out_sync            : out std_logic := '0';"
     "    out_valid           : out std_logic := '0';"
     "    fil_sync            : out std_logic := '0';"
@@ -167,6 +167,7 @@
     lnsafterarchopen_w_xtradat = [");"
         "end wbpfb_unit_top;"
         "architecture RTL of wbpfb_unit_top is"
+        "constant round_mode : t_rounding_mode := t_rounding_mode'val(g_use_round);"
         "constant cc_wpfb : t_wpfb := (g_wb_factor, g_nof_points, g_nof_chan, g_nof_wb_streams, g_nof_taps, g_fil_backoff_w, g_fil_in_dat_w, g_fil_out_dat_w,"
                                  "g_coef_dat_w, g_use_reorder, g_use_fft_shift, g_use_separate, g_fft_in_dat_w, g_fft_out_dat_w, g_fft_out_gain_w, g_stage_dat_w,"
                                  "g_twiddle_dat_w, g_max_addr_w, g_guard_w, g_guard_enable, g_pipe_reo_in_place, 56, 2, 800000, c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);"
@@ -186,7 +187,7 @@
     "   g_use_variant        => g_use_variant,"
     "   g_use_dsp            => g_use_dsp,"
     "   g_ovflw_behav        => g_ovflw_behav,"
-    "   g_use_round          => g_use_round,"
+    "   g_round              => round_mode,"
     "   g_fft_ram_primitive  => g_fft_ram_primitive"
     ")"
     " port map("
@@ -234,6 +235,7 @@
     lnsafterarchopen_w_o_xtradat = [");"
     "end wbpfb_unit_top;"
     "architecture RTL of wbpfb_unit_top is"
+    "constant round_mode : t_rounding_mode := t_rounding_mode'val(g_use_round);"
     "constant cc_wpfb : t_wpfb := (g_wb_factor, g_nof_points, g_nof_chan, g_nof_wb_streams, g_nof_taps, g_fil_backoff_w, g_fil_in_dat_w, g_fil_out_dat_w,"
                              "g_coef_dat_w, g_use_reorder, g_use_fft_shift, g_use_separate, g_fft_in_dat_w, g_fft_out_dat_w, g_fft_out_gain_w, g_stage_dat_w,"
                              "g_twiddle_dat_w, g_max_addr_w,g_guard_w, g_guard_enable, g_pipe_reo_in_place, 56, 2, 800000, c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);"
@@ -253,7 +255,7 @@
     "   g_use_variant        => g_use_variant,"
     "   g_use_dsp            => g_use_dsp,"
     "   g_ovflw_behav        => g_ovflw_behav,"
-    "   g_use_round          => g_use_round,"
+    "   g_round              => round_mode,"
     "   g_fft_ram_primitive  => g_fft_ram_primitive"
     ")"
     " port map("
@@ -331,9 +333,9 @@
     updatefftpkg(filepathscript,vhdlfilefolder,fft_in_dat_w,fft_out_dat_w,fft_stage_dat_w,twid_filepath_stem);
 
     %generate twiddlePkg for parallel twiddle factors if wb_factor > 1:
-    if wb_factor > 1
-        par_twiddle_pkg_gen(wb_factor, twid_dat_w, vhdlfilefolder);
-    end
+    % if wb_factor > 1
+    %     par_twiddle_pkg_gen(wb_factor, twid_dat_w, vhdlfilefolder);
+    % end
 end
 
 function chararr = mknprts(wbfctr,nof_wb_streams)
@@ -358,10 +360,12 @@
             i=i+1;
             chararr(i,1)=sprintf(outimchar,k,j);
             i=i+1;
-            if (j ~= wbfctr-1)
+            if (j ~= wbfctr-1 | k ~= nof_wb_streams-1)
                 chararr(i,1)=sprintf(outrechar,k,j);
+                fprintf("Not finished, wb: %d, str: %d",j,k);
             else
                 chararr(i,1)=sprintf(strip(outrechar,';'),k,j);
+                fprintf("Finished, wb: %d, str: %d",j,k);
             end
             i=i+1;
         end
diff --git a/wrappers/simulink/wb_fft_blk.slx b/wrappers/simulink/wb_fft_blk.slx
index edabd2c0..5f3ebaaa 100644
Binary files a/wrappers/simulink/wb_fft_blk.slx and b/wrappers/simulink/wb_fft_blk.slx differ
diff --git a/wrappers/simulink/wb_pfb_blk.slx b/wrappers/simulink/wb_pfb_blk.slx
index 13d6e53e..9ff3889b 100644
Binary files a/wrappers/simulink/wb_pfb_blk.slx and b/wrappers/simulink/wb_pfb_blk.slx differ
diff --git a/wrappers/simulink/wbpfb_unit_top_config.m b/wrappers/simulink/wbpfb_unit_top_config.m
index 97da421d..7f7cd961 100644
--- a/wrappers/simulink/wbpfb_unit_top_config.m
+++ b/wrappers/simulink/wbpfb_unit_top_config.m
@@ -310,7 +310,7 @@ function wbpfb_unit_top_config(this_block)
   this_block.addGeneric('g_use_variant','string',variant);
   this_block.addGeneric('g_use_dsp','string',use_dsp);
   this_block.addGeneric('g_ovflw_behav','string',fft_ovflw_behav);
-  this_block.addGeneric('g_use_round','string',fft_use_round);
+  this_block.addGeneric('g_use_round','natural',fft_use_round);
   this_block.addGeneric('g_fft_ram_primitive','string',fft_ram_primitive);
 
   % Add addtional source files as needed.
@@ -338,6 +338,8 @@ function wbpfb_unit_top_config(this_block)
   copyfile(source_technology_select_pkg, [srcloc '/technology_select_pkg.vhd']);
 
   this_block.addFileToLibrary(vhdlfile, 'xil_defaultlib');
+  this_block.addFileToLibrary([filepath '/../../common_pkg/fixed_float_types_c.vhd'],'common_pkg_lib');
+  this_block.addFileToLibrary([filepath '/../../common_pkg/fixed_pkg_c.vhd'],'common_pkg_lib');
   this_block.addFileToLibrary([filepath '/../../common_pkg/common_pkg.vhd'],'common_pkg_lib');
   this_block.addFileToLibrary([filepath '/../../common_components/common_pipeline.vhd'],'common_components_lib');
   this_block.addFileToLibrary([filepath '/../../casper_adder/common_add_sub.vhd'],'casper_adder_lib');
@@ -346,6 +348,7 @@ function wbpfb_unit_top_config(this_block)
   this_block.addFileToLibrary([filepath '/../../common_components/common_bit_delay.vhd'],'common_components_lib');
   this_block.addFileToLibrary([filepath '/../../common_components/common_pipeline_sl.vhd'],'common_components_lib');
   this_block.addFileToLibrary([filepath '/../../casper_multiplier/tech_mult_component.vhd'],'casper_multiplier_lib');
+  this_block.addFileToLibrary([filepath '/../../casper_multiplier/tech_agilex_versal_cmult.vhd'],'casper_multiplier_lib');
   this_block.addFileToLibrary([srcloc   '/technology_select_pkg.vhd'],'technology_lib');
   this_block.addFileToLibrary([filepath '/../../casper_multiplier/tech_complex_mult.vhd'],'casper_multiplier_lib');
   this_block.addFileToLibrary([filepath '/../../casper_multiplier/common_complex_mult.vhd'],'casper_multiplier_lib');
@@ -383,11 +386,11 @@ function wbpfb_unit_top_config(this_block)
   this_block.addFileToLibrary([filepath '/../../casper_pipeline/dp_pipeline.vhd'],'casper_pipeline_lib');
   this_block.addFileToLibrary([filepath '/../../casper_wbpfb/dp_bsn_restore_global.vhd'],'wpfb_lib');
   this_block.addFileToLibrary([filepath '/../../casper_wbpfb/dp_block_gen_valid_arr.vhd'],'wpfb_lib');
-  if dbl_wb_factor > 1
-    this_block.addFileToLibrary([srcloc   '/twiddlesPkg.vhd'],'r2sdf_fft_lib');
-  else
-    this_block.addFileToLibrary([filepath '/../../r2sdf_fft/twiddlesPkg.vhd'], 'r2sdf_fft_lib');
-  end
+  % if dbl_wb_factor > 1
+  %   this_block.addFileToLibrary([srcloc   '/twiddlesPkg.vhd'],'r2sdf_fft_lib');
+  % else
+  this_block.addFileToLibrary([filepath '/../../r2sdf_fft/twiddlesPkg.vhd'], 'r2sdf_fft_lib');
+  % end
   this_block.addFileToLibrary([filepath '/../../r2sdf_fft/rTwoBF.vhd'],'r2sdf_fft_lib');
   this_block.addFileToLibrary([filepath '/../../casper_requantize/r_shift_requantize.vhd'],'casper_requantize_lib');
   this_block.addFileToLibrary([filepath '/../../r2sdf_fft/rTwoWMul.vhd'],'r2sdf_fft_lib');


Test patch:
diff --git a/r2sdf_fft/data/test/out/uniNoise_out.txt b/r2sdf_fft/data/test/out/uniNoise_out.txt
index e69de29b..84f9641a 100644
--- a/r2sdf_fft/data/test/out/uniNoise_out.txt
+++ b/r2sdf_fft/data/test/out/uniNoise_out.txt
@@ -0,0 +1,7169 @@
+0,1,310,-280
+0,1,-103,207
+0,1,130,-77
+0,1,-194,119
+0,1,-250,-31
+0,1,64,142
+0,1,211,-115
+0,1,-253,4
+0,1,-24,302
+0,1,73,-34
+0,1,154,-89
+0,1,0,-108
+0,1,314,140
+0,1,-157,22
+0,1,-141,122
+0,1,177,269
+0,1,297,-63
+0,1,-187,-170
+0,1,-217,-56
+0,1,44,-250
+0,1,-105,62
+0,1,92,-78
+0,1,202,30
+0,1,144,112
+0,1,-4,-212
+0,1,67,-9
+0,1,6,120
+0,1,183,-220
+0,1,-295,-154
+0,1,-167,-12
+0,1,162,285
+0,1,141,-36
+0,1,54,375
+0,1,108,-100
+0,1,220,129
+0,1,108,215
+0,1,31,399
+0,1,166,-76
+0,1,-301,48
+0,1,-52,-91
+0,1,-188,-39
+0,1,50,1
+0,1,-15,153
+0,1,-107,-149
+0,1,76,306
+0,1,-119,76
+0,1,-20,202
+0,1,43,-205
+0,1,-104,172
+0,1,0,152
+0,1,-131,-6
+0,1,-66,-58
+0,1,-62,119
+0,1,86,85
+0,1,84,-96
+0,1,-293,-91
+0,1,10,29
+0,1,73,-120
+0,1,-39,29
+0,1,-184,51
+0,1,224,63
+0,1,95,-44
+0,1,59,-68
+0,1,-11,-129
+0,1,145,-139
+0,1,-61,160
+0,1,108,206
+0,1,-101,165
+0,1,148,-61
+0,1,-345,-163
+0,1,-90,104
+0,1,167,28
+0,1,240,-171
+0,1,-39,-154
+0,1,138,-57
+0,1,287,24
+0,1,4,78
+0,1,-137,-37
+0,1,98,189
+0,1,-114,102
+0,1,206,-275
+0,1,232,288
+0,1,-136,-137
+0,1,13,-201
+0,1,185,19
+0,1,27,181
+0,1,33,-254
+0,1,13,193
+0,1,-277,-6
+0,1,112,94
+0,1,82,126
+0,1,103,-31
+0,1,-82,-91
+0,1,-30,31
+0,1,-36,11
+0,1,-97,-126
+0,1,-286,98
+0,1,-33,-135
+0,1,39,-150
+0,1,118,145
+0,1,-358,-121
+0,1,-89,257
+0,1,-75,104
+0,1,340,-124
+0,1,-50,-6
+0,1,-19,-219
+0,1,324,50
+0,1,-143,129
+0,1,70,176
+0,1,-110,142
+0,1,121,40
+0,1,108,-317
+0,1,-96,-44
+0,1,72,-78
+0,1,-13,65
+0,1,112,-105
+0,1,-173,-62
+0,1,85,141
+0,1,136,-72
+0,1,-110,159
+0,1,-423,-291
+0,1,54,-222
+0,1,9,-35
+0,1,247,132
+0,1,-21,-11
+0,1,-338,101
+0,1,130,101
+0,1,43,-61
+0,1,-96,-158
+0,1,-73,1
+0,1,9,-32
+0,1,-293,-173
+0,1,101,144
+0,1,113,-235
+0,1,-182,-188
+0,1,39,67
+0,1,-83,61
+0,1,-143,54
+0,1,-12,-229
+0,1,85,154
+0,1,237,-41
+0,1,-60,213
+0,1,81,-92
+0,1,10,347
+0,1,228,124
+0,1,-3,65
+0,1,202,243
+0,1,-171,208
+0,1,-71,141
+0,1,52,-31
+0,1,98,88
+0,1,-56,43
+0,1,-100,108
+0,1,23,-197
+0,1,-224,121
+0,1,-84,75
+0,1,225,-5
+0,1,79,284
+0,1,-52,143
+0,1,80,-138
+0,1,42,91
+0,1,-2,-24
+0,1,184,-96
+0,1,16,141
+0,1,61,-91
+0,1,10,-189
+0,1,-235,135
+0,1,66,-57
+0,1,186,-34
+0,1,152,45
+0,1,140,166
+0,1,-165,-19
+0,1,-98,220
+0,1,-56,-134
+0,1,-183,-40
+0,1,-195,-68
+0,1,248,55
+0,1,-13,-177
+0,1,-342,-187
+0,1,46,391
+0,1,-407,-112
+0,1,-147,115
+0,1,-196,44
+0,1,-242,25
+0,1,-42,108
+0,1,49,-171
+0,1,103,-72
+0,1,-31,64
+0,1,-242,168
+0,1,108,66
+0,1,-39,-59
+0,1,74,137
+0,1,-15,257
+0,1,-15,23
+0,1,-327,-54
+0,1,-109,-154
+0,1,-141,269
+0,1,-36,75
+0,1,19,-104
+0,1,131,-79
+0,1,23,190
+0,1,148,15
+0,1,-102,-242
+0,1,-45,195
+0,1,-192,-134
+0,1,166,-217
+0,1,-72,127
+0,1,6,-230
+0,1,142,-12
+0,1,-17,17
+0,1,41,76
+0,1,-107,48
+0,1,-48,60
+0,1,5,-32
+0,1,267,282
+0,1,-5,-16
+0,1,37,-8
+0,1,145,73
+0,1,160,127
+0,1,-183,202
+0,1,-108,63
+0,1,51,102
+0,1,126,3
+0,1,137,-63
+0,1,-123,-46
+0,1,142,-166
+0,1,95,-248
+0,1,61,221
+0,1,-119,-12
+0,1,-154,16
+0,1,-9,-82
+0,1,92,209
+0,1,-322,82
+0,1,-5,-53
+0,1,-84,-129
+0,1,151,55
+0,1,-83,140
+0,1,77,57
+0,1,-189,38
+0,1,-38,88
+0,1,14,-361
+0,1,-180,-1
+0,1,-119,-42
+0,1,176,153
+0,1,87,-126
+0,1,-3,112
+0,1,83,-166
+0,1,-28,-134
+0,1,112,50
+0,1,-218,118
+0,1,16,46
+0,1,-64,93
+0,1,71,-283
+0,1,-146,40
+0,1,273,223
+0,1,159,128
+0,1,-117,233
+0,1,-48,-12
+0,1,116,21
+0,1,28,223
+0,1,213,41
+0,1,-58,-67
+0,1,-124,-188
+0,1,-145,18
+0,1,-109,3
+0,1,-101,65
+0,1,17,62
+0,1,158,-92
+0,1,-66,91
+0,1,-60,-245
+0,1,29,104
+0,1,-71,-238
+0,1,112,-129
+0,1,100,70
+0,1,-317,-68
+0,1,-156,-88
+0,1,169,-174
+0,1,72,-23
+0,1,31,74
+0,1,-52,36
+0,1,-32,-27
+0,1,-91,34
+0,1,-111,243
+0,1,-14,102
+0,1,-7,-115
+0,1,-208,148
+0,1,65,116
+0,1,315,-108
+0,1,17,75
+0,1,-48,-67
+0,1,-48,-189
+0,1,-100,177
+0,1,-256,42
+0,1,24,16
+0,1,173,66
+0,1,-105,71
+0,1,65,-56
+0,1,-93,-38
+0,1,-199,30
+0,1,-52,38
+0,1,116,14
+0,1,-86,216
+0,1,371,328
+0,1,-91,-70
+0,1,117,102
+0,1,181,151
+0,1,265,-42
+0,1,-10,-166
+0,1,-174,23
+0,1,73,90
+0,1,-124,15
+0,1,-232,-58
+0,1,-48,107
+0,1,-271,166
+0,1,-10,-110
+0,1,-70,-86
+0,1,-213,-14
+0,1,-271,52
+0,1,28,-47
+0,1,76,249
+0,1,229,-64
+0,1,-106,-2
+0,1,191,234
+0,1,-20,75
+0,1,22,-100
+0,1,-30,12
+0,1,-116,-63
+0,1,127,59
+0,1,206,-120
+0,1,-328,-35
+0,1,35,-41
+0,1,-77,34
+0,1,149,-61
+0,1,-73,-220
+0,1,61,64
+0,1,179,42
+0,1,-28,-208
+0,1,-293,24
+0,1,45,172
+0,1,313,178
+0,1,68,11
+0,1,-108,-8
+0,1,30,291
+0,1,260,135
+0,1,103,-85
+0,1,-351,-63
+0,1,-228,-195
+0,1,-110,-79
+0,1,68,-1
+0,1,-14,-343
+0,1,311,64
+0,1,85,-84
+0,1,-57,7
+0,1,35,-106
+0,1,83,-47
+0,1,-268,-72
+0,1,125,52
+0,1,192,77
+0,1,-116,-46
+0,1,-117,-196
+0,1,-74,165
+0,1,125,-105
+0,1,-36,-64
+0,1,151,6
+0,1,-83,-37
+0,1,-171,-22
+0,1,-340,111
+0,1,-119,-173
+0,1,-134,-12
+0,1,-71,-191
+0,1,-147,100
+0,1,84,-58
+0,1,-49,14
+0,1,130,72
+0,1,245,72
+0,1,-1,-124
+0,1,-189,109
+0,1,63,66
+0,1,-6,256
+0,1,-58,-205
+0,1,-28,44
+0,1,-60,19
+0,1,-116,17
+0,1,175,153
+0,1,-104,-89
+0,1,-48,111
+0,1,-98,-9
+0,1,-199,7
+0,1,-94,-60
+0,1,52,92
+0,1,-74,-111
+0,1,-25,-53
+0,1,-206,-253
+0,1,3,30
+0,1,46,2
+0,1,-31,-78
+0,1,-123,139
+0,1,-158,3
+0,1,288,96
+0,1,-52,-343
+0,1,308,62
+0,1,-99,-23
+0,1,53,-48
+0,1,-98,118
+0,1,3,-196
+0,1,-136,-73
+0,1,171,-71
+0,1,122,82
+0,1,103,141
+0,1,50,64
+0,1,124,225
+0,1,-159,187
+0,1,-119,-24
+0,1,412,111
+0,1,184,-20
+0,1,112,259
+0,1,-10,238
+0,1,-162,222
+0,1,-163,-5
+0,1,109,-162
+0,1,89,-281
+0,1,-119,-5
+0,1,-50,72
+0,1,14,-147
+0,1,49,18
+0,1,80,-124
+0,1,-32,-317
+0,1,18,20
+0,1,246,21
+0,1,-204,1
+0,1,150,-96
+0,1,156,-15
+0,1,3,-92
+0,1,-90,44
+0,1,245,-208
+0,1,-47,-93
+0,1,-161,72
+0,1,18,146
+0,1,-89,200
+0,1,117,113
+0,1,34,141
+0,1,-16,-6
+0,1,-285,147
+0,1,-30,-212
+0,1,-191,162
+0,1,64,-68
+0,1,-24,2
+0,1,60,-4
+0,1,159,-123
+0,1,35,395
+0,1,277,-60
+0,1,302,-108
+0,1,28,-50
+0,1,75,100
+0,1,57,66
+0,1,108,-128
+0,1,71,-242
+0,1,185,-38
+0,1,16,-265
+0,1,-50,144
+0,1,-35,-1
+0,1,-6,154
+0,1,54,201
+0,1,87,53
+0,1,-361,-31
+0,1,-39,-120
+0,1,4,188
+0,1,188,-43
+0,1,30,72
+0,1,-26,210
+0,1,-212,-175
+0,1,-84,-34
+0,1,124,-118
+0,1,130,-170
+0,1,-302,114
+0,1,-62,-97
+0,1,51,189
+0,1,-15,53
+0,1,-159,-129
+0,1,-101,-6
+0,1,-174,335
+0,1,91,-121
+0,1,96,107
+0,1,13,153
+0,1,-116,-189
+0,1,107,-29
+0,1,342,75
+0,1,102,-23
+0,1,325,-60
+0,1,16,-78
+0,1,18,-75
+0,1,-30,120
+0,1,-29,154
+0,1,133,-193
+0,1,83,-110
+0,1,-47,126
+0,1,-46,-14
+0,1,-165,-195
+0,1,-20,-82
+0,1,146,275
+0,1,19,-55
+0,1,52,182
+0,1,85,9
+0,1,106,-154
+0,1,64,-20
+0,1,159,-112
+0,1,-98,17
+0,1,24,-218
+0,1,-20,-93
+0,1,-92,-172
+0,1,-151,134
+0,1,246,-100
+0,1,191,-196
+0,1,175,-19
+0,1,-45,-166
+0,1,343,80
+0,1,131,143
+0,1,45,-228
+0,1,125,58
+0,1,65,207
+0,1,21,261
+0,1,284,-82
+0,1,135,104
+0,1,64,7
+0,1,234,165
+0,1,-6,-190
+0,1,4,-97
+0,1,125,113
+0,1,-194,-234
+0,1,-124,305
+0,1,-152,-130
+0,1,-135,85
+0,1,351,-85
+0,1,-243,134
+0,1,-39,118
+0,1,-137,-6
+0,1,-314,147
+0,1,-165,-66
+0,1,-33,-72
+0,1,130,229
+0,1,137,132
+0,1,-305,-62
+0,1,-12,-176
+0,1,-57,-151
+0,1,6,20
+0,1,-107,-178
+0,1,-237,17
+0,1,61,28
+0,1,21,-166
+0,1,-6,227
+0,1,-281,-32
+0,1,-105,-19
+0,1,164,213
+0,1,19,-397
+0,1,8,-163
+0,1,55,-131
+0,1,168,60
+0,1,-208,1
+0,1,91,195
+0,1,139,-39
+0,1,2,127
+0,1,135,40
+0,1,-317,85
+0,1,-72,111
+0,1,45,124
+0,1,124,-6
+0,1,-26,-102
+0,1,128,25
+0,1,-103,41
+0,1,-148,2
+0,1,40,-208
+0,1,285,147
+0,1,-25,-63
+0,1,-165,-32
+0,1,26,-56
+0,1,134,66
+0,1,-16,-75
+0,1,-36,-1
+0,1,44,24
+0,1,164,7
+0,1,75,62
+0,1,-99,63
+0,1,-70,-64
+0,1,273,-122
+0,1,133,-85
+0,1,125,98
+0,1,148,117
+0,1,57,-49
+0,1,24,59
+0,1,78,-202
+0,1,-132,-76
+0,1,79,-16
+0,1,41,104
+0,1,12,-294
+0,1,91,-119
+0,1,9,-157
+0,1,131,-55
+0,1,19,-216
+0,1,-54,-176
+0,1,243,-77
+0,1,481,-25
+0,1,28,70
+0,1,46,-203
+0,1,59,26
+0,1,-63,-85
+0,1,-2,39
+0,1,29,177
+0,1,39,174
+0,1,-236,48
+0,1,-111,-242
+0,1,-88,92
+0,1,18,54
+0,1,131,-49
+0,1,128,-41
+0,1,142,225
+0,1,-11,-58
+0,1,-26,182
+0,1,94,-48
+0,1,-99,-91
+0,1,17,-107
+0,1,80,92
+0,1,258,43
+0,1,-140,-223
+0,1,-60,-105
+0,1,-133,142
+0,1,36,-173
+0,1,-95,-135
+0,1,-101,-104
+0,1,-4,55
+0,1,-36,-5
+0,1,-190,-239
+0,1,327,-264
+0,1,-121,-36
+0,1,-8,21
+0,1,-148,-325
+0,1,-196,-133
+0,1,-53,-292
+0,1,-199,39
+0,1,158,175
+0,1,140,85
+0,1,8,79
+0,1,-120,127
+0,1,362,-150
+0,1,279,70
+0,1,112,-262
+0,1,-176,74
+0,1,-74,-185
+0,1,50,-149
+0,1,-111,-75
+0,1,-102,-15
+0,1,96,162
+0,1,-72,20
+0,1,257,196
+0,1,-42,-95
+0,1,89,53
+0,1,31,57
+0,1,-89,208
+0,1,188,-28
+0,1,-32,-97
+0,1,204,63
+0,1,96,-6
+0,1,104,-86
+0,1,18,86
+0,1,0,21
+0,1,-146,-150
+0,1,83,83
+0,1,228,3
+0,1,-404,-278
+0,1,-106,56
+0,1,8,-151
+0,1,44,-6
+0,1,-18,-219
+0,1,100,-120
+0,1,-146,91
+0,1,126,10
+0,1,1,-151
+0,1,-142,116
+0,1,117,-254
+0,1,-55,97
+0,1,-49,245
+0,1,-261,-197
+0,1,-183,114
+0,1,212,105
+0,1,-104,-19
+0,1,179,202
+0,1,-76,65
+0,1,102,-35
+0,1,-68,68
+0,1,-256,1
+0,1,-162,-152
+0,1,66,299
+0,1,145,234
+0,1,108,135
+0,1,109,-153
+0,1,-48,189
+0,1,353,79
+0,1,130,-180
+0,1,192,249
+0,1,-73,183
+0,1,16,206
+0,1,-117,-6
+0,1,-74,159
+0,1,-76,267
+0,1,88,-255
+0,1,90,-196
+0,1,107,106
+0,1,329,-291
+0,1,-74,-208
+0,1,103,53
+0,1,98,-105
+0,1,142,-42
+0,1,52,-168
+0,1,86,190
+0,1,70,21
+0,1,-156,18
+0,1,-7,292
+0,1,-121,83
+0,1,142,200
+0,1,-4,-201
+0,1,-200,82
+0,1,-6,61
+0,1,-76,66
+0,1,266,-65
+0,1,-35,-29
+0,1,43,-154
+0,1,-99,82
+0,1,93,-103
+0,1,-315,-77
+0,1,-50,18
+0,1,-94,-42
+0,1,-66,101
+0,1,-88,85
+0,1,-1,-129
+0,1,-48,-83
+0,1,200,119
+0,1,116,185
+0,1,19,-261
+0,1,-143,-394
+0,1,24,-21
+0,1,-87,21
+0,1,189,-57
+0,1,82,-72
+0,1,133,108
+0,1,172,-54
+0,1,-137,23
+0,1,-4,-188
+0,1,-218,247
+0,1,-229,-86
+0,1,-15,59
+0,1,-20,150
+0,1,-40,93
+0,1,-264,129
+0,1,250,104
+0,1,86,-144
+0,1,-120,156
+0,1,77,-52
+0,1,-83,-17
+0,1,-97,-220
+0,1,-48,260
+0,1,536,213
+0,1,-159,130
+0,1,186,-20
+0,1,49,113
+0,1,-10,61
+0,1,320,-38
+0,1,22,162
+0,1,-310,58
+0,1,-13,-72
+0,1,13,208
+0,1,-7,8
+0,1,-14,111
+0,1,-152,17
+0,1,64,-60
+0,1,46,40
+0,1,-77,-117
+0,1,212,96
+0,1,-76,67
+0,1,68,32
+0,1,143,178
+0,1,187,10
+0,1,-212,-8
+0,1,79,-179
+0,1,13,-121
+0,1,-14,76
+0,1,11,267
+0,1,128,-86
+0,1,115,-426
+0,1,-44,122
+0,1,-39,40
+0,1,3,215
+0,1,-4,56
+0,1,-14,151
+0,1,-125,63
+0,1,-119,-88
+0,1,113,-91
+0,1,39,-170
+0,1,-134,-263
+0,1,-135,43
+0,1,161,10
+0,1,2,-8
+0,1,258,-92
+0,1,-94,-344
+0,1,-109,-95
+0,1,286,-58
+0,1,149,-116
+0,1,101,-160
+0,1,63,249
+0,1,-191,-79
+0,1,52,-70
+0,1,94,-79
+0,1,-9,-19
+0,1,-47,-172
+0,1,61,-120
+0,1,-57,110
+0,1,-54,-149
+0,1,-60,13
+0,1,162,-4
+0,1,151,23
+0,1,-96,14
+0,1,104,-4
+0,1,-85,-58
+0,1,-176,114
+0,1,194,-90
+0,1,16,63
+0,1,-76,-85
+0,1,-251,152
+0,1,-129,29
+0,1,32,-266
+0,1,-82,74
+0,1,7,172
+0,1,101,-261
+0,1,110,48
+0,1,-521,-5
+0,1,-197,-233
+0,1,-34,59
+0,1,214,97
+0,1,114,18
+0,1,-93,171
+0,1,272,-244
+0,1,128,66
+0,1,16,106
+0,1,148,112
+0,1,89,173
+0,1,143,-181
+0,1,-87,77
+0,1,61,125
+0,1,-69,-106
+0,1,56,-112
+0,1,-215,346
+0,1,-174,9
+0,1,-24,-233
+0,1,-203,-109
+0,1,-153,11
+0,1,-4,-17
+0,1,124,130
+0,1,201,-23
+0,1,-63,96
+0,1,-32,95
+0,1,32,139
+0,1,96,-13
+0,1,-274,49
+0,1,-225,-30
+0,1,43,-282
+0,1,142,-94
+0,1,225,216
+0,1,-30,235
+0,1,176,-31
+0,1,-235,-73
+0,1,-302,-22
+0,1,26,-194
+0,1,139,86
+0,1,-354,4
+0,1,-124,117
+0,1,55,16
+0,1,231,70
+0,1,281,228
+0,1,-100,107
+0,1,-186,-121
+0,1,-72,-62
+0,1,33,-171
+0,1,48,-97
+0,1,226,-83
+0,1,126,45
+0,1,-136,179
+0,1,-267,89
+0,1,144,25
+0,1,-103,15
+0,1,54,251
+0,1,106,65
+0,1,85,88
+0,1,-42,141
+0,1,329,79
+0,1,-149,217
+0,1,-43,0
+0,1,-242,31
+0,1,66,-73
+0,1,45,16
+0,1,-84,23
+0,1,72,-215
+0,1,-86,1
+0,1,-68,-126
+0,1,61,-141
+0,1,-263,-142
+0,1,55,-11
+0,1,102,55
+0,1,-278,-194
+0,1,-206,-302
+0,1,192,98
+0,1,365,-151
+0,1,-73,-229
+0,1,129,-19
+0,1,134,-18
+0,1,115,5
+0,1,25,199
+0,1,109,-94
+0,1,425,-4
+0,1,-200,-136
+0,1,9,92
+0,1,-3,-188
+0,1,215,311
+0,1,1,-20
+0,1,-114,126
+0,1,-11,-152
+0,1,-248,-108
+0,1,-32,-185
+0,1,226,-132
+0,1,-151,-58
+0,1,-78,36
+0,1,86,-86
+0,1,52,332
+0,1,173,76
+0,1,-184,89
+0,1,145,156
+0,1,-152,-134
+0,1,91,-329
+0,1,177,342
+0,1,46,199
+0,1,-171,60
+0,1,-167,-65
+0,1,-108,-99
+0,1,-210,-202
+0,1,144,61
+0,1,-15,169
+0,1,181,-26
+0,1,34,-162
+0,1,153,-106
+0,1,-209,139
+0,1,46,-20
+0,1,152,41
+0,1,-175,-68
+0,1,-18,-148
+0,1,-136,-155
+0,1,-100,160
+0,1,-58,68
+0,1,-295,-155
+0,1,57,-72
+0,1,84,6
+0,1,86,94
+0,1,-62,218
+0,1,-23,78
+0,1,-128,49
+0,1,25,124
+0,1,46,348
+0,1,68,-13
+0,1,-46,70
+0,1,194,-79
+0,1,-261,-102
+0,1,-186,-228
+0,1,-15,251
+0,1,54,11
+0,1,31,353
+0,1,45,-212
+0,1,-174,-1
+0,1,37,-133
+0,1,123,-83
+0,1,266,139
+0,1,32,-33
+0,1,117,-260
+0,1,-72,-194
+0,1,27,4
+0,1,-149,-291
+0,1,-114,17
+0,1,-120,10
+0,1,-3,76
+0,1,-120,126
+0,1,-69,92
+0,1,-334,-85
+0,1,-112,-232
+0,1,98,-51
+0,1,-118,122
+0,1,-35,162
+0,1,-188,135
+0,1,66,-104
+0,1,119,-117
+0,1,159,-131
+0,1,129,-139
+0,1,318,94
+0,1,-3,120
+0,1,200,256
+0,1,77,3
+0,1,-260,8
+0,1,236,95
+0,1,-57,80
+0,1,-182,-188
+0,1,78,-26
+0,1,-157,70
+0,1,-67,-44
+0,1,81,-110
+0,1,-141,131
+0,1,-191,53
+0,1,-96,-109
+0,1,165,-136
+0,1,-171,94
+0,1,-114,59
+0,1,337,-21
+0,1,-114,14
+0,1,106,-50
+0,1,-26,229
+0,1,-8,-1
+0,1,74,68
+0,1,-90,5
+0,1,-123,247
+0,1,-3,95
+0,1,-20,-27
+0,1,-126,71
+0,1,123,109
+0,1,114,-206
+0,1,-90,258
+0,1,-127,-46
+0,1,136,120
+0,1,-63,63
+0,1,-132,-135
+0,1,-71,-88
+0,1,96,-67
+0,1,-102,-17
+0,1,248,26
+0,1,69,-208
+0,1,188,-81
+0,1,-9,-78
+0,1,46,76
+0,1,63,-47
+0,1,48,-210
+0,1,-19,-171
+0,1,-227,307
+0,1,-64,-65
+0,1,275,-178
+0,1,112,277
+0,1,-14,184
+0,1,17,-200
+0,1,-25,-25
+0,1,144,28
+0,1,174,-31
+0,1,54,101
+0,1,-116,-82
+0,1,-129,-4
+0,1,18,133
+0,1,-205,6
+0,1,-174,274
+0,1,-13,198
+0,1,199,-108
+0,1,-172,293
+0,1,157,-156
+0,1,-165,-168
+0,1,61,-34
+0,1,-169,-44
+0,1,134,-56
+0,1,-91,68
+0,1,23,458
+0,1,-63,29
+0,1,-211,116
+0,1,-46,-32
+0,1,89,44
+0,1,209,136
+0,1,62,82
+0,1,328,-105
+0,1,-87,69
+0,1,19,-269
+0,1,123,70
+0,1,-58,-62
+0,1,136,-252
+0,1,-126,255
+0,1,48,42
+0,1,15,66
+0,1,124,82
+0,1,-29,-42
+0,1,128,130
+0,1,-100,-188
+0,1,-102,-121
+0,1,-31,129
+0,1,132,-16
+0,1,89,-60
+0,1,-19,-39
+0,1,-21,-266
+0,1,-265,-311
+0,1,-16,48
+0,1,268,-77
+0,1,-6,-172
+0,1,-19,116
+0,1,-61,284
+0,1,81,66
+0,1,30,160
+0,1,28,161
+0,1,151,-173
+0,1,-202,141
+0,1,16,201
+0,1,31,27
+0,1,-198,140
+0,1,123,174
+0,1,-149,54
+0,1,132,48
+0,1,38,118
+0,1,-142,-198
+0,1,94,42
+0,1,140,-308
+0,1,154,-79
+0,1,78,127
+0,1,0,94
+0,1,-122,108
+0,1,64,93
+0,1,256,-82
+0,1,4,62
+0,1,59,48
+0,1,247,-172
+0,1,-54,308
+0,1,-200,90
+0,1,253,70
+0,1,-39,-28
+0,1,191,36
+0,1,136,-8
+0,1,8,-200
+0,1,-87,-74
+0,1,120,-198
+0,1,-116,-58
+0,1,205,-61
+0,1,55,-51
+0,1,110,-112
+0,1,-170,22
+0,1,130,-229
+0,1,-90,-93
+0,1,-33,-166
+0,1,83,132
+0,1,72,78
+0,1,101,-106
+0,1,-98,-133
+0,1,-76,-146
+0,1,-86,6
+0,1,38,209
+0,1,176,-169
+0,1,-220,-5
+0,1,-156,-74
+0,1,191,-127
+0,1,6,14
+0,1,-264,92
+0,1,-95,216
+0,1,-181,161
+0,1,173,-116
+0,1,-8,95
+0,1,536,5
+0,1,-275,177
+0,1,88,-97
+0,1,-27,28
+0,1,208,122
+0,1,-19,60
+0,1,-116,202
+0,1,-14,-132
+0,1,-154,40
+0,1,-55,35
+0,1,-107,-180
+0,1,19,-118
+0,1,-52,-52
+0,1,299,-138
+0,1,172,153
+0,1,61,29
+0,1,22,-68
+0,1,233,127
+0,1,126,47
+0,1,-72,157
+0,1,-73,151
+0,1,253,77
+0,1,32,-104
+0,1,303,317
+0,1,169,-179
+0,1,-8,-31
+0,1,-38,-319
+0,1,-73,-78
+0,1,-121,-108
+0,1,-9,47
+0,1,-45,-18
+0,1,21,-71
+0,1,-10,-127
+0,1,-300,-64
+0,1,-111,89
+0,1,62,113
+0,1,176,37
+0,1,-7,-12
+0,1,-36,0
+0,1,-16,-48
+0,1,-165,-205
+0,1,119,175
+0,1,58,83
+0,1,103,-98
+0,1,321,-25
+0,1,190,-178
+0,1,310,26
+0,1,123,-48
+0,1,-180,226
+0,1,173,-130
+0,1,-37,74
+0,1,-80,16
+0,1,222,8
+0,1,-58,-16
+0,1,-51,307
+0,1,119,389
+0,1,-6,-116
+0,1,275,-181
+0,1,-203,185
+0,1,160,-40
+0,1,48,-9
+0,1,46,-54
+0,1,14,-14
+0,1,4,40
+0,1,168,-126
+0,1,-22,-240
+0,1,-182,-118
+0,1,-232,-165
+0,1,83,-66
+0,1,49,-167
+0,1,156,-93
+0,1,-72,-115
+0,1,-120,-14
+0,1,-72,-41
+0,1,97,98
+0,1,-183,348
+0,1,-312,249
+0,1,192,-25
+0,1,-62,19
+0,1,250,239
+0,1,-46,33
+0,1,-2,-186
+0,1,-120,247
+0,1,229,78
+0,1,11,277
+0,1,-319,-256
+0,1,-124,-135
+0,1,-158,147
+0,1,-155,-62
+0,1,-45,52
+0,1,-13,92
+0,1,-204,92
+0,1,-94,-38
+0,1,20,-107
+0,1,38,122
+0,1,145,-166
+0,1,143,98
+0,1,-26,84
+0,1,-132,-160
+0,1,-22,-365
+0,1,-109,35
+0,1,-66,-111
+0,1,245,-49
+0,1,230,-105
+0,1,-28,77
+0,1,53,-45
+0,1,136,-68
+0,1,-49,-129
+0,1,45,-126
+0,1,144,177
+0,1,1,141
+0,1,92,-202
+0,1,290,261
+0,1,-38,-394
+0,1,-155,-67
+0,1,-13,131
+0,1,285,198
+0,1,-242,215
+0,1,186,35
+0,1,-116,34
+0,1,-264,132
+0,1,39,16
+0,1,9,10
+0,1,-172,-353
+0,1,61,311
+0,1,36,-86
+0,1,-82,-56
+0,1,-160,-57
+0,1,182,204
+0,1,54,50
+0,1,-40,75
+0,1,-20,-48
+0,1,-33,-91
+0,1,149,50
+0,1,115,162
+0,1,-180,-197
+0,1,-117,-60
+0,1,-226,210
+0,1,70,-85
+0,1,-156,-91
+0,1,-110,-45
+0,1,-87,-127
+0,1,-243,-62
+0,1,-5,-250
+0,1,25,272
+0,1,59,-50
+0,1,-208,260
+0,1,-209,160
+0,1,-130,86
+0,1,341,184
+0,1,-110,-140
+0,1,-27,255
+0,1,64,-206
+0,1,154,-72
+0,1,-130,-67
+0,1,110,-137
+0,1,328,5
+0,1,-171,45
+0,1,-37,139
+0,1,152,-29
+0,1,-134,-17
+0,1,34,-302
+0,1,-65,-220
+0,1,-88,-286
+0,1,-136,174
+0,1,25,130
+0,1,-6,-122
+0,1,300,-152
+0,1,19,-18
+0,1,-62,304
+0,1,67,206
+0,1,-29,-58
+0,1,176,-33
+0,1,463,68
+0,1,122,84
+0,1,6,-218
+0,1,103,-58
+0,1,-170,-138
+0,1,-62,215
+0,1,367,107
+0,1,69,94
+0,1,-145,-10
+0,1,-38,107
+0,1,-191,-121
+0,1,25,-43
+0,1,-234,220
+0,1,-94,-2
+0,1,188,109
+0,1,203,-66
+0,1,-125,-55
+0,1,-81,-20
+0,1,-73,52
+0,1,344,-147
+0,1,-175,87
+0,1,8,127
+0,1,-308,48
+0,1,-205,-292
+0,1,-133,82
+0,1,-23,9
+0,1,208,144
+0,1,-126,49
+0,1,50,-21
+0,1,262,-26
+0,1,305,30
+0,1,306,-68
+0,1,59,162
+0,1,-97,-96
+0,1,-215,81
+0,1,273,-344
+0,1,82,-240
+0,1,253,-163
+0,1,-189,18
+0,1,2,-188
+0,1,163,-212
+0,1,-5,183
+0,1,32,80
+0,1,83,-42
+0,1,-208,28
+0,1,-160,-120
+0,1,24,-177
+0,1,-185,-97
+0,1,227,-240
+0,1,-24,15
+0,1,72,13
+0,1,360,-144
+0,1,-262,11
+0,1,-54,-93
+0,1,320,-226
+0,1,209,45
+0,1,203,146
+0,1,-237,214
+0,1,34,-115
+0,1,121,-130
+0,1,43,-189
+0,1,116,-321
+0,1,278,342
+0,1,245,-33
+0,1,-92,-75
+0,1,-181,-176
+0,1,-47,2
+0,1,91,-144
+0,1,46,-57
+0,1,-22,-215
+0,1,-71,131
+0,1,125,87
+0,1,-14,-69
+0,1,72,-248
+0,1,97,-138
+0,1,59,-189
+0,1,-68,-46
+0,1,-94,298
+0,1,136,89
+0,1,-43,-325
+0,1,-404,-84
+0,1,148,10
+0,1,-78,-157
+0,1,260,92
+0,1,-113,11
+0,1,24,-135
+0,1,-133,-275
+0,1,-65,125
+0,1,59,-15
+0,1,292,-77
+0,1,-223,-163
+0,1,90,120
+0,1,208,52
+0,1,164,-150
+0,1,582,46
+0,1,37,21
+0,1,-146,148
+0,1,-11,-177
+0,1,-179,62
+0,1,-364,-72
+0,1,20,-85
+0,1,-283,19
+0,1,130,-13
+0,1,97,-57
+0,1,-384,-168
+0,1,-216,157
+0,1,78,-72
+0,1,151,-57
+0,1,-4,84
+0,1,273,-390
+0,1,-256,102
+0,1,-66,59
+0,1,-33,-148
+0,1,-146,-71
+0,1,165,97
+0,1,150,113
+0,1,95,196
+0,1,-114,-55
+0,1,-195,7
+0,1,-240,113
+0,1,-77,-183
+0,1,56,218
+0,1,-82,72
+0,1,-15,123
+0,1,-58,22
+0,1,28,-51
+0,1,74,319
+0,1,-64,-47
+0,1,-205,92
+0,1,28,19
+0,1,8,298
+0,1,176,-227
+0,1,119,-158
+0,1,-45,-52
+0,1,25,278
+0,1,132,146
+0,1,-59,-159
+0,1,72,98
+0,1,-281,-42
+0,1,-143,50
+0,1,108,320
+0,1,-169,185
+0,1,-80,87
+0,1,41,174
+0,1,-245,105
+0,1,-111,247
+0,1,-53,-219
+0,1,54,-11
+0,1,-262,-193
+0,1,50,16
+0,1,296,-185
+0,1,125,68
+0,1,-125,145
+0,1,115,142
+0,1,21,-65
+0,1,53,-75
+0,1,-15,-15
+0,1,171,110
+0,1,-139,232
+0,1,7,246
+0,1,-87,96
+0,1,-21,-114
+0,1,102,-200
+0,1,-335,138
+0,1,-26,87
+0,1,-162,-56
+0,1,19,-33
+0,1,28,214
+0,1,-218,-175
+0,1,128,-72
+0,1,99,295
+0,1,-339,316
+0,1,-138,110
+0,1,222,119
+0,1,182,-68
+0,1,-5,57
+0,1,-16,57
+0,1,-99,183
+0,1,-8,-17
+0,1,-41,-184
+0,1,105,10
+0,1,-83,-237
+0,1,-300,107
+0,1,156,-196
+0,1,-126,293
+0,1,-53,40
+0,1,-59,-72
+0,1,12,204
+0,1,124,18
+0,1,-76,101
+0,1,18,-12
+0,1,15,-125
+0,1,62,117
+0,1,280,-70
+0,1,58,73
+0,1,33,-276
+0,1,64,-49
+0,1,156,85
+0,1,151,126
+0,1,-232,-274
+0,1,-161,-97
+0,1,58,-204
+0,1,18,-18
+0,1,15,92
+0,1,77,36
+0,1,15,99
+0,1,-89,-19
+0,1,-123,70
+0,1,250,260
+0,1,140,-71
+0,1,88,30
+0,1,49,100
+0,1,164,-140
+0,1,-19,125
+0,1,151,-22
+0,1,-166,138
+0,1,-359,39
+0,1,-86,160
+0,1,369,192
+0,1,71,-31
+0,1,-98,-90
+0,1,9,-100
+0,1,88,14
+0,1,89,-147
+0,1,-192,96
+0,1,-342,73
+0,1,-6,-68
+0,1,240,23
+0,1,-250,-96
+0,1,66,-17
+0,1,-137,16
+0,1,-14,58
+0,1,-75,105
+0,1,-56,129
+0,1,-269,89
+0,1,-98,208
+0,1,362,-132
+0,1,147,-81
+0,1,17,-267
+0,1,-99,-46
+0,1,142,-19
+0,1,140,-45
+0,1,3,28
+0,1,192,65
+0,1,168,-84
+0,1,51,187
+0,1,-200,-164
+0,1,54,-34
+0,1,185,118
+0,1,-73,156
+0,1,99,182
+0,1,-142,288
+0,1,-112,174
+0,1,46,120
+0,1,-135,-32
+0,1,60,138
+0,1,-165,-100
+0,1,-48,106
+0,1,-131,-33
+0,1,-67,-100
+0,1,-177,-125
+0,1,114,-66
+0,1,-79,142
+0,1,-44,95
+0,1,-147,97
+0,1,148,-33
+0,1,290,-168
+0,1,86,-93
+0,1,176,68
+0,1,-46,450
+0,1,-50,66
+0,1,251,20
+0,1,-154,141
+0,1,127,112
+0,1,202,199
+0,1,112,-27
+0,1,130,-26
+0,1,183,22
+0,1,-79,58
+0,1,314,-223
+0,1,324,-35
+0,1,-68,-110
+0,1,84,-20
+0,1,-253,306
+0,1,-261,-39
+0,1,-2,-217
+0,1,-44,40
+0,1,-34,17
+0,1,-277,85
+0,1,94,-60
+0,1,23,52
+0,1,91,269
+0,1,130,170
+0,1,15,284
+0,1,-130,290
+0,1,-135,84
+0,1,196,-79
+0,1,-283,-78
+0,1,99,-281
+0,1,-20,-78
+0,1,-104,48
+0,1,102,156
+0,1,244,71
+0,1,-102,-145
+0,1,55,205
+0,1,132,-286
+0,1,-153,134
+0,1,168,-192
+0,1,42,-88
+0,1,-22,-42
+0,1,23,-63
+0,1,-82,100
+0,1,-127,116
+0,1,6,-181
+0,1,-56,296
+0,1,194,-25
+0,1,-222,243
+0,1,48,-240
+0,1,130,98
+0,1,-80,-140
+0,1,18,-10
+0,1,-128,-24
+0,1,52,2
+0,1,-115,53
+0,1,228,-170
+0,1,-20,240
+0,1,-72,10
+0,1,66,-31
+0,1,219,-95
+0,1,-32,59
+0,1,-24,-89
+0,1,-33,160
+0,1,256,-133
+0,1,59,-192
+0,1,-70,-18
+0,1,-12,59
+0,1,88,149
+0,1,-119,-167
+0,1,-17,-47
+0,1,-62,160
+0,1,93,-8
+0,1,-4,-68
+0,1,-42,135
+0,1,-315,-19
+0,1,-99,5
+0,1,24,77
+0,1,-127,198
+0,1,-103,26
+0,1,-182,-31
+0,1,-78,-150
+0,1,-118,109
+0,1,-237,-115
+0,1,170,-107
+0,1,-164,-184
+0,1,259,62
+0,1,-76,-51
+0,1,-100,-161
+0,1,134,-87
+0,1,-77,-29
+0,1,-102,-4
+0,1,182,-94
+0,1,-34,285
+0,1,226,180
+0,1,237,-10
+0,1,-209,102
+0,1,115,-203
+0,1,45,127
+0,1,-99,-81
+0,1,262,165
+0,1,101,-86
+0,1,-184,-157
+0,1,12,-164
+0,1,242,-49
+0,1,11,150
+0,1,-160,120
+0,1,283,-25
+0,1,57,-44
+0,1,81,96
+0,1,-118,-122
+0,1,49,-10
+0,1,28,142
+0,1,-69,-130
+0,1,-270,140
+0,1,20,-67
+0,1,-89,-27
+0,1,345,-22
+0,1,272,-25
+0,1,167,-92
+0,1,49,-25
+0,1,9,112
+0,1,-115,112
+0,1,87,0
+0,1,91,-84
+0,1,51,-75
+0,1,-128,181
+0,1,86,-45
+0,1,-178,-406
+0,1,60,234
+0,1,-131,-25
+0,1,47,169
+0,1,-119,-13
+0,1,75,181
+0,1,-120,102
+0,1,-293,222
+0,1,361,88
+0,1,-184,-301
+0,1,-86,-159
+0,1,35,-2
+0,1,-145,23
+0,1,-176,37
+0,1,83,-75
+0,1,206,-1
+0,1,-24,-112
+0,1,77,54
+0,1,-92,108
+0,1,0,20
+0,1,-44,272
+0,1,156,168
+0,1,-36,-127
+0,1,-41,281
+0,1,-45,117
+0,1,44,-70
+0,1,-134,130
+0,1,173,-40
+0,1,151,-96
+0,1,54,120
+0,1,-228,-115
+0,1,-214,-13
+0,1,120,-78
+0,1,386,202
+0,1,-31,268
+0,1,-161,-48
+0,1,-86,-70
+0,1,-118,-38
+0,1,113,84
+0,1,-81,22
+0,1,-54,-57
+0,1,-243,-68
+0,1,257,11
+0,1,-46,47
+0,1,98,-44
+0,1,-130,-12
+0,1,29,186
+0,1,36,-110
+0,1,9,-351
+0,1,-154,81
+0,1,0,-234
+0,1,-200,105
+0,1,-99,100
+0,1,60,-117
+0,1,176,35
+0,1,-5,162
+0,1,-135,200
+0,1,-80,232
+0,1,180,-128
+0,1,61,-366
+0,1,-134,246
+0,1,217,-133
+0,1,-135,-25
+0,1,-282,117
+0,1,-1,42
+0,1,1,-25
+0,1,17,74
+0,1,104,-202
+0,1,-62,121
+0,1,-160,203
+0,1,-120,288
+0,1,-140,-31
+0,1,91,-23
+0,1,30,-171
+0,1,87,106
+0,1,83,44
+0,1,72,144
+0,1,35,260
+0,1,108,106
+0,1,-16,27
+0,1,-272,258
+0,1,-21,-72
+0,1,-93,-40
+0,1,175,-92
+0,1,121,-143
+0,1,58,281
+0,1,-82,200
+0,1,-11,110
+0,1,-78,37
+0,1,209,30
+0,1,-57,-60
+0,1,-171,9
+0,1,-81,38
+0,1,50,8
+0,1,153,124
+0,1,170,-22
+0,1,-1,-71
+0,1,143,-154
+0,1,104,18
+0,1,-217,-143
+0,1,29,33
+0,1,-29,181
+0,1,-210,-53
+0,1,90,68
+0,1,274,19
+0,1,-181,-264
+0,1,-41,-227
+0,1,78,-124
+0,1,-147,54
+0,1,6,32
+0,1,65,26
+0,1,-265,3
+0,1,64,-282
+0,1,136,-85
+0,1,-263,65
+0,1,9,-33
+0,1,141,-83
+0,1,-215,-51
+0,1,-92,-2
+0,1,-128,152
+0,1,-183,-24
+0,1,76,-260
+0,1,-155,136
+0,1,-120,-62
+0,1,-470,-65
+0,1,38,60
+0,1,153,-193
+0,1,-130,-90
+0,1,52,-96
+0,1,-344,187
+0,1,-53,3
+0,1,-88,-69
+0,1,67,23
+0,1,-64,136
+0,1,119,152
+0,1,146,141
+0,1,106,86
+0,1,-16,-106
+0,1,-63,-93
+0,1,65,-106
+0,1,73,178
+0,1,279,-79
+0,1,-126,227
+0,1,-135,47
+0,1,-145,252
+0,1,-117,-181
+0,1,-139,103
+0,1,-142,-14
+0,1,-16,12
+0,1,46,-48
+0,1,-62,207
+0,1,327,-366
+0,1,185,161
+0,1,-71,-201
+0,1,-183,128
+0,1,-34,43
+0,1,150,59
+0,1,-100,-64
+0,1,-38,103
+0,1,211,70
+0,1,-38,27
+0,1,51,-126
+0,1,-182,183
+0,1,286,-144
+0,1,-19,136
+0,1,-134,-73
+0,1,-133,-56
+0,1,-14,-67
+0,1,288,-196
+0,1,91,-106
+0,1,-147,64
+0,1,32,65
+0,1,-52,-280
+0,1,-186,50
+0,1,232,-38
+0,1,129,196
+0,1,44,-77
+0,1,-269,112
+0,1,133,117
+0,1,35,-94
+0,1,-252,11
+0,1,38,-145
+0,1,47,239
+0,1,96,-151
+0,1,-359,106
+0,1,7,1
+0,1,-229,55
+0,1,395,-52
+0,1,219,242
+0,1,-46,-140
+0,1,-59,-116
+0,1,17,36
+0,1,24,185
+0,1,-93,23
+0,1,-68,-154
+0,1,-106,-128
+0,1,-115,-8
+0,1,67,215
+0,1,-155,145
+0,1,77,-23
+0,1,-132,-96
+0,1,-49,15
+0,1,-90,115
+0,1,133,127
+0,1,-19,132
+0,1,181,55
+0,1,-133,-41
+0,1,-21,-90
+0,1,267,39
+0,1,159,111
+0,1,198,15
+0,1,-263,-29
+0,1,120,10
+0,1,-20,-58
+0,1,-135,214
+0,1,-126,-169
+0,1,-122,103
+0,1,253,-6
+0,1,-102,-148
+0,1,144,191
+0,1,94,138
+0,1,-25,228
+0,1,-55,60
+0,1,177,-105
+0,1,-3,-17
+0,1,-130,48
+0,1,130,136
+0,1,-68,-49
+0,1,-99,238
+0,1,145,21
+0,1,48,-107
+0,1,-40,-82
+0,1,-76,-190
+0,1,92,-58
+0,1,-28,-189
+0,1,-242,-177
+0,1,180,-174
+0,1,-131,-58
+0,1,186,253
+0,1,-257,-104
+0,1,7,-81
+0,1,-98,24
+0,1,-146,-206
+0,1,358,74
+0,1,57,161
+0,1,66,-205
+0,1,-259,34
+0,1,-143,-8
+0,1,301,3
+0,1,98,-147
+0,1,9,230
+0,1,-19,-240
+0,1,43,-149
+0,1,-149,-179
+0,1,-30,-129
+0,1,-431,208
+0,1,-167,136
+0,1,14,276
+0,1,-148,-196
+0,1,88,-50
+0,1,-134,-551
+0,1,61,-24
+0,1,-46,-40
+0,1,248,128
+0,1,144,-32
+0,1,-63,-77
+0,1,38,246
+0,1,-60,184
+0,1,198,105
+0,1,-201,-31
+0,1,6,32
+0,1,-156,-135
+0,1,-27,128
+0,1,-87,109
+0,1,-84,-85
+0,1,108,60
+0,1,139,-57
+0,1,-47,41
+0,1,-48,24
+0,1,-30,90
+0,1,91,-50
+0,1,-107,56
+0,1,-16,174
+0,1,-90,46
+0,1,-199,62
+0,1,-55,39
+0,1,243,-184
+0,1,-152,-168
+0,1,-200,144
+0,1,-96,41
+0,1,-35,144
+0,1,2,-11
+0,1,-66,-222
+0,1,-146,-141
+0,1,199,48
+0,1,-22,-2
+0,1,114,257
+0,1,3,-243
+0,1,33,-48
+0,1,4,27
+0,1,-42,-139
+0,1,-102,-304
+0,1,-81,97
+0,1,223,-58
+0,1,103,56
+0,1,-158,-90
+0,1,134,-274
+0,1,-12,109
+0,1,-35,71
+0,1,-166,-2
+0,1,-36,148
+0,1,92,255
+0,1,-18,-184
+0,1,-107,261
+0,1,-51,-84
+0,1,-219,-5
+0,1,101,-94
+0,1,-183,118
+0,1,-303,-118
+0,1,14,185
+0,1,-88,-176
+0,1,-84,59
+0,1,-118,-86
+0,1,-52,-214
+0,1,121,441
+0,1,-322,215
+0,1,-98,-146
+0,1,-6,-111
+0,1,-64,22
+0,1,-127,120
+0,1,-318,62
+0,1,155,75
+0,1,248,-84
+0,1,69,61
+0,1,-306,-77
+0,1,-59,-123
+0,1,33,66
+0,1,-92,-327
+0,1,122,41
+0,1,50,140
+0,1,144,17
+0,1,133,-263
+0,1,38,60
+0,1,-88,-119
+0,1,-226,84
+0,1,250,-6
+0,1,-118,-185
+0,1,48,196
+0,1,-83,204
+0,1,-197,-171
+0,1,-47,104
+0,1,258,-13
+0,1,-17,2
+0,1,100,149
+0,1,-131,21
+0,1,250,-240
+0,1,-75,120
+0,1,88,-130
+0,1,218,-96
+0,1,364,-207
+0,1,257,-112
+0,1,109,-241
+0,1,-76,65
+0,1,-38,95
+0,1,225,29
+0,1,-98,-145
+0,1,-249,-45
+0,1,48,-355
+0,1,-10,-82
+0,1,-47,8
+0,1,162,10
+0,1,-157,-315
+0,1,-90,-89
+0,1,-96,-6
+0,1,135,-48
+0,1,-7,165
+0,1,163,98
+0,1,-156,36
+0,1,-38,-28
+0,1,45,35
+0,1,-9,218
+0,1,97,-328
+0,1,197,253
+0,1,254,112
+0,1,-98,-58
+0,1,-184,-117
+0,1,110,146
+0,1,0,-238
+0,1,-24,-99
+0,1,74,-29
+0,1,315,385
+0,1,318,-103
+0,1,-100,-2
+0,1,314,202
+0,1,-50,18
+0,1,13,197
+0,1,-80,-161
+0,1,97,118
+0,1,-106,-118
+0,1,-175,-49
+0,1,150,-143
+0,1,282,2
+0,1,136,269
+0,1,-4,0
+0,1,174,-73
+0,1,-48,-178
+0,1,-169,-205
+0,1,-190,-67
+0,1,-520,51
+0,1,-312,71
+0,1,-14,-36
+0,1,-164,86
+0,1,-131,141
+0,1,151,26
+0,1,-46,43
+0,1,27,13
+0,1,15,164
+0,1,43,63
+0,1,-152,43
+0,1,-179,-141
+0,1,262,-50
+0,1,-62,37
+0,1,-123,-166
+0,1,-66,-40
+0,1,180,-40
+0,1,-74,-233
+0,1,81,-133
+0,1,199,-51
+0,1,36,29
+0,1,-85,-90
+0,1,-126,53
+0,1,-96,197
+0,1,-11,21
+0,1,-80,-77
+0,1,-86,-99
+0,1,39,15
+0,1,71,111
+0,1,-1,138
+0,1,41,50
+0,1,280,94
+0,1,-162,57
+0,1,-78,-245
+0,1,325,225
+0,1,309,-439
+0,1,252,160
+0,1,-34,92
+0,1,152,248
+0,1,191,75
+0,1,-82,-38
+0,1,16,141
+0,1,325,97
+0,1,-10,-124
+0,1,-63,-100
+0,1,72,223
+0,1,-58,128
+0,1,-137,71
+0,1,29,-48
+0,1,-53,268
+0,1,-6,218
+0,1,166,11
+0,1,46,-204
+0,1,-193,113
+0,1,184,-121
+0,1,192,57
+0,1,152,286
+0,1,-14,58
+0,1,-54,-43
+0,1,140,23
+0,1,11,2
+0,1,352,146
+0,1,-97,237
+0,1,13,-300
+0,1,-211,53
+0,1,-55,88
+0,1,112,-151
+0,1,20,234
+0,1,-194,-129
+0,1,131,79
+0,1,-23,38
+0,1,-112,16
+0,1,-99,-71
+0,1,11,39
+0,1,-143,-70
+0,1,-217,68
+0,1,54,97
+0,1,-116,178
+0,1,-65,0
+0,1,32,-98
+0,1,309,19
+0,1,31,-33
+0,1,-51,-5
+0,1,-118,-40
+0,1,237,108
+0,1,210,-197
+0,1,-205,74
+0,1,-79,67
+0,1,125,378
+0,1,-175,123
+0,1,196,-193
+0,1,90,100
+0,1,-39,98
+0,1,-9,-296
+0,1,-109,167
+0,1,31,-162
+0,1,-124,-173
+0,1,-268,15
+0,1,-20,-127
+0,1,113,478
+0,1,-143,28
+0,1,198,98
+0,1,30,-173
+0,1,-160,5
+0,1,-7,42
+0,1,103,85
+0,1,-23,138
+0,1,-37,441
+0,1,92,-152
+0,1,28,109
+0,1,141,94
+0,1,-306,-229
+0,1,-8,-8
+0,1,48,36
+0,1,-148,54
+0,1,-32,94
+0,1,124,-73
+0,1,10,-90
+0,1,143,-229
+0,1,191,-171
+0,1,-127,-66
+0,1,-22,257
+0,1,7,103
+0,1,48,-76
+0,1,-139,-196
+0,1,120,-19
+0,1,148,227
+0,1,-177,-228
+0,1,-119,210
+0,1,242,-19
+0,1,323,37
+0,1,238,154
+0,1,-151,-17
+0,1,130,-348
+0,1,70,-216
+0,1,114,-344
+0,1,120,56
+0,1,-174,375
+0,1,50,109
+0,1,-289,-51
+0,1,-172,113
+0,1,-95,-91
+0,1,-236,3
+0,1,193,121
+0,1,-93,56
+0,1,-26,21
+0,1,-29,-193
+0,1,174,84
+0,1,41,-355
+0,1,35,-53
+0,1,18,21
+0,1,-32,135
+0,1,-18,-342
+0,1,96,150
+0,1,239,-27
+0,1,199,57
+0,1,66,-19
+0,1,-91,-139
+0,1,47,100
+0,1,60,-113
+0,1,-102,196
+0,1,-42,185
+0,1,-9,126
+0,1,-195,-200
+0,1,18,-63
+0,1,171,10
+0,1,122,247
+0,1,130,54
+0,1,-204,-4
+0,1,-153,177
+0,1,-32,83
+0,1,142,-9
+0,1,-150,-201
+0,1,-265,-111
+0,1,-55,-161
+0,1,-14,-137
+0,1,-3,-133
+0,1,107,-64
+0,1,127,-29
+0,1,103,-36
+0,1,-123,6
+0,1,-52,29
+0,1,155,-34
+0,1,42,-53
+0,1,-34,115
+0,1,58,-233
+0,1,79,-93
+0,1,-177,189
+0,1,132,79
+0,1,25,-138
+0,1,-208,-107
+0,1,-82,20
+0,1,-191,-153
+0,1,227,-121
+0,1,303,345
+0,1,111,49
+0,1,17,63
+0,1,370,138
+0,1,-204,137
+0,1,-143,157
+0,1,-110,58
+0,1,217,-94
+0,1,-150,44
+0,1,91,-38
+0,1,-2,86
+0,1,-72,-230
+0,1,74,43
+0,1,4,73
+0,1,-49,-65
+0,1,51,-138
+0,1,170,-187
+0,1,-72,5
+0,1,-128,-52
+0,1,170,-54
+0,1,126,73
+0,1,-270,-180
+0,1,-67,39
+0,1,-100,106
+0,1,261,-39
+0,1,269,67
+0,1,-87,-226
+0,1,-170,24
+0,1,104,402
+0,1,116,-14
+0,1,59,16
+0,1,204,-26
+0,1,85,32
+0,1,211,-167
+0,1,177,-40
+0,1,-53,47
+0,1,23,97
+0,1,-113,-230
+0,1,201,145
+0,1,190,-33
+0,1,51,-276
+0,1,90,210
+0,1,187,-92
+0,1,188,105
+0,1,32,-28
+0,1,62,-106
+0,1,-135,375
+0,1,11,22
+0,1,-104,34
+0,1,-191,117
+0,1,31,-233
+0,1,166,-48
+0,1,-267,137
+0,1,240,380
+0,1,47,63
+0,1,64,277
+0,1,-298,59
+0,1,89,-205
+0,1,159,60
+0,1,351,-11
+0,1,-119,90
+0,1,87,44
+0,1,44,281
+0,1,-85,-65
+0,1,-216,162
+0,1,-138,-85
+0,1,260,180
+0,1,-114,128
+0,1,-343,132
+0,1,-11,133
+0,1,-136,-38
+0,1,-53,145
+0,1,-174,-27
+0,1,204,-20
+0,1,-43,-104
+0,1,-145,453
+0,1,54,131
+0,1,2,-87
+0,1,-60,107
+0,1,-78,-32
+0,1,-228,160
+0,1,139,120
+0,1,125,21
+0,1,-31,158
+0,1,186,-257
+0,1,96,-161
+0,1,-354,16
+0,1,-391,101
+0,1,-64,155
+0,1,-91,-146
+0,1,-8,-237
+0,1,69,-46
+0,1,-437,63
+0,1,-125,103
+0,1,-37,129
+0,1,34,-51
+0,1,222,101
+0,1,-153,218
+0,1,57,212
+0,1,-159,153
+0,1,-62,-136
+0,1,-68,198
+0,1,-193,-32
+0,1,1,-60
+0,1,54,111
+0,1,89,40
+0,1,74,-187
+0,1,-134,-204
+0,1,108,64
+0,1,-17,67
+0,1,-17,125
+0,1,21,355
+0,1,202,223
+0,1,267,-184
+0,1,-56,-85
+0,1,270,18
+0,1,133,-82
+0,1,-58,114
+0,1,96,289
+0,1,270,135
+0,1,52,104
+0,1,-105,-98
+0,1,161,-65
+0,1,-231,99
+0,1,168,-48
+0,1,174,-108
+0,1,70,-69
+0,1,-184,-15
+0,1,89,-81
+0,1,-317,-11
+0,1,-28,110
+0,1,-265,98
+0,1,30,191
+0,1,243,-218
+0,1,-88,117
+0,1,412,-68
+0,1,50,-20
+0,1,-183,-35
+0,1,-4,42
+0,1,-55,28
+0,1,-110,-202
+0,1,234,211
+0,1,179,-140
+0,1,252,-82
+0,1,-41,0
+0,1,-110,-106
+0,1,25,26
+0,1,-70,-248
+0,1,90,7
+0,1,-62,-47
+0,1,111,169
+0,1,-18,54
+0,1,172,-199
+0,1,49,98
+0,1,157,148
+0,1,-107,-58
+0,1,-30,-3
+0,1,148,334
+0,1,-48,83
+0,1,-241,-188
+0,1,-126,105
+0,1,-104,129
+0,1,227,-215
+0,1,-182,48
+0,1,108,104
+0,1,-6,-75
+0,1,-129,-43
+0,1,-2,-2
+0,1,125,-12
+0,1,-152,-113
+0,1,-138,-207
+0,1,60,45
+0,1,-266,106
+0,1,33,195
+0,1,-269,-40
+0,1,53,31
+0,1,-63,-34
+0,1,-135,-29
+0,1,196,-157
+0,1,-73,227
+0,1,136,4
+0,1,22,13
+0,1,39,47
+0,1,55,-108
+0,1,112,-181
+0,1,-137,58
+0,1,191,-32
+0,1,16,-86
+0,1,45,-207
+0,1,-88,80
+0,1,142,-32
+0,1,39,-59
+0,1,-51,161
+0,1,-173,158
+0,1,-48,-46
+0,1,83,197
+0,1,266,-48
+0,1,141,-17
+0,1,-270,23
+0,1,-14,122
+0,1,200,188
+0,1,-108,-153
+0,1,310,71
+0,1,83,-83
+0,1,-101,-31
+0,1,233,87
+0,1,-251,72
+0,1,-155,-201
+0,1,46,102
+0,1,-93,347
+0,1,66,143
+0,1,-181,36
+0,1,217,21
+0,1,91,16
+0,1,102,-172
+0,1,-248,127
+0,1,78,58
+0,1,50,-143
+0,1,106,156
+0,1,6,-166
+0,1,65,-125
+0,1,24,137
+0,1,-72,204
+0,1,15,240
+0,1,-45,62
+0,1,-85,59
+0,1,43,62
+0,1,181,9
+0,1,65,66
+0,1,-77,-26
+0,1,-90,-35
+0,1,192,-65
+0,1,54,-235
+0,1,23,-13
+0,1,-74,36
+0,1,-132,193
+0,1,213,137
+0,1,19,-174
+0,1,-109,183
+0,1,-4,13
+0,1,-165,96
+0,1,31,-144
+0,1,48,-115
+0,1,-68,87
+0,1,-183,114
+0,1,64,-24
+0,1,-21,-19
+0,1,-60,-239
+0,1,-205,206
+0,1,-198,-54
+0,1,-70,83
+0,1,9,-171
+0,1,216,-207
+0,1,-87,122
+0,1,-68,-239
+0,1,59,-149
+0,1,3,20
+0,1,-154,176
+0,1,105,149
+0,1,-264,135
+0,1,193,55
+0,1,-37,-48
+0,1,-372,165
+0,1,115,7
+0,1,-6,-8
+0,1,-104,83
+0,1,-108,67
+0,1,28,-62
+0,1,-23,112
+0,1,205,95
+0,1,-29,-286
+0,1,44,-2
+0,1,12,8
+0,1,63,-142
+0,1,90,42
+0,1,52,-19
+0,1,94,218
+0,1,231,-2
+0,1,-159,155
+0,1,-12,-64
+0,1,250,95
+0,1,116,-291
+0,1,-98,-35
+0,1,-3,-226
+0,1,-275,299
+0,1,150,-121
+0,1,-212,-31
+0,1,167,-150
+0,1,-44,47
+0,1,94,7
+0,1,144,-64
+0,1,129,-134
+0,1,46,-115
+0,1,165,46
+0,1,208,-69
+0,1,-16,-51
+0,1,-312,113
+0,1,14,69
+0,1,-90,-44
+0,1,-291,-25
+0,1,-24,91
+0,1,64,11
+0,1,-150,-178
+0,1,-184,289
+0,1,-199,329
+0,1,88,181
+0,1,-218,59
+0,1,99,-111
+0,1,9,338
+0,1,169,57
+0,1,-142,-103
+0,1,319,311
+0,1,-270,171
+0,1,107,-162
+0,1,-123,131
+0,1,-203,-44
+0,1,16,184
+0,1,102,-118
+0,1,221,128
+0,1,-33,-7
+0,1,-185,82
+0,1,0,-470
+0,1,-257,99
+0,1,-60,-13
+0,1,108,63
+0,1,154,53
+0,1,-135,114
+0,1,99,-111
+0,1,-133,46
+0,1,-53,17
+0,1,-181,-20
+0,1,-178,-222
+0,1,57,-202
+0,1,162,116
+0,1,48,-161
+0,1,-40,-177
+0,1,130,-63
+0,1,-237,18
+0,1,-106,-67
+0,1,-5,-45
+0,1,-150,26
+0,1,295,-14
+0,1,173,-4
+0,1,-205,-155
+0,1,-110,149
+0,1,47,12
+0,1,-76,128
+0,1,-251,-62
+0,1,-64,-16
+0,1,20,-2
+0,1,20,85
+0,1,-56,-58
+0,1,-29,243
+0,1,163,-62
+0,1,153,74
+0,1,-163,131
+0,1,358,-248
+0,1,-150,-258
+0,1,-25,-76
+0,1,4,181
+0,1,133,-133
+0,1,-112,77
+0,1,-122,-357
+0,1,-89,239
+0,1,156,-28
+0,1,-4,-261
+0,1,60,109
+0,1,30,58
+0,1,-64,-311
+0,1,252,30
+0,1,-73,-44
+0,1,70,-359
+0,1,37,-19
+0,1,162,19
+0,1,-74,-186
+0,1,-102,28
+0,1,-106,-192
+0,1,-127,-233
+0,1,20,17
+0,1,255,8
+0,1,-32,-147
+0,1,-34,11
+0,1,-10,-111
+0,1,-102,-180
+0,1,135,47
+0,1,-7,-156
+0,1,185,30
+0,1,43,-51
+0,1,-156,129
+0,1,-310,18
+0,1,80,186
+0,1,-142,-13
+0,1,104,76
+0,1,181,52
+0,1,-137,-29
+0,1,-180,104
+0,1,-82,-81
+0,1,-68,12
+0,1,-28,62
+0,1,108,-96
+0,1,93,-163
+0,1,-115,-15
+0,1,-81,-152
+0,1,33,-111
+0,1,-242,173
+0,1,33,-194
+0,1,61,-463
+0,1,-243,118
+0,1,88,73
+0,1,44,-147
+0,1,-51,-22
+0,1,131,73
+0,1,-335,-54
+0,1,243,-2
+0,1,138,-91
+0,1,169,164
+0,1,-235,85
+0,1,45,-360
+0,1,-171,-45
+0,1,102,278
+0,1,-12,180
+0,1,293,-148
+0,1,-31,-185
+0,1,-95,-67
+0,1,-211,144
+0,1,83,192
+0,1,436,-20
+0,1,-59,49
+0,1,-145,-285
+0,1,8,10
+0,1,-81,93
+0,1,-82,129
+0,1,-35,58
+0,1,25,165
+0,1,219,48
+0,1,-28,-197
+0,1,-3,46
+0,1,-102,-137
+0,1,-61,228
+0,1,64,-76
+0,1,-40,76
+0,1,147,-78
+0,1,-18,-72
+0,1,-326,106
+0,1,190,-20
+0,1,86,-113
+0,1,-86,129
+0,1,119,172
+0,1,4,69
+0,1,114,-56
+0,1,-271,-106
+0,1,151,200
+0,1,-152,-208
+0,1,-164,-221
+0,1,-57,67
+0,1,37,-281
+0,1,99,-10
+0,1,110,-347
+0,1,36,-82
+0,1,-82,42
+0,1,48,135
+0,1,-257,109
+0,1,-221,-284
+0,1,-278,29
+0,1,152,-91
+0,1,163,-76
+0,1,-252,-46
+0,1,-327,-89
+0,1,70,-4
+0,1,3,-158
+0,1,194,-25
+0,1,-76,162
+0,1,-123,8
+0,1,-81,26
+0,1,16,-34
+0,1,-7,-303
+0,1,20,118
+0,1,146,-67
+0,1,143,83
+0,1,41,-119
+0,1,309,-178
+0,1,39,-240
+0,1,-156,23
+0,1,94,-172
+0,1,-112,-87
+0,1,-17,19
+0,1,152,5
+0,1,51,-157
+0,1,98,93
+0,1,8,-59
+0,1,16,153
+0,1,-163,-72
+0,1,-382,115
+0,1,2,166
+0,1,-116,-255
+0,1,-150,84
+0,1,10,-278
+0,1,-105,57
+0,1,-176,259
+0,1,296,-116
+0,1,-63,208
+0,1,-5,-74
+0,1,98,46
+0,1,-82,52
+0,1,85,-162
+0,1,-39,97
+0,1,-61,134
+0,1,-205,-116
+0,1,-270,-119
+0,1,-30,139
+0,1,-37,240
+0,1,36,104
+0,1,40,66
+0,1,333,-40
+0,1,0,276
+0,1,138,35
+0,1,-212,-17
+0,1,110,8
+0,1,-9,85
+0,1,-1,264
+0,1,6,45
+0,1,19,-66
+0,1,2,282
+0,1,-88,88
+0,1,-190,-181
+0,1,150,186
+0,1,-134,-37
+0,1,-132,-116
+0,1,23,73
+0,1,-172,108
+0,1,-10,-59
+0,1,-120,-33
+0,1,83,64
+0,1,107,-54
+0,1,-110,86
+0,1,-177,9
+0,1,49,158
+0,1,-60,-198
+0,1,150,-149
+0,1,-131,-32
+0,1,-191,-360
+0,1,195,-320
+0,1,-186,-222
+0,1,78,-59
+0,1,23,87
+0,1,-196,70
+0,1,229,-15
+0,1,37,100
+0,1,-73,97
+0,1,115,-15
+0,1,205,191
+0,1,-158,22
+0,1,5,120
+0,1,2,73
+0,1,23,-83
+0,1,191,-58
+0,1,-119,39
+0,1,-142,-115
+0,1,-24,52
+0,1,188,-26
+0,1,90,-164
+0,1,-53,-156
+0,1,-366,59
+0,1,-163,121
+0,1,308,-30
+0,1,96,-54
+0,1,-352,6
+0,1,-146,-98
+0,1,48,13
+0,1,96,65
+0,1,-148,-148
+0,1,-43,54
+0,1,87,274
+0,1,137,109
+0,1,-31,134
+0,1,-21,214
+0,1,85,-157
+0,1,-147,-23
+0,1,51,11
+0,1,29,5
+0,1,93,32
+0,1,-50,11
+0,1,-105,-155
+0,1,-154,-166
+0,1,32,192
+0,1,135,-184
+0,1,5,99
+0,1,66,128
+0,1,-15,-98
+0,1,-44,70
+0,1,4,7
+0,1,-79,190
+0,1,185,68
+0,1,178,-3
+0,1,52,90
+0,1,68,-141
+0,1,59,67
+0,1,-125,-34
+0,1,45,23
+0,1,-13,24
+0,1,-110,-3
+0,1,28,53
+0,1,-158,111
+0,1,-31,18
+0,1,211,98
+0,1,-123,99
+0,1,41,41
+0,1,-205,22
+0,1,-165,224
+0,1,105,-84
+0,1,-38,148
+0,1,157,129
+0,1,194,-102
+0,1,-7,146
+0,1,175,33
+0,1,-100,-13
+0,1,218,-121
+0,1,-49,-154
+0,1,-10,-146
+0,1,159,-65
+0,1,-154,-151
+0,1,96,-14
+0,1,-87,9
+0,1,206,140
+0,1,-104,372
+0,1,-59,-64
+0,1,-208,-108
+0,1,177,72
+0,1,247,-36
+0,1,31,176
+0,1,25,4
+0,1,-186,22
+0,1,-29,-254
+0,1,99,-130
+0,1,-272,-287
+0,1,-237,14
+0,1,184,50
+0,1,163,-359
+0,1,136,-290
+0,1,64,254
+0,1,-15,-252
+0,1,-171,169
+0,1,18,-52
+0,1,204,165
+0,1,28,165
+0,1,-42,-56
+0,1,45,-162
+0,1,-47,-114
+0,1,-271,226
+0,1,-279,-89
+0,1,-17,43
+0,1,148,13
+0,1,-105,172
+0,1,-332,37
+0,1,11,27
+0,1,165,-133
+0,1,-15,10
+0,1,300,89
+0,1,55,-213
+0,1,-15,195
+0,1,-35,199
+0,1,139,114
+0,1,-143,-135
+0,1,66,-31
+0,1,157,-137
+0,1,230,90
+0,1,-30,-118
+0,1,-176,79
+0,1,135,-47
+0,1,199,191
+0,1,292,148
+0,1,-127,-100
+0,1,210,-134
+0,1,79,-257
+0,1,316,20
+0,1,42,-35
+0,1,-184,-26
+0,1,-13,-6
+0,1,-69,-5
+0,1,199,19
+0,1,-62,-76
+0,1,1,89
+0,1,56,-36
+0,1,35,-278
+0,1,-74,18
+0,1,-79,-89
+0,1,15,164
+0,1,-176,-196
+0,1,-62,-239
+0,1,100,-149
+0,1,358,207
+0,1,229,-30
+0,1,-146,-25
+0,1,65,7
+0,1,189,-311
+0,1,56,152
+0,1,197,106
+0,1,60,121
+0,1,139,308
+0,1,145,-9
+0,1,-40,-150
+0,1,67,-36
+0,1,-302,-20
+0,1,120,83
+0,1,-65,169
+0,1,-43,-100
+0,1,-126,-43
+0,1,-113,-23
+0,1,115,-277
+0,1,-31,242
+0,1,151,-168
+0,1,135,-4
+0,1,105,64
+0,1,-157,53
+0,1,-25,-15
+0,1,-240,-41
+0,1,-110,18
+0,1,13,-88
+0,1,-55,-10
+0,1,-133,215
+0,1,-231,16
+0,1,-83,242
+0,1,176,261
+0,1,-4,-81
+0,1,-162,-78
+0,1,-88,216
+0,1,-31,5
+0,1,-107,-490
+0,1,31,148
+0,1,-83,13
+0,1,146,102
+0,1,58,117
+0,1,-147,-96
+0,1,-18,-53
+0,1,218,-5
+0,1,-57,55
+0,1,-217,40
+0,1,-128,309
+0,1,89,17
+0,1,17,315
+0,1,-104,131
+0,1,159,-260
+0,1,-167,169
+0,1,48,-189
+0,1,57,-109
+0,1,-14,-207
+0,1,115,99
+0,1,-164,-265
+0,1,16,71
+0,1,97,121
+0,1,-169,55
+0,1,-110,-271
+0,1,128,54
+0,1,-362,177
+0,1,-120,197
+0,1,254,144
+0,1,99,97
+0,1,-162,-271
+0,1,124,173
+0,1,26,-287
+0,1,-163,-88
+0,1,-49,-336
+0,1,47,-186
+0,1,-153,180
+0,1,-111,34
+0,1,160,169
+0,1,91,78
+0,1,-164,-128
+0,1,251,98
+0,1,313,-269
+0,1,-222,21
+0,1,-111,-91
+0,1,198,164
+0,1,-35,116
+0,1,23,-142
+0,1,-103,2
+0,1,-55,64
+0,1,103,-162
+0,1,110,101
+0,1,53,13
+0,1,11,38
+0,1,127,300
+0,1,-24,-262
+0,1,-5,311
+0,1,38,-173
+0,1,149,95
+0,1,49,63
+0,1,-52,-320
+0,1,196,43
+0,1,109,133
+0,1,233,-215
+0,1,59,130
+0,1,222,117
+0,1,89,84
+0,1,335,76
+0,1,109,-290
+0,1,207,-127
+0,1,68,71
+0,1,27,33
+0,1,-49,44
+0,1,-76,290
+0,1,-146,-51
+0,1,101,228
+0,1,277,-142
+0,1,-63,-84
+0,1,-3,-186
+0,1,63,-114
+0,1,28,60
+0,1,199,11
+0,1,91,33
+0,1,-25,-165
+0,1,71,32
+0,1,-65,-74
+0,1,-215,-81
+0,1,166,-154
+0,1,-218,-4
+0,1,-107,-66
+0,1,-18,126
+0,1,-230,253
+0,1,134,370
+0,1,-110,-45
+0,1,203,431
+0,1,113,-172
+0,1,-3,281
+0,1,-105,-149
+0,1,230,49
+0,1,-176,-196
+0,1,-497,136
+0,1,77,-89
+0,1,-156,-126
+0,1,1,5
+0,1,150,133
+0,1,171,-8
+0,1,-102,82
+0,1,-106,-63
+0,1,133,38
+0,1,-166,170
+0,1,-156,115
+0,1,-4,200
+0,1,-101,147
+0,1,138,-110
+0,1,22,-139
+0,1,99,-73
+0,1,71,-33
+0,1,-86,-104
+0,1,-6,-146
+0,1,196,48
+0,1,-7,-198
+0,1,14,79
+0,1,-64,216
+0,1,-124,40
+0,1,125,318
+0,1,82,66
+0,1,44,-220
+0,1,-210,-237
+0,1,3,115
+0,1,45,143
+0,1,-172,-76
+0,1,23,28
+0,1,-105,115
+0,1,-42,-102
+0,1,79,147
+0,1,0,-230
+0,1,-75,68
+0,1,304,-221
+0,1,41,-130
+0,1,207,-77
+0,1,162,-50
+0,1,114,-4
+0,1,-13,-10
+0,1,173,-141
+0,1,-126,-6
+0,1,-71,-154
+0,1,-183,-133
+0,1,-56,55
+0,1,-61,-141
+0,1,162,131
+0,1,-157,34
+0,1,213,-65
+0,1,84,-225
+0,1,102,-32
+0,1,112,-163
+0,1,33,40
+0,1,96,191
+0,1,-119,101
+0,1,-191,120
+0,1,-120,197
+0,1,22,81
+0,1,-101,-128
+0,1,185,-125
+0,1,-368,-62
+0,1,-75,178
+0,1,-59,49
+0,1,30,-198
+0,1,20,46
+0,1,107,216
+0,1,117,-76
+0,1,-6,81
+0,1,48,72
+0,1,-129,-113
+0,1,-32,170
+0,1,48,62
+0,1,-219,-139
+0,1,-32,-113
+0,1,374,-136
+0,1,-78,-31
+0,1,1,-31
+0,1,-46,-85
+0,1,9,-85
+0,1,214,60
+0,1,30,-208
+0,1,-326,-98
+0,1,-170,-97
+0,1,-59,-99
+0,1,-233,-178
+0,1,-140,72
+0,1,28,88
+0,1,-115,-70
+0,1,-74,4
+0,1,-4,-114
+0,1,193,48
+0,1,-104,-10
+0,1,-106,-1
+0,1,15,95
+0,1,14,-245
+0,1,-42,-231
+0,1,73,-74
+0,1,-210,-252
+0,1,22,-20
+0,1,-88,-222
+0,1,-4,-157
+0,1,-56,-13
+0,1,-6,220
+0,1,-5,-132
+0,1,210,57
+0,1,91,-4
+0,1,279,-74
+0,1,-9,-50
+0,1,-126,-36
+0,1,-89,81
+0,1,-172,-141
+0,1,-309,99
+0,1,395,82
+0,1,-217,232
+0,1,-55,12
+0,1,-84,-85
+0,1,-28,-126
+0,1,-250,-83
+0,1,219,-70
+0,1,282,170
+0,1,13,254
+0,1,48,-137
+0,1,-46,88
+0,1,-117,331
+0,1,-177,7
+0,1,-1,82
+0,1,-94,5
+0,1,-376,-191
+0,1,7,-220
+0,1,106,306
+0,1,-236,-1
+0,1,-3,-134
+0,1,176,197
+0,1,-47,113
+0,1,128,25
+0,1,-31,118
+0,1,-192,10
+0,1,182,59
+0,1,-25,320
+0,1,4,20
+0,1,-33,1
+0,1,58,-1
+0,1,-81,-26
+0,1,-20,55
+0,1,84,-128
+0,1,41,250
+0,1,199,192
+0,1,194,35
+0,1,73,-96
+0,1,-40,11
+0,1,170,106
+0,1,-56,60
+0,1,-27,226
+0,1,-123,-232
+0,1,-119,-70
+0,1,225,-34
+0,1,-10,-102
+0,1,-101,197
+0,1,107,95
+0,1,162,-207
+0,1,-65,55
+0,1,21,-155
+0,1,-164,-112
+0,1,254,51
+0,1,110,91
+0,1,-310,98
+0,1,-88,-120
+0,1,-66,-324
+0,1,116,-377
+0,1,-34,175
+0,1,-18,121
+0,1,66,47
+0,1,117,-114
+0,1,-255,-30
+0,1,-135,-92
+0,1,-25,-39
+0,1,93,-318
+0,1,-79,54
+0,1,-13,-94
+0,1,281,-97
+0,1,443,-192
+0,1,-18,196
+0,1,98,71
+0,1,504,-37
+0,1,-249,167
+0,1,95,-174
+0,1,-132,-18
+0,1,211,106
+0,1,-46,32
+0,1,-155,52
+0,1,10,-5
+0,1,119,360
+0,1,11,94
+0,1,-36,25
+0,1,232,156
+0,1,2,-78
+0,1,198,-37
+0,1,-12,-34
+0,1,115,-75
+0,1,260,249
+0,1,-78,171
+0,1,-84,9
+0,1,73,-33
+0,1,-64,-147
+0,1,-44,-67
+0,1,22,-93
+0,1,83,-86
+0,1,-22,-250
+0,1,-73,-178
+0,1,6,-262
+0,1,21,-8
+0,1,-52,143
+0,1,-47,-23
+0,1,-63,65
+0,1,-65,165
+0,1,-198,-33
+0,1,-121,137
+0,1,-5,-110
+0,1,-26,370
+0,1,203,119
+0,1,-139,-256
+0,1,182,-89
+0,1,210,-251
+0,1,-268,-117
+0,1,-22,32
+0,1,120,-35
+0,1,-47,259
+0,1,48,-89
+0,1,85,-310
+0,1,195,74
+0,1,72,128
+0,1,228,60
+0,1,17,38
+0,1,24,-190
+0,1,-95,-32
+0,1,31,-119
+0,1,-29,-217
+0,1,-273,-155
+0,1,84,59
+0,1,-10,-70
+0,1,89,160
+0,1,64,-9
+0,1,79,-109
+0,1,82,-50
+0,1,181,48
+0,1,-120,-90
+0,1,-199,50
+0,1,-112,-126
+0,1,281,63
+0,1,103,40
+0,1,110,10
+0,1,-222,66
+0,1,-126,35
+0,1,-192,82
+0,1,-434,-82
+0,1,45,38
+0,1,23,-269
+0,1,17,200
+0,1,-16,-208
+0,1,82,126
+0,1,-159,249
+0,1,2,42
+0,1,93,242
+0,1,-69,-152
+0,1,-146,-98
+0,1,157,-131
+0,1,0,-223
+0,1,24,-122
+0,1,458,89
+0,1,-200,-242
+0,1,-185,-16
+0,1,42,-34
+0,1,90,38
+0,1,-290,-24
+0,1,33,-131
+0,1,14,193
+0,1,-108,140
+0,1,-441,-236
+0,1,-25,-21
+0,1,101,-98
+0,1,139,-203
+0,1,-133,-105
+0,1,157,204
+0,1,71,-79
+0,1,-158,-81
+0,1,36,-117
+0,1,-94,208
+0,1,58,-208
+0,1,-48,-268
+0,1,61,-123
+0,1,-86,-294
+0,1,-108,-145
+0,1,-146,-124
+0,1,56,-55
+0,1,89,-161
+0,1,67,185
+0,1,-40,89
+0,1,69,160
+0,1,-163,189
+0,1,-267,-67
+0,1,-30,-126
+0,1,248,-110
+0,1,-133,-206
+0,1,172,194
+0,1,-23,-300
+0,1,47,-304
+0,1,15,-119
+0,1,-96,169
+0,1,1,-58
+0,1,-269,-43
+0,1,-59,14
+0,1,-24,150
+0,1,-233,118
+0,1,-6,161
+0,1,66,112
+0,1,277,350
+0,1,-8,-97
+0,1,13,-118
+0,1,25,-44
+0,1,78,197
+0,1,107,-300
+0,1,-46,-4
+0,1,60,88
+0,1,-121,-80
+0,1,-106,18
+0,1,-94,38
+0,1,10,-46
+0,1,40,-62
+0,1,-71,50
+0,1,324,300
+0,1,-344,-94
+0,1,43,210
+0,1,206,109
+0,1,-80,283
+0,1,-148,-64
+0,1,230,1
+0,1,-230,41
+0,1,10,25
+0,1,62,48
+0,1,125,69
+0,1,137,36
+0,1,-132,52
+0,1,22,133
+0,1,174,0
+0,1,132,-103
+0,1,30,76
+0,1,132,108
+0,1,-84,-151
+0,1,156,221
+0,1,183,-262
+0,1,27,-97
+0,1,229,-18
+0,1,193,81
+0,1,27,-178
+0,1,87,50
+0,1,-337,123
+0,1,-15,-117
+0,1,192,201
+0,1,-12,-47
+0,1,-33,-86
+0,1,-37,-99
+0,1,-319,-160
+0,1,-63,-134
+0,1,-107,-74
+0,1,-275,-66
+0,1,-55,-111
+0,1,233,188
+0,1,78,-192
+0,1,-65,244
+0,1,-121,200
+0,1,-125,-224
+0,1,112,116
+0,1,357,-14
+0,1,249,20
+0,1,-87,132
+0,1,349,-136
+0,1,16,147
+0,1,-91,-285
+0,1,191,-216
+0,1,-27,-201
+0,1,74,311
+0,1,-293,-176
+0,1,22,120
+0,1,181,90
+0,1,41,5
+0,1,82,-72
+0,1,97,59
+0,1,-82,-65
+0,1,-166,-201
+0,1,151,210
+0,1,220,-47
+0,1,56,-46
+0,1,36,275
+0,1,151,143
+0,1,-22,-65
+0,1,292,-18
+0,1,-72,110
+0,1,-89,63
+0,1,437,-57
+0,1,59,-31
+0,1,74,-131
+0,1,-156,95
+0,1,-29,-174
+0,1,146,-42
+0,1,-190,-50
+0,1,-295,24
+0,1,-173,12
+0,1,-75,-15
+0,1,242,196
+0,1,-85,168
+0,1,-129,95
+0,1,-56,-1
+0,1,243,218
+0,1,109,-217
+0,1,105,-52
+0,1,280,6
+0,1,122,-145
+0,1,114,108
+0,1,-175,138
+0,1,120,20
+0,1,-74,88
+0,1,135,-174
+0,1,-143,-141
+0,1,169,-126
+0,1,68,79
+0,1,-21,-252
+0,1,226,-12
+0,1,188,157
+0,1,-135,-99
+0,1,-40,-244
+0,1,-239,-2
+0,1,-169,38
+0,1,-118,-150
+0,1,188,202
+0,1,-246,-118
+0,1,1,-126
+0,1,-124,187
+0,1,-124,-16
+0,1,14,103
+0,1,139,-8
+0,1,-15,18
+0,1,-101,30
+0,1,-259,-229
+0,1,172,-60
+0,1,167,-169
+0,1,-177,112
+0,1,-84,46
+0,1,-281,193
+0,1,171,36
+0,1,-41,139
+0,1,-101,-59
+0,1,2,-73
+0,1,-87,-58
+0,1,109,-20
+0,1,-134,53
+0,1,133,-159
+0,1,-196,-155
+0,1,-21,-19
+0,1,-69,30
+0,1,-190,71
+0,1,223,8
+0,1,-25,235
+0,1,-150,78
+0,1,78,182
+0,1,-47,109
+0,1,59,128
+0,1,14,-110
+0,1,80,115
+0,1,185,-148
+0,1,198,201
+0,1,370,85
+0,1,-18,-108
+0,1,-223,82
+0,1,174,17
+0,1,-86,178
+0,1,30,-75
+0,1,237,53
+0,1,7,-32
+0,1,247,-128
+0,1,-292,1
+0,1,139,144
+0,1,-42,-150
+0,1,302,-96
+0,1,97,-9
+0,1,-153,-16
+0,1,-158,-134
+0,1,33,-139
+0,1,-44,110
+0,1,-150,-49
+0,1,-87,-198
+0,1,206,-184
+0,1,102,-238
+0,1,393,11
+0,1,32,-133
+0,1,-40,-371
+0,1,186,9
+0,1,162,-364
+0,1,-19,124
+0,1,-34,-219
+0,1,161,14
+0,1,-101,195
+0,1,99,-63
+0,1,231,230
+0,1,-120,32
+0,1,172,-236
+0,1,-21,-159
+0,1,-7,-113
+0,1,-113,77
+0,1,217,-44
+0,1,113,9
+0,1,66,147
+0,1,-271,15
+0,1,201,-95
+0,1,186,30
+0,1,-116,-133
+0,1,-33,231
+0,1,-30,-9
+0,1,-139,-14
+0,1,-69,113
+0,1,33,-42
+0,1,-141,2
+0,1,64,46
+0,1,-223,225
+0,1,-49,-220
+0,1,47,-59
+0,1,-161,-120
+0,1,-121,-213
+0,1,-17,-138
+0,1,58,9
+0,1,-219,-129
+0,1,-5,-291
+0,1,64,30
+0,1,-121,221
+0,1,-22,-103
+0,1,175,73
+0,1,29,186
+0,1,82,99
+0,1,32,-114
+0,1,-178,-97
+0,1,34,-66
+0,1,136,94
+0,1,210,-45
+0,1,218,-53
+0,1,-326,-15
+0,1,-267,206
+0,1,-17,-134
+0,1,-8,-179
+0,1,-2,160
+0,1,-364,-188
+0,1,-108,186
+0,1,138,-142
+0,1,-127,2
+0,1,113,211
+0,1,-161,-47
+0,1,60,-79
+0,1,155,-191
+0,1,-300,84
+0,1,-73,82
+0,1,-7,163
+0,1,-9,50
+0,1,-44,-303
+0,1,-26,-185
+0,1,46,73
+0,1,195,-155
+0,1,163,8
+0,1,-105,-228
+0,1,-73,-197
+0,1,-150,18
+0,1,-14,152
+0,1,212,-339
+0,1,95,220
+0,1,65,183
+0,1,-10,0
+0,1,97,-50
+0,1,15,120
+0,1,150,144
+0,1,184,-101
+0,1,-169,-25
+0,1,114,-38
+0,1,-109,101
+0,1,354,129
+0,1,49,24
+0,1,-64,-232
+0,1,-56,-21
+0,1,-122,-66
+0,1,122,-169
+0,1,-12,-88
+0,1,23,13
+0,1,66,-16
+0,1,-104,-32
+0,1,13,58
+0,1,163,261
+0,1,94,110
+0,1,8,11
+0,1,72,-119
+0,1,-12,-10
+0,1,-188,-109
+0,1,-115,-247
+0,1,406,-224
+0,1,-71,-26
+0,1,75,-130
+0,1,25,54
+0,1,7,-233
+0,1,149,28
+0,1,-34,215
+0,1,269,-22
+0,1,-72,-256
+0,1,-112,-78
+0,1,76,36
+0,1,250,-10
+0,1,-37,-90
+0,1,0,-205
+0,1,228,111
+0,1,-126,-61
+0,1,-23,66
+0,1,250,41
+0,1,40,139
+0,1,146,-102
+0,1,-5,-48
+0,1,188,38
+0,1,-52,30
+0,1,179,-72
+0,1,-6,134
+0,1,118,-7
+0,1,44,66
+0,1,-78,59
+0,1,256,-28
+0,1,109,-58
+0,1,-156,-69
+0,1,342,16
+0,1,-28,390
+0,1,-264,62
+0,1,200,-285
+0,1,-116,161
+0,1,7,-45
+0,1,321,-88
+0,1,81,32
+0,1,100,143
+0,1,-255,-81
+0,1,68,165
+0,1,-37,206
+0,1,201,153
+0,1,31,84
+0,1,-143,49
+0,1,84,-123
+0,1,96,-44
+0,1,113,-201
+0,1,20,-232
+0,1,-230,259
+0,1,88,-185
+0,1,112,208
+0,1,-7,101
+0,1,29,52
+0,1,140,-25
+0,1,-23,63
+0,1,67,-57
+0,1,74,221
+0,1,36,72
+0,1,47,-97
+0,1,362,-158
+0,1,207,-85
+0,1,-405,-25
+0,1,-26,175
+0,1,-142,-85
+0,1,-101,41
+0,1,-323,45
+0,1,158,-74
+0,1,132,-24
+0,1,-213,-97
+0,1,-231,-99
+0,1,203,-232
+0,1,-239,41
+0,1,259,-131
+0,1,-47,318
+0,1,107,104
+0,1,-34,-9
+0,1,205,109
+0,1,109,-144
+0,1,13,-145
+0,1,-120,18
+0,1,224,167
+0,1,-51,-111
+0,1,58,-254
+0,1,-34,38
+0,1,-104,118
+0,1,222,365
+0,1,-28,-210
+0,1,-228,-23
+0,1,9,188
+0,1,100,245
+0,1,111,45
+0,1,53,161
+0,1,50,-218
+0,1,148,256
+0,1,-101,128
+0,1,79,-41
+0,1,-40,70
+0,1,56,86
+0,1,56,83
+0,1,-107,-142
+0,1,-99,-128
+0,1,-31,-124
+0,1,-151,-230
+0,1,-206,-106
+0,1,-237,-58
+0,1,-159,17
+0,1,-18,32
+0,1,251,358
+0,1,271,-48
+0,1,88,-204
+0,1,-116,205
+0,1,-176,-76
+0,1,-248,99
+0,1,119,-3
+0,1,-55,-117
+0,1,-46,-125
+0,1,-66,266
+0,1,-34,-43
+0,1,55,122
+0,1,-55,-52
+0,1,-80,-311
+0,1,90,-61
+0,1,85,-3
+0,1,-103,57
+0,1,103,71
+0,1,128,50
+0,1,19,-220
+0,1,23,125
+0,1,-144,172
+0,1,15,-228
+0,1,48,-309
+0,1,150,-9
+0,1,53,-32
+0,1,77,-65
+0,1,168,-134
+0,1,-223,-15
+0,1,113,-144
+0,1,51,-35
+0,1,-74,166
+0,1,176,-109
+0,1,-158,-68
+0,1,59,-214
+0,1,167,94
+0,1,-53,134
+0,1,6,-195
+0,1,-3,-52
+0,1,114,-30
+0,1,68,7
+0,1,71,12
+0,1,246,-150
+0,1,-34,-161
+0,1,9,-223
+0,1,173,34
+0,1,-188,-6
+0,1,-61,65
+0,1,-269,-154
+0,1,-115,-18
+0,1,104,43
+0,1,37,-192
+0,1,-198,165
+0,1,-96,80
+0,1,63,317
+0,1,-160,56
+0,1,-370,16
+0,1,92,-27
+0,1,-98,9
+0,1,-32,73
+0,1,-147,-219
+0,1,-180,-190
+0,1,-161,-191
+0,1,-140,-159
+0,1,55,174
+0,1,115,37
+0,1,-93,-17
+0,1,-89,-98
+0,1,-26,231
+0,1,59,73
+0,1,-22,-148
+0,1,-33,-94
+0,1,-137,185
+0,1,-167,-374
+0,1,-113,2
+0,1,-46,173
+0,1,55,-92
+0,1,-58,3
+0,1,-52,-71
+0,1,110,199
+0,1,-69,213
+0,1,244,-441
+0,1,41,107
+0,1,11,-127
+0,1,145,-172
+0,1,277,-72
+0,1,278,-109
+0,1,-1,8
+0,1,-170,125
+0,1,-56,130
+0,1,-56,-77
+0,1,187,-17
+0,1,-12,118
+0,1,126,-131
+0,1,-130,-415
+0,1,-13,56
+0,1,-78,188
+0,1,-190,-124
+0,1,116,-138
+0,1,109,-170
+0,1,108,-5
+0,1,366,200
+0,1,-221,-10
+0,1,126,-235
+0,1,-173,144
+0,1,191,286
+0,1,-162,-27
+0,1,-117,3
+0,1,-160,-238
+0,1,131,-31
+0,1,93,-31
+0,1,207,-36
+0,1,137,-207
+0,1,-111,175
+0,1,14,28
+0,1,-168,72
+0,1,-124,103
+0,1,-185,-252
+0,1,-77,-90
+0,1,187,71
+0,1,-12,-163
+0,1,-239,80
+0,1,9,5
+0,1,-191,-47
+0,1,5,-17
+0,1,98,31
+0,1,97,144
+0,1,14,266
+0,1,-181,-88
+0,1,-7,-93
+0,1,-200,-164
+0,1,48,324
+0,1,30,-192
+0,1,-138,-196
+0,1,-4,-186
+0,1,-17,54
+0,1,-129,131
+0,1,114,135
+0,1,87,99
+0,1,64,-22
+0,1,-82,30
+0,1,45,37
+0,1,-92,263
+0,1,-73,37
+0,1,-85,183
+0,1,122,87
+0,1,-194,-91
+0,1,-21,-403
+0,1,120,-130
+0,1,28,-143
+0,1,183,202
+0,1,130,216
+0,1,360,-125
+0,1,-134,277
+0,1,-47,10
+0,1,51,-55
+0,1,-119,-86
+0,1,7,-16
+0,1,283,-58
+0,1,-118,16
+0,1,-47,-38
+0,1,-213,-38
+0,1,130,-9
+0,1,-151,225
+0,1,-271,36
+0,1,87,29
+0,1,214,220
+0,1,56,70
+0,1,28,-182
+0,1,-103,69
+0,1,-260,6
+0,1,-128,-14
+0,1,-73,-87
+0,1,-53,47
+0,1,27,1
+0,1,-222,-24
+0,1,76,66
+0,1,-64,-26
+0,1,23,51
+0,1,-295,-179
+0,1,-81,-198
+0,1,-35,140
+0,1,-48,84
+0,1,-85,404
+0,1,239,284
+0,1,-155,-44
+0,1,71,-36
+0,1,82,77
+0,1,-38,-91
+0,1,-39,144
+0,1,-47,-23
+0,1,-150,131
+0,1,125,142
+0,1,-234,246
+0,1,-36,-131
+0,1,-53,57
+0,1,230,-32
+0,1,164,-30
+0,1,-80,-57
+0,1,55,-241
+0,1,-18,78
+0,1,-162,165
+0,1,-166,164
+0,1,57,74
+0,1,1,-215
+0,1,263,-86
+0,1,43,201
+0,1,234,93
+0,1,-197,109
+0,1,-176,-26
+0,1,-47,247
+0,1,-137,53
+0,1,33,-96
+0,1,-11,-93
+0,1,31,142
+0,1,-191,309
+0,1,65,125
+0,1,155,39
+0,1,1,-129
+0,1,44,127
+0,1,-139,-61
+0,1,128,-12
+0,1,250,-278
+0,1,127,305
+0,1,-199,117
+0,1,123,44
+0,1,218,-211
+0,1,-57,-178
+0,1,4,-76
+0,1,-372,173
+0,1,221,83
+0,1,310,-280
+0,1,-103,207
+0,1,130,-77
+0,1,-194,119
+0,1,-250,-31
+0,1,64,142
+0,1,211,-115
+0,1,-253,4
+0,1,-24,302
+0,1,73,-34
+0,1,154,-89
+0,1,0,-108
+0,1,314,140
+0,1,-157,22
+0,1,-141,122
+0,1,177,269
+0,1,297,-63
+0,1,-187,-170
+0,1,-217,-56
+0,1,44,-250
+0,1,-105,62
+0,1,92,-78
+0,1,202,30
+0,1,144,112
+0,1,-4,-212
+0,1,67,-9
+0,1,6,120
+0,1,183,-220
+0,1,-295,-154
+0,1,-167,-12
+0,1,162,285
+0,1,141,-36
+0,1,54,375
+0,1,108,-100
+0,1,220,129
+0,1,108,215
+0,1,31,399
+0,1,166,-76
+0,1,-301,48
+0,1,-52,-91
+0,1,-188,-39
+0,1,50,1
+0,1,-15,153
+0,1,-107,-149
+0,1,76,306
+0,1,-119,76
+0,1,-20,202
+0,1,43,-205
+0,1,-104,172
+0,1,0,152
+0,1,-131,-6
+0,1,-66,-58
+0,1,-62,119
+0,1,86,85
+0,1,84,-96
+0,1,-293,-91
+0,1,10,29
+0,1,73,-120
+0,1,-39,29
+0,1,-184,51
+0,1,224,63
+0,1,95,-44
+0,1,59,-68
+0,1,-11,-129
+0,1,145,-139
+0,1,-61,160
+0,1,108,206
+0,1,-101,165
+0,1,148,-61
+0,1,-345,-163
+0,1,-90,104
+0,1,167,28
+0,1,240,-171
+0,1,-39,-154
+0,1,138,-57
+0,1,287,24
+0,1,4,78
+0,1,-137,-37
+0,1,98,189
+0,1,-114,102
+0,1,206,-275
+0,1,232,288
+0,1,-136,-137
+0,1,13,-201
+0,1,185,19
+0,1,27,181
+0,1,33,-254
+0,1,13,193
+0,1,-277,-6
+0,1,112,94
+0,1,82,126
+0,1,103,-31
+0,1,-82,-91
+0,1,-30,31
+0,1,-36,11
+0,1,-97,-126
+0,1,-286,98
+0,1,-33,-135
+0,1,39,-150
+0,1,118,145
+0,1,-358,-121
+0,1,-89,257
+0,1,-75,104
+0,1,340,-124
+0,1,-50,-6
+0,1,-19,-219
+0,1,324,50
+0,1,-143,129
+0,1,70,176
+0,1,-110,142
+0,1,121,40
+0,1,108,-317
+0,1,-96,-44
+0,1,72,-78
+0,1,-13,65
+0,1,112,-105
+0,1,-173,-62
+0,1,85,141
+0,1,136,-72
+0,1,-110,159
+0,1,-423,-291
+0,1,54,-222
+0,1,9,-35
+0,1,247,132
+0,1,-21,-11
+0,1,-338,101
+0,1,130,101
+0,1,43,-61
+0,1,-96,-158
+0,1,-73,1
+0,1,9,-32
+0,1,-293,-173
+0,1,101,144
+0,1,113,-235
+0,1,-182,-188
+0,1,39,67
+0,1,-83,61
+0,1,-143,54
+0,1,-12,-229
+0,1,85,154
+0,1,237,-41
+0,1,-60,213
+0,1,81,-92
+0,1,10,347
+0,1,228,124
+0,1,-3,65
+0,1,202,243
+0,1,-171,208
+0,1,-71,141
+0,1,52,-31
+0,1,98,88
+0,1,-56,43
+0,1,-100,108
+0,1,23,-197
+0,1,-224,121
+0,1,-84,75
+0,1,225,-5
+0,1,79,284
+0,1,-52,143
+0,1,80,-138
+0,1,42,91
+0,1,-2,-24
+0,1,184,-96
+0,1,16,141
+0,1,61,-91
+0,1,10,-189
+0,1,-235,135
+0,1,66,-57
+0,1,186,-34
+0,1,152,45
+0,1,140,166
+0,1,-165,-19
+0,1,-98,220
+0,1,-56,-134
+0,1,-183,-40
+0,1,-195,-68
+0,1,248,55
+0,1,-13,-177
+0,1,-342,-187
+0,1,46,391
+0,1,-407,-112
+0,1,-147,115
+0,1,-196,44
+0,1,-242,25
+0,1,-42,108
+0,1,49,-171
+0,1,103,-72
+0,1,-31,64
+0,1,-242,168
+0,1,108,66
+0,1,-39,-59
+0,1,74,137
+0,1,-15,257
+0,1,-15,23
+0,1,-327,-54
+0,1,-109,-154
+0,1,-141,269
+0,1,-36,75
+0,1,19,-104
+0,1,131,-79
+0,1,23,190
+0,1,148,15
+0,1,-102,-242
+0,1,-45,195
+0,1,-192,-134
+0,1,166,-217
+0,1,-72,127
+0,1,6,-230
+0,1,142,-12
+0,1,-17,17
+0,1,41,76
+0,1,-107,48
+0,1,-48,60
+0,1,5,-32
+0,1,267,282
+0,1,-5,-16
+0,1,37,-8
+0,1,145,73
+0,1,160,127
+0,1,-183,202
+0,1,-108,63
+0,1,51,102
+0,1,126,3
+0,1,137,-63
+0,1,-123,-46
+0,1,142,-166
+0,1,95,-248
+0,1,61,221
+0,1,-119,-12
+0,1,-154,16
+0,1,-9,-82
+0,1,92,209
+0,1,-322,82
+0,1,-5,-53
+0,1,-84,-129
+0,1,151,55
+0,1,-83,140
+0,1,77,57
+0,1,-189,38
+0,1,-38,88
+0,1,14,-361
+0,1,-180,-1
+0,1,-119,-42
+0,1,176,153
+0,1,87,-126
+0,1,-3,112
+0,1,83,-166
+0,1,-28,-134
+0,1,112,50
+0,1,-218,118
+0,1,16,46
+0,1,-64,93
+0,1,71,-283
+0,1,-146,40
+0,1,273,223
+0,1,159,128
+0,1,-117,233
+0,1,-48,-12
+0,1,116,21
+0,1,28,223
+0,1,213,41
+0,1,-58,-67
+0,1,-124,-188
+0,1,-145,18
+0,1,-109,3
+0,1,-101,65
+0,1,17,62
+0,1,158,-92
+0,1,-66,91
+0,1,-60,-245
+0,1,29,104
+0,1,-71,-238
+0,1,112,-129
+0,1,100,70
+0,1,-317,-68
+0,1,-156,-88
+0,1,169,-174
+0,1,72,-23
+0,1,31,74
+0,1,-52,36
+0,1,-32,-27
+0,1,-91,34
+0,1,-111,243
+0,1,-14,102
+0,1,-7,-115
+0,1,-208,148
+0,1,65,116
+0,1,315,-108
+0,1,17,75
+0,1,-48,-67
+0,1,-48,-189
+0,1,-100,177
+0,1,-256,42
+0,1,24,16
+0,1,173,66
+0,1,-105,71
+0,1,65,-56
+0,1,-93,-38
+0,1,-199,30
+0,1,-52,38
+0,1,116,14
+0,1,-86,216
+0,1,371,328
+0,1,-91,-70
+0,1,117,102
+0,1,181,151
+0,1,265,-42
+0,1,-10,-166
+0,1,-174,23
+0,1,73,90
+0,1,-124,15
+0,1,-232,-58
+0,1,-48,107
+0,1,-271,166
+0,1,-10,-110
+0,1,-70,-86
+0,1,-213,-14
+0,1,-271,52
+0,1,28,-47
+0,1,76,249
+0,1,229,-64
+0,1,-106,-2
+0,1,191,234
+0,1,-20,75
+0,1,22,-100
+0,1,-30,12
+0,1,-116,-63
+0,1,127,59
+0,1,206,-120
+0,1,-328,-35
+0,1,35,-41
+0,1,-77,34
+0,1,149,-61
+0,1,-73,-220
+0,1,61,64
+0,1,179,42
+0,1,-28,-208
+0,1,-293,24
+0,1,45,172
+0,1,313,178
+0,1,68,11
+0,1,-108,-8
+0,1,30,291
+0,1,260,135
+0,1,103,-85
+0,1,-351,-63
+0,1,-228,-195
+0,1,-110,-79
+0,1,68,-1
+0,1,-14,-343
+0,1,311,64
+0,1,85,-84
+0,1,-57,7
+0,1,35,-106
+0,1,83,-47
+0,1,-268,-72
+0,1,125,52
+0,1,192,77
+0,1,-116,-46
+0,1,-117,-196
+0,1,-74,165
+0,1,125,-105
+0,1,-36,-64
+0,1,151,6
+0,1,-83,-37
+0,1,-171,-22
+0,1,-340,111
+0,1,-119,-173
+0,1,-134,-12
+0,1,-71,-191
+0,1,-147,100
+0,1,84,-58
+0,1,-49,14
+0,1,130,72
+0,1,245,72
+0,1,-1,-124
+0,1,-189,109
+0,1,63,66
+0,1,-6,256
+0,1,-58,-205
+0,1,-28,44
+0,1,-60,19
+0,1,-116,17
+0,1,175,153
+0,1,-104,-89
+0,1,-48,111
+0,1,-98,-9
+0,1,-199,7
+0,1,-94,-60
+0,1,52,92
+0,1,-74,-111
+0,1,-25,-53
+0,1,-206,-253
+0,1,3,30
+0,1,46,2
+0,1,-31,-78
+0,1,-123,139
+0,1,-158,3
+0,1,288,96
+0,1,-52,-343
+0,1,308,62
+0,1,-99,-23
+0,1,53,-48
+0,1,-98,118
+0,1,3,-196
+0,1,-136,-73
+0,1,171,-71
+0,1,122,82
+0,1,103,141
+0,1,50,64
+0,1,124,225
+0,1,-159,187
+0,1,-119,-24
+0,1,412,111
+0,1,184,-20
+0,1,112,259
+0,1,-10,238
+0,1,-162,222
+0,1,-163,-5
+0,1,109,-162
+0,1,89,-281
+0,1,-119,-5
+0,1,-50,72
+0,1,14,-147
+0,1,49,18
+0,1,80,-124
+0,1,-32,-317
+0,1,18,20
+0,1,246,21
+0,1,-204,1
+0,1,150,-96
+0,1,156,-15
+0,1,3,-92
+0,1,-90,44
+0,1,245,-208
+0,1,-47,-93
+0,1,-161,72
+0,1,18,146
+0,1,-89,200
+0,1,117,113
+0,1,34,141
+0,1,-16,-6
+0,1,-285,147
+0,1,-30,-212
+0,1,-191,162
+0,1,64,-68
+0,1,-24,2
+0,1,60,-4
+0,1,159,-123
+0,1,35,395
+0,1,277,-60
+0,1,302,-108
+0,1,28,-50
+0,1,75,100
+0,1,57,66
+0,1,108,-128
+0,1,71,-242
+0,1,185,-38
+0,1,16,-265
+0,1,-50,144
+0,1,-35,-1
+0,1,-6,154
+0,1,54,201
+0,1,87,53
+0,1,-361,-31
+0,1,-39,-120
+0,1,4,188
+0,1,188,-43
+0,1,30,72
+0,1,-26,210
+0,1,-212,-175
+0,1,-84,-34
+0,1,124,-118
+0,1,130,-170
+0,1,-302,114
+0,1,-62,-97
+0,1,51,189
+0,1,-15,53
+0,1,-159,-129
+0,1,-101,-6
+0,1,-174,335
+0,1,91,-121
+0,1,96,107
+0,1,13,153
+0,1,-116,-189
+0,1,107,-29
+0,1,342,75
+0,1,102,-23
+0,1,325,-60
+0,1,16,-78
+0,1,18,-75
+0,1,-30,120
+0,1,-29,154
+0,1,133,-193
+0,1,83,-110
+0,1,-47,126
+0,1,-46,-14
+0,1,-165,-195
+0,1,-20,-82
+0,1,146,275
+0,1,19,-55
+0,1,52,182
+0,1,85,9
+0,1,106,-154
+0,1,64,-20
+0,1,159,-112
+0,1,-98,17
+0,1,24,-218
+0,1,-20,-93
+0,1,-92,-172
+0,1,-151,134
+0,1,246,-100
+0,1,191,-196
+0,1,175,-19
+0,1,-45,-166
+0,1,343,80
+0,1,131,143
+0,1,45,-228
+0,1,125,58
+0,1,65,207
+0,1,21,261
+0,1,284,-82
+0,1,135,104
+0,1,64,7
+0,1,234,165
+0,1,-6,-190
+0,1,4,-97
+0,1,125,113
+0,1,-194,-234
+0,1,-124,305
+0,1,-152,-130
+0,1,-135,85
+0,1,351,-85
+0,1,-243,134
+0,1,-39,118
+0,1,-137,-6
+0,1,-314,147
+0,1,-165,-66
+0,1,-33,-72
+0,1,130,229
+0,1,137,132
+0,1,-305,-62
+0,1,-12,-176
+0,1,-57,-151
+0,1,6,20
+0,1,-107,-178
+0,1,-237,17
+0,1,61,28
+0,1,21,-166
+0,1,-6,227
+0,1,-281,-32
+0,1,-105,-19
+0,1,164,213
+0,1,19,-397
+0,1,8,-163
+0,1,55,-131
+0,1,168,60
+0,1,-208,1
+0,1,91,195
+0,1,139,-39
+0,1,2,127
+0,1,135,40
+0,1,-317,85
+0,1,-72,111
+0,1,45,124
+0,1,124,-6
+0,1,-26,-102
+0,1,128,25
+0,1,-103,41
+0,1,-148,2
+0,1,40,-208
+0,1,285,147
+0,1,-25,-63
+0,1,-165,-32
+0,1,26,-56
+0,1,134,66
+0,1,-16,-75
+0,1,-36,-1
+0,1,44,24
+0,1,164,7
+0,1,75,62
+0,1,-99,63
+0,1,-70,-64
+0,1,273,-122
+0,1,133,-85
+0,1,125,98
+0,1,148,117
+0,1,57,-49
+0,1,24,59
+0,1,78,-202
+0,1,-132,-76
+0,1,79,-16
+0,1,41,104
+0,1,12,-294
+0,1,91,-119
+0,1,9,-157
+0,1,131,-55
+0,1,19,-216
+0,1,-54,-176
+0,1,243,-77
+0,1,481,-25
+0,1,28,70
+0,1,46,-203
+0,1,59,26
+0,1,-63,-85
+0,1,-2,39
+0,1,29,177
+0,1,39,174
+0,1,-236,48
+0,1,-111,-242
+0,1,-88,92
+0,1,18,54
+0,1,131,-49
+0,1,128,-41
+0,1,142,225
+0,1,-11,-58
+0,1,-26,182
+0,1,94,-48
+0,1,-99,-91
+0,1,17,-107
+0,1,80,92
+0,1,258,43
+0,1,-140,-223
+0,1,-60,-105
+0,1,-133,142
+0,1,36,-173
+0,1,-95,-135
+0,1,-101,-104
+0,1,-4,55
+0,1,-36,-5
+0,1,-190,-239
+0,1,327,-264
+0,1,-121,-36
+0,1,-8,21
+0,1,-148,-325
+0,1,-196,-133
+0,1,-53,-292
+0,1,-199,39
+0,1,158,175
+0,1,140,85
+0,1,8,79
+0,1,-120,127
+0,1,362,-150
+0,1,279,70
+0,1,112,-262
+0,1,-176,74
+0,1,-74,-185
+0,1,50,-149
+0,1,-111,-75
+0,1,-102,-15
+0,1,96,162
+0,1,-72,20
+0,1,257,196
+0,1,-42,-95
+0,1,89,53
+0,1,31,57
+0,1,-89,208
+0,1,188,-28
+0,1,-32,-97
+0,1,204,63
+0,1,96,-6
+0,1,104,-86
+0,1,18,86
+0,1,0,21
+0,1,-146,-150
+0,1,83,83
+0,1,228,3
+0,1,-404,-278
+0,1,-106,56
+0,1,8,-151
+0,1,44,-6
+0,1,-18,-219
+0,1,100,-120
+0,1,-146,91
+0,1,126,10
+0,1,1,-151
+0,1,-142,116
+0,1,117,-254
+0,1,-55,97
+0,1,-49,245
+0,1,-261,-197
+0,1,-183,114
+0,1,212,105
+0,1,-104,-19
+0,1,179,202
+0,1,-76,65
+0,1,102,-35
+0,1,-68,68
+0,1,-256,1
+0,1,-162,-152
+0,1,66,299
+0,1,145,234
+0,1,108,135
+0,1,109,-153
+0,1,-48,189
+0,1,353,79
+0,1,130,-180
+0,1,192,249
+0,1,-73,183
+0,1,16,206
+0,1,-117,-6
+0,1,-74,159
+0,1,-76,267
+0,1,88,-255
+0,1,90,-196
+0,1,107,106
+0,1,329,-291
+0,1,-74,-208
+0,1,103,53
+0,1,98,-105
+0,1,142,-42
+0,1,52,-168
+0,1,86,190
+0,1,70,21
+0,1,-156,18
+0,1,-7,292
+0,1,-121,83
+0,1,142,200
+0,1,-4,-201
+0,1,-200,82
+0,1,-6,61
+0,1,-76,66
+0,1,266,-65
+0,1,-35,-29
+0,1,43,-154
+0,1,-99,82
+0,1,93,-103
+0,1,-315,-77
+0,1,-50,18
+0,1,-94,-42
+0,1,-66,101
+0,1,-88,85
+0,1,-1,-129
+0,1,-48,-83
+0,1,200,119
+0,1,116,185
+0,1,19,-261
+0,1,-143,-394
+0,1,24,-21
+0,1,-87,21
+0,1,189,-57
+0,1,82,-72
+0,1,133,108
+0,1,172,-54
+0,1,-137,23
+0,1,-4,-188
+0,1,-218,247
+0,1,-229,-86
+0,1,-15,59
+0,1,-20,150
+0,1,-40,93
+0,1,-264,129
+0,1,250,104
+0,1,86,-144
+0,1,-120,156
+0,1,77,-52
+0,1,-83,-17
+0,1,-97,-220
+0,1,-48,260
+0,1,536,213
+0,1,-159,130
+0,1,186,-20
+0,1,49,113
+0,1,-10,61
+0,1,320,-38
+0,1,22,162
+0,1,-310,58
+0,1,-13,-72
+0,1,13,208
+0,1,-7,8
+0,1,-14,111
+0,1,-152,17
+0,1,64,-60
+0,1,46,40
+0,1,-77,-117
+0,1,212,96
+0,1,-76,67
+0,1,68,32
+0,1,143,178
+0,1,187,10
+0,1,-212,-8
+0,1,79,-179
+0,1,13,-121
+0,1,-14,76
+0,1,11,267
+0,1,128,-86
+0,1,115,-426
+0,1,-44,122
+0,1,-39,40
+0,1,3,215
+0,1,-4,56
+0,1,-14,151
+0,1,-125,63
+0,1,-119,-88
+0,1,113,-91
+0,1,39,-170
+0,1,-134,-263
+0,1,-135,43
+0,1,161,10
+0,1,2,-8
+0,1,258,-92
+0,1,-94,-344
+0,1,-109,-95
+0,1,286,-58
+0,1,149,-116
+0,1,101,-160
+0,1,63,249
+0,1,-191,-79
+0,1,52,-70
+0,1,94,-79
+0,1,-9,-19
+0,1,-47,-172
+0,1,61,-120
+0,1,-57,110
+0,1,-54,-149
+0,1,-60,13
+0,1,162,-4
+0,1,151,23
+0,1,-96,14
+0,1,104,-4
+0,1,-85,-58
+0,1,-176,114
+0,1,194,-90
+0,1,16,63
+0,1,-76,-85
+0,1,-251,152
+0,1,-129,29
+0,1,32,-266
+0,1,-82,74
+0,1,7,172
+0,1,101,-261
+0,1,110,48
+0,1,-521,-5
+0,1,-197,-233
+0,1,-34,59
+0,1,214,97
+0,1,114,18
+0,1,-93,171
+0,1,272,-244
+0,1,128,66
+0,1,16,106
+0,1,148,112
+0,1,89,173
+0,1,143,-181
+0,1,-87,77
+0,1,61,125
+0,1,-69,-106
+0,1,56,-112
+0,1,-215,346
+0,1,-174,9
+0,1,-24,-233
+0,1,-203,-109
+0,1,-153,11
+0,1,-4,-17
+0,1,124,130
+0,1,201,-23
+0,1,-63,96
+0,1,-32,95
+0,1,32,139
+0,1,96,-13
+0,1,-274,49
+0,1,-225,-30
+0,1,43,-282
+0,1,142,-94
+0,1,225,216
+0,1,-30,235
+0,1,176,-31
+0,1,-235,-73
+0,1,-302,-22
+0,1,26,-194
+0,1,139,86
+0,1,-354,4
+0,1,-124,117
+0,1,55,16
+0,1,231,70
+0,1,281,228
+0,1,-100,107
+0,1,-186,-121
+0,1,-72,-62
+0,1,33,-171
+0,1,48,-97
+0,1,226,-83
+0,1,126,45
+0,1,-136,179
+0,1,-267,89
+0,1,144,25
+0,1,-103,15
+0,1,54,251
+0,1,106,65
+0,1,85,88
+0,1,-42,141
+0,1,329,79
+0,1,-149,217
+0,1,-43,0
+0,1,-242,31
+0,1,66,-73
+0,1,45,16
+0,1,-84,23
+0,1,72,-215
+0,1,-86,1
+0,1,-68,-126
+0,1,61,-141
+0,1,-263,-142
+0,1,55,-11
+0,1,102,55
+0,1,-278,-194
+0,1,-206,-302
+0,1,192,98
+0,1,365,-151
+0,1,-73,-229
+0,1,129,-19
+0,1,134,-18
+0,1,115,5
+0,1,25,199
+0,1,109,-94
+0,1,425,-4
+0,1,-200,-136
+0,1,9,92
+0,1,-3,-188
+0,1,215,311
+0,1,1,-20
+0,1,-114,126
+0,1,-11,-152
+0,1,-248,-108
+0,1,-32,-185
+0,1,226,-132
+0,1,-151,-58
+0,1,-78,36
+0,1,86,-86
+0,1,52,332
+0,1,173,76
+0,1,-184,89
+0,1,145,156
+0,1,-152,-134
+0,1,91,-329
+0,1,177,342
+0,1,46,199
+0,1,-171,60
+0,1,-167,-65
+0,1,-108,-99
+0,1,-210,-202
+0,1,144,61
+0,1,-15,169
+0,1,181,-26
+0,1,34,-162
+0,1,153,-106
+0,1,-209,139
+0,1,46,-20
+0,1,152,41
+0,1,-175,-68
+0,1,-18,-148
+0,1,-136,-155
+0,1,-100,160
+0,1,-58,68
+0,1,-295,-155
+0,1,57,-72
+0,1,84,6
+0,1,86,94
+0,1,-62,218
+0,1,-23,78
+0,1,-128,49
+0,1,25,124
+0,1,46,348
+0,1,68,-13
+0,1,-46,70
+0,1,194,-79
+0,1,-261,-102
+0,1,-186,-228
+0,1,-15,251
+0,1,54,11
+0,1,31,353
+0,1,45,-212
+0,1,-174,-1
+0,1,37,-133
+0,1,123,-83
+0,1,266,139
+0,1,32,-33
+0,1,117,-260
+0,1,-72,-194
+0,1,27,4
+0,1,-149,-291
+0,1,-114,17
+0,1,-120,10
+0,1,-3,76
+0,1,-120,126
+0,1,-69,92
+0,1,-334,-85
+0,1,-112,-232
+0,1,98,-51
+0,1,-118,122
+0,1,-35,162
+0,1,-188,135
+0,1,66,-104
+0,1,119,-117
+0,1,159,-131
+0,1,129,-139
+0,1,318,94
+0,1,-3,120
+0,1,200,256
+0,1,77,3
+0,1,-260,8
+0,1,236,95
+0,1,-57,80
+0,1,-182,-188
+0,1,78,-26
+0,1,-157,70
+0,1,-67,-44
+0,1,81,-110
+0,1,-141,131
+0,1,-191,53
+0,1,-96,-109
+0,1,165,-136
+0,1,-171,94
+0,1,-114,59
+0,1,337,-21
+0,1,-114,14
+0,1,106,-50
+0,1,-26,229
+0,1,-8,-1
+0,1,74,68
+0,1,-90,5
+0,1,-123,247
+0,1,-3,95
+0,1,-20,-27
+0,1,-126,71
+0,1,123,109
+0,1,114,-206
+0,1,-90,258
+0,1,-127,-46
+0,1,136,120
+0,1,-63,63
+0,1,-132,-135
+0,1,-71,-88
+0,1,96,-67
+0,1,-102,-17
+0,1,248,26
+0,1,69,-208
+0,1,188,-81
+0,1,-9,-78
+0,1,46,76
+0,1,63,-47
+0,1,48,-210
+0,1,-19,-171
+0,1,-227,307
+0,1,-64,-65
+0,1,275,-178
+0,1,112,277
+0,1,-14,184
+0,1,17,-200
+0,1,-25,-25
+0,1,144,28
+0,1,174,-31
+0,1,54,101
+0,1,-116,-82
+0,1,-129,-4
+0,1,18,133
+0,1,-205,6
+0,1,-174,274
+0,1,-13,198
+0,1,199,-108
+0,1,-172,293
+0,1,157,-156
+0,1,-165,-168
+0,1,61,-34
+0,1,-169,-44
+0,1,134,-56
+0,1,-91,68
+0,1,23,458
+0,1,-63,29
+0,1,-211,116
+0,1,-46,-32
+0,1,89,44
+0,1,209,136
+0,1,62,82
+0,1,328,-105
+0,1,-87,69
+0,1,19,-269
+0,1,123,70
+0,1,-58,-62
+0,1,136,-252
+0,1,-126,255
+0,1,48,42
+0,1,15,66
+0,1,124,82
+0,1,-29,-42
+0,1,128,130
+0,1,-100,-188
+0,1,-102,-121
+0,1,-31,129
+0,1,132,-16
+0,1,89,-60
+0,1,-19,-39
+0,1,-21,-266
+0,1,-265,-311
+0,1,-16,48
+0,1,268,-77
+0,1,-6,-172
+0,1,-19,116
+0,1,-61,284
+0,1,81,66
+0,1,30,160
+0,1,28,161
+0,1,151,-173
+0,1,-202,141
+0,1,16,201
+0,1,31,27
+0,1,-198,140
+0,1,123,174
+0,1,-149,54
+0,1,132,48
+0,1,38,118
+0,1,-142,-198
+0,1,94,42
+0,1,140,-308
+0,1,154,-79
+0,1,78,127
+0,1,0,94
+0,1,-122,108
+0,1,64,93
+0,1,256,-82
+0,1,4,62
+0,1,59,48
+0,1,247,-172
+0,1,-54,308
+0,1,-200,90
+0,1,253,70
+0,1,-39,-28
+0,1,191,36
+0,1,136,-8
+0,1,8,-200
+0,1,-87,-74
+0,1,120,-198
+0,1,-116,-58
+0,1,205,-61
+0,1,55,-51
+0,1,110,-112
+0,1,-170,22
+0,1,130,-229
+0,1,-90,-93
+0,1,-33,-166
+0,1,83,132
+0,1,72,78
+0,1,101,-106
+0,1,-98,-133
+0,1,-76,-146
+0,1,-86,6
+0,1,38,209
+0,1,176,-169
+0,1,-220,-5
+0,1,-156,-74
+0,1,191,-127
+0,1,6,14
+0,1,-264,92
+0,1,-95,216
+0,1,-181,161
+0,1,173,-116
+0,1,-8,95
+0,1,536,5
+0,1,-275,177
+0,1,88,-97
+0,1,-27,28
+0,1,208,122
+0,1,-19,60
+0,1,-116,202
+0,1,-14,-132
+0,1,-154,40
+0,1,-55,35
+0,1,-107,-180
+0,1,19,-118
+0,1,-52,-52
+0,1,299,-138
+0,1,172,153
+0,1,61,29
+0,1,22,-68
+0,1,233,127
+0,1,126,47
+0,1,-72,157
+0,1,-73,151
+0,1,253,77
+0,1,32,-104
+0,1,303,317
+0,1,169,-179
+0,1,-8,-31
+0,1,-38,-319
+0,1,-73,-78
+0,1,-121,-108
+0,1,-9,47
+0,1,-45,-18
+0,1,21,-71
+0,1,-10,-127
+0,1,-300,-64
+0,1,-111,89
+0,1,62,113
+0,1,176,37
+0,1,-7,-12
+0,1,-36,0
+0,1,-16,-48
+0,1,-165,-205
+0,1,119,175
+0,1,58,83
+0,1,103,-98
+0,1,321,-25
+0,1,190,-178
+0,1,310,26
+0,1,123,-48
+0,1,-180,226
+0,1,173,-130
+0,1,-37,74
+0,1,-80,16
+0,1,222,8
+0,1,-58,-16
+0,1,-51,307
+0,1,119,389
+0,1,-6,-116
+0,1,275,-181
+0,1,-203,185
+0,1,160,-40
+0,1,48,-9
+0,1,46,-54
+0,1,14,-14
+0,1,4,40
+0,1,168,-126
+0,1,-22,-240
+0,1,-182,-118
+0,1,-232,-165
+0,1,83,-66
+0,1,49,-167
+0,1,156,-93
+0,1,-72,-115
+0,1,-120,-14
+0,1,-72,-41
+0,1,97,98
+0,1,-183,348
+0,1,-312,249
+0,1,192,-25
+0,1,-62,19
+0,1,250,239
+0,1,-46,33
+0,1,-2,-186
+0,1,-120,247
+0,1,229,78
+0,1,11,277
+0,1,-319,-256
+0,1,-124,-135
+0,1,-158,147
+0,1,-155,-62
+0,1,-45,52
+0,1,-13,92
+0,1,-204,92
+0,1,-94,-38
+0,1,20,-107
+0,1,38,122
+0,1,145,-166
+0,1,143,98
+0,1,-26,84
+0,1,-132,-160
+0,1,-22,-365
+0,1,-109,35
+0,1,-66,-111
+0,1,245,-49
+0,1,230,-105
+0,1,-28,77
+0,1,53,-45
+0,1,136,-68
+0,1,-49,-129
+0,1,45,-126
+0,1,144,177
+0,1,1,141
+0,1,92,-202
+0,1,290,261
+0,1,-38,-394
+0,1,-155,-67
+0,1,-13,131
+0,1,285,198
+0,1,-242,215
+0,1,186,35
+0,1,-116,34
+0,1,-264,132
+0,1,39,16
+0,1,9,10
+0,1,-172,-353
+0,1,61,311
+0,1,36,-86
+0,1,-82,-56
+0,1,-160,-57
+0,1,182,204
+0,1,54,50
+0,1,-40,75
+0,1,-20,-48
+0,1,-33,-91
+0,1,149,50
+0,1,115,162
+0,1,-180,-197
+0,1,-117,-60
+0,1,-226,210
+0,1,70,-85
+0,1,-156,-91
+0,1,-110,-45
+0,1,-87,-127
+0,1,-243,-62
+0,1,-5,-250
+0,1,25,272
+0,1,59,-50
+0,1,-208,260
+0,1,-209,160
+0,1,-130,86
+0,1,341,184
+0,1,-110,-140
+0,1,-27,255
+0,1,64,-206
+0,1,154,-72
+0,1,-130,-67
+0,1,110,-137
+0,1,328,5
+0,1,-171,45
+0,1,-37,139
+0,1,152,-29
+0,1,-134,-17
+0,1,34,-302
+0,1,-65,-220
+0,1,-88,-286
+0,1,-136,174
+0,1,25,130
+0,1,-6,-122
+0,1,300,-152
+0,1,19,-18
+0,1,-62,304
+0,1,67,206
+0,1,-29,-58
+0,1,176,-33
+0,1,463,68
+0,1,122,84
+0,1,6,-218
+0,1,103,-58
+0,1,-170,-138
+0,1,-62,215
+0,1,367,107
+0,1,69,94
+0,1,-145,-10
+0,1,-38,107
+0,1,-191,-121
+0,1,25,-43
+0,1,-234,220
+0,1,-94,-2
+0,1,188,109
+0,1,203,-66
+0,1,-125,-55
+0,1,-81,-20
+0,1,-73,52
+0,1,344,-147
+0,1,-175,87
+0,1,8,127
+0,1,-308,48
+0,1,-205,-292
+0,1,-133,82
+0,1,-23,9
+0,1,208,144
+0,1,-126,49
+0,1,50,-21
+0,1,262,-26
+0,1,305,30
+0,1,306,-68
+0,1,59,162
+0,1,-97,-96
+0,1,-215,81
+0,1,273,-344
+0,1,82,-240
+0,1,253,-163
+0,1,-189,18
+0,1,2,-188
+0,1,163,-212
+0,1,-5,183
+0,1,32,80
+0,1,83,-42
+0,1,-208,28
+0,1,-160,-120
+0,1,24,-177
+0,1,-185,-97
+0,1,227,-240
+0,1,-24,15
+0,1,72,13
+0,1,360,-144
+0,1,-262,11
+0,1,-54,-93
+0,1,320,-226
+0,1,209,45
+0,1,203,146
+0,1,-237,214
+0,1,34,-115
+0,1,121,-130
+0,1,43,-189
+0,1,116,-321
+0,1,278,342
+0,1,245,-33
+0,1,-92,-75
+0,1,-181,-176
+0,1,-47,2
+0,1,91,-144
+0,1,46,-57
+0,1,-22,-215
+0,1,-71,131
+0,1,125,87
+0,1,-14,-69
+0,1,72,-248
+0,1,97,-138
+0,1,59,-189
+0,1,-68,-46
+0,1,-94,298
+0,1,136,89
+0,1,-43,-325
+0,1,-404,-84
+0,1,148,10
+0,1,-78,-157
+0,1,260,92
+0,1,-113,11
+0,1,24,-135
+0,1,-133,-275
+0,1,-65,125
+0,1,59,-15
+0,1,292,-77
+0,1,-223,-163
+0,1,90,120
+0,1,208,52
+0,1,164,-150
+0,1,582,46
+0,1,37,21
+0,1,-146,148
+0,1,-11,-177
+0,1,-179,62
+0,1,-364,-72
+0,1,20,-85
+0,1,-283,19
+0,1,130,-13
+0,1,97,-57
+0,1,-384,-168
+0,1,-216,157
+0,1,78,-72
+0,1,151,-57
+0,1,-4,84
+0,1,273,-390
+0,1,-256,102
+0,1,-66,59
+0,1,-33,-148
+0,1,-146,-71
+0,1,165,97
+0,1,150,113
+0,1,95,196
+0,1,-114,-55
+0,1,-195,7
+0,1,-240,113
+0,1,-77,-183
+0,1,56,218
+0,1,-82,72
+0,1,-15,123
+0,1,-58,22
+0,1,28,-51
+0,1,74,319
+0,1,-64,-47
+0,1,-205,92
+0,1,28,19
+0,1,8,298
+0,1,176,-227
+0,1,119,-158
+0,1,-45,-52
+0,1,25,278
+0,1,132,146
+0,1,-59,-159
+0,1,72,98
+0,1,-281,-42
+0,1,-143,50
+0,1,108,320
+0,1,-169,185
+0,1,-80,87
+0,1,41,174
+0,1,-245,105
+0,1,-111,247
+0,1,-53,-219
+0,1,54,-11
+0,1,-262,-193
+0,1,50,16
+0,1,296,-185
+0,1,125,68
+0,1,-125,145
+0,1,115,142
+0,1,21,-65
+0,1,53,-75
+0,1,-15,-15
+0,1,171,110
+0,1,-139,232
+0,1,7,246
+0,1,-87,96
+0,1,-21,-114
+0,1,102,-200
+0,1,-335,138
+0,1,-26,87
+0,1,-162,-56
+0,1,19,-33
+0,1,28,214
+0,1,-218,-175
+0,1,128,-72
+0,1,99,295
+0,1,-339,316
+0,1,-138,110
+0,1,222,119
+0,1,182,-68
+0,1,-5,57
+0,1,-16,57
+0,1,-99,183
+0,1,-8,-17
+0,1,-41,-184
+0,1,105,10
+0,1,-83,-237
+0,1,-300,107
+0,1,156,-196
+0,1,-126,293
+0,1,-53,40
+0,1,-59,-72
+0,1,12,204
+0,1,124,18
+0,1,-76,101
+0,1,18,-12
+0,1,15,-125
+0,1,62,117
+0,1,280,-70
+0,1,58,73
+0,1,33,-276
+0,1,64,-49
+0,1,156,85
+0,1,151,126
+0,1,-232,-274
+0,1,-161,-97
+0,1,58,-204
+0,1,18,-18
+0,1,15,92
+0,1,77,36
+0,1,15,99
+0,1,-89,-19
+0,1,-123,70
+0,1,250,260
+0,1,140,-71
+0,1,88,30
+0,1,49,100
+0,1,164,-140
+0,1,-19,125
+0,1,151,-22
+0,1,-166,138
+0,1,-359,39
+0,1,-86,160
+0,1,369,192
+0,1,71,-31
+0,1,-98,-90
+0,1,9,-100
+0,1,88,14
+0,1,89,-147
+0,1,-192,96
+0,1,-342,73
+0,1,-6,-68
+0,1,240,23
+0,1,-250,-96
+0,1,66,-17
+0,1,-137,16
+0,1,-14,58
+0,1,-75,105
+0,1,-56,129
+0,1,-269,89
+0,1,-98,208
+0,1,362,-132
+0,1,147,-81
+0,1,17,-267
+0,1,-99,-46
+0,1,142,-19
+0,1,140,-45
+0,1,3,28
+0,1,192,65
+0,1,168,-84
+0,1,51,187
+0,1,-200,-164
+0,1,54,-34
+0,1,185,118
+0,1,-73,156
+0,1,99,182
+0,1,-142,288
+0,1,-112,174
+0,1,46,120
+0,1,-135,-32
+0,1,60,138
+0,1,-165,-100
+0,1,-48,106
+0,1,-131,-33
+0,1,-67,-100
+0,1,-177,-125
+0,1,114,-66
+0,1,-79,142
+0,1,-44,95
+0,1,-147,97
+0,1,148,-33
+0,1,290,-168
+0,1,86,-93
+0,1,176,68
+0,1,-46,450
+0,1,-50,66
+0,1,251,20
+0,1,-154,141
+0,1,127,112
+0,1,202,199
+0,1,112,-27
+0,1,130,-26
+0,1,183,22
+0,1,-79,58
+0,1,314,-223
+0,1,324,-35
+0,1,-68,-110
+0,1,84,-20
+0,1,-253,306
+0,1,-261,-39
+0,1,-2,-217
+0,1,-44,40
+0,1,-34,17
+0,1,-277,85
+0,1,94,-60
+0,1,23,52
+0,1,91,269
+0,1,130,170
+0,1,15,284
+0,1,-130,290
+0,1,-135,84
+0,1,196,-79
+0,1,-283,-78
+0,1,99,-281
+0,1,-20,-78
+0,1,-104,48
+0,1,102,156
+0,1,244,71
+0,1,-102,-145
+0,1,55,205
+0,1,132,-286
+0,1,-153,134
+0,1,168,-192
+0,1,42,-88
+0,1,-22,-42
+0,1,23,-63
+0,1,-82,100
+0,1,-127,116
+0,1,6,-181
+0,1,-56,296
+0,1,194,-25
+0,1,-222,243
+0,1,48,-240
+0,1,130,98
+0,1,-80,-140
+0,1,18,-10
+0,1,-128,-24
+0,1,52,2
+0,1,-115,53
+0,1,228,-170
+0,1,-20,240
+0,1,-72,10
+0,1,66,-31
+0,1,219,-95
+0,1,-32,59
+0,1,-24,-89
+0,1,-33,160
+0,1,256,-133
+0,1,59,-192
+0,1,-70,-18
+0,1,-12,59
+0,1,88,149
+0,1,-119,-167
+0,1,-17,-47
+0,1,-62,160
+0,1,93,-8
+0,1,-4,-68
+0,1,-42,135
+0,1,-315,-19
+0,1,-99,5
+0,1,24,77
+0,1,-127,198
+0,1,-103,26
+0,1,-182,-31
+0,1,-78,-150
+0,1,-118,109
+0,1,-237,-115
+0,1,170,-107
+0,1,-164,-184
+0,1,259,62
+0,1,-76,-51
+0,1,-100,-161
+0,1,134,-87
+0,1,-77,-29
+0,1,-102,-4
+0,1,182,-94
+0,1,-34,285
+0,1,226,180
+0,1,237,-10
+0,1,-209,102
+0,1,115,-203
+0,1,45,127
+0,1,-99,-81
+0,1,262,165
+0,1,101,-86
+0,1,-184,-157
+0,1,12,-164
+0,1,242,-49
+0,1,11,150
+0,1,-160,120
+0,1,283,-25
+0,1,57,-44
+0,1,81,96
+0,1,-118,-122
+0,1,49,-10
+0,1,28,142
+0,1,-69,-130
+0,1,-270,140
+0,1,20,-67
+0,1,-89,-27
+0,1,345,-22
+0,1,272,-25
+0,1,167,-92
+0,1,49,-25
+0,1,9,112
+0,1,-115,112
+0,1,87,0
+0,1,91,-84
+0,1,51,-75
+0,1,-128,181
+0,1,86,-45
+0,1,-178,-406
+0,1,60,234
+0,1,-131,-25
+0,1,47,169
+0,1,-119,-13
+0,1,75,181
+0,1,-120,102
+0,1,-293,222
+0,1,361,88
+0,1,-184,-301
+0,1,-86,-159
+0,1,35,-2
+0,1,-145,23
+0,1,-176,37
+0,1,83,-75
+0,1,206,-1
+0,1,-24,-112
+0,1,77,54
+0,1,-92,108
+0,1,0,20
+0,1,-44,272
+0,1,156,168
+0,1,-36,-127
+0,1,-41,281
+0,1,-45,117
+0,1,44,-70
+0,1,-134,130
+0,1,173,-40
+0,1,151,-96
+0,1,54,120
+0,1,-228,-115
+0,1,-214,-13
+0,1,120,-78
+0,1,386,202
+0,1,-31,268
+0,1,-161,-48
+0,1,-86,-70
+0,1,-118,-38
+0,1,113,84
+0,1,-81,22
+0,1,-54,-57
+0,1,-243,-68
+0,1,257,11
+0,1,-46,47
+0,1,98,-44
+0,1,-130,-12
+0,1,29,186
+0,1,36,-110
+0,1,9,-351
+0,1,-154,81
+0,1,0,-234
+0,1,-200,105
+0,1,-99,100
+0,1,60,-117
+0,1,176,35
+0,1,-5,162
+0,1,-135,200
+0,1,-80,232
+0,1,180,-128
+0,1,61,-366
+0,1,-134,246
+0,1,217,-133
+0,1,-135,-25
+0,1,-282,117
+0,1,-1,42
+0,1,1,-25
+0,1,17,74
+0,1,104,-202
+0,1,-62,121
+0,1,-160,203
+0,1,-120,288
+0,1,-140,-31
+0,1,91,-23
+0,1,30,-171
+0,1,87,106
+0,1,83,44
+0,1,72,144
+0,1,35,260
+0,1,108,106
+0,1,-16,27
+0,1,-272,258
+0,1,-21,-72
+0,1,-93,-40
+0,1,175,-92
+0,1,121,-143
+0,1,58,281
+0,1,-82,200
+0,1,-11,110
+0,1,-78,37
+0,1,209,30
+0,1,-57,-60
+0,1,-171,9
+0,1,-81,38
+0,1,50,8
+0,1,153,124
+0,1,170,-22
+0,1,-1,-71
+0,1,143,-154
+0,1,104,18
+0,1,-217,-143
+0,1,29,33
+0,1,-29,181
+0,1,-210,-53
+0,1,90,68
+0,1,274,19
+0,1,-181,-264
+0,1,-41,-227
+0,1,78,-124
+0,1,-147,54
+0,1,6,32
+0,1,65,26
+0,1,-265,3
+0,1,64,-282
+0,1,136,-85
+0,1,-263,65
+0,1,9,-33
+0,1,141,-83
+0,1,-215,-51
+0,1,-92,-2
+0,1,-128,152
+0,1,-183,-24
+0,1,76,-260
+0,1,-155,136
+0,1,-120,-62
+0,1,-470,-65
+0,1,38,60
+0,1,153,-193
+0,1,-130,-90
+0,1,52,-96
+0,1,-344,187
+0,1,-53,3
+0,1,-88,-69
+0,1,67,23
+0,1,-64,136
+0,1,119,152
+0,1,146,141
+0,1,106,86
+0,1,-16,-106
+0,1,-63,-93
+0,1,65,-106
+0,1,73,178
+0,1,279,-79
+0,1,-126,227
+0,1,-135,47
+0,1,-145,252
+0,1,-117,-181
+0,1,-139,103
+0,1,-142,-14
+0,1,-16,12
+0,1,46,-48
+0,1,-62,207
+0,1,327,-366
+0,1,185,161
+0,1,-71,-201
+0,1,-183,128
+0,1,-34,43
+0,1,150,59
+0,1,-100,-64
+0,1,-38,103
+0,1,211,70
+0,1,-38,27
+0,1,51,-126
+0,1,-182,183
+0,1,286,-144
+0,1,-19,136
+0,1,-134,-73
+0,1,-133,-56
+0,1,-14,-67
+0,1,288,-196
+0,1,91,-106
+0,1,-147,64
+0,1,32,65
+0,1,-52,-280
+0,1,-186,50
+0,1,232,-38
+0,1,129,196
+0,1,44,-77
+0,1,-269,112
+0,1,133,117
+0,1,35,-94
+0,1,-252,11
+0,1,38,-145
+0,1,47,239
+0,1,96,-151
+0,1,-359,106
+0,1,7,1
+0,1,-229,55
+0,1,395,-52
+0,1,219,242
+0,1,-46,-140
+0,1,-59,-116
+0,1,17,36
+0,1,24,185
+0,1,-93,23
+0,1,-68,-154
+0,1,-106,-128
+0,1,-115,-8
+0,1,67,215
+0,1,-155,145
+0,1,77,-23
+0,1,-132,-96
+0,1,-49,15
+0,1,-90,115
+0,1,133,127
+0,1,-19,132
+0,1,181,55
+0,1,-133,-41
+0,1,-21,-90
+0,1,267,39
+0,1,159,111
+0,1,198,15
+0,1,-263,-29
+0,1,120,10
+0,1,-20,-58
+0,1,-135,214
+0,1,-126,-169
+0,1,-122,103
+0,1,253,-6
+0,1,-102,-148
+0,1,144,191
+0,1,94,138
+0,1,-25,228
+0,1,-55,60
+0,1,177,-105
+0,1,-3,-17
+0,1,-130,48
+0,1,130,136
+0,1,-68,-49
+0,1,-99,238
+0,1,145,21
+0,1,48,-107
+0,1,-40,-82
+0,1,-76,-190
+0,1,92,-58
+0,1,-28,-189
+0,1,-242,-177
+0,1,180,-174
+0,1,-131,-58
+0,1,186,253
+0,1,-257,-104
+0,1,7,-81
+0,1,-98,24
+0,1,-146,-206
+0,1,358,74
+0,1,57,161
+0,1,66,-205
+0,1,-259,34
+0,1,-143,-8
+0,1,301,3
+0,1,98,-147
+0,1,9,230
+0,1,-19,-240
+0,1,43,-149
+0,1,-149,-179
+0,1,-30,-129
+0,1,-431,208
+0,1,-167,136
+0,1,14,276
+0,1,-148,-196
+0,1,88,-50
+0,1,-134,-551
+0,1,61,-24
+0,1,-46,-40
+0,1,248,128
+0,1,144,-32
+0,1,-63,-77
+0,1,38,246
+0,1,-60,184
+0,1,198,105
+0,1,-201,-31
+0,1,6,32
+0,1,-156,-135
+0,1,-27,128
+0,1,-87,109
+0,1,-84,-85
+0,1,108,60
+0,1,139,-57
+0,1,-47,41
+0,1,-48,24
+0,1,-30,90
+0,1,91,-50
+0,1,-107,56
+0,1,-16,174
+0,1,-90,46
+0,1,-199,62
+0,1,-55,39
+0,1,243,-184
+0,1,-152,-168
+0,1,-200,144
+0,1,-96,41
+0,1,-35,144
+0,1,2,-11
+0,1,-66,-222
+0,1,-146,-141
+0,1,199,48
+0,1,-22,-2
+0,1,114,257
+0,1,3,-243
+0,1,33,-48
+0,1,4,27
+0,1,-42,-139
+0,1,-102,-304
+0,1,-81,97
+0,1,223,-58
+0,1,103,56
+0,1,-158,-90
+0,1,134,-274
+0,1,-12,109
+0,1,-35,71
+0,1,-166,-2
+0,1,-36,148
+0,1,92,255
+0,1,-18,-184
+0,1,-107,261
+0,1,-51,-84
+0,1,-219,-5
+0,1,101,-94
+0,1,-183,118
+0,1,-303,-118
+0,1,14,185
+0,1,-88,-176
+0,1,-84,59
+0,1,-118,-86
+0,1,-52,-214
+0,1,121,441
+0,1,-322,215
+0,1,-98,-146
+0,1,-6,-111
+0,1,-64,22
+0,1,-127,120
+0,1,-318,62
+0,1,155,75
+0,1,248,-84
+0,1,69,61
+0,1,-306,-77
+0,1,-59,-123
+0,1,33,66
+0,1,-92,-327
+0,1,122,41
+0,1,50,140
+0,1,144,17
+0,1,133,-263
+0,1,38,60
+0,1,-88,-119
+0,1,-226,84
+0,1,250,-6
+0,1,-118,-185
+0,1,48,196
+0,1,-83,204
+0,1,-197,-171
+0,1,-47,104
+0,1,258,-13
+0,1,-17,2
+0,1,100,149
+0,1,-131,21
+0,1,250,-240
+0,1,-75,120
+0,1,88,-130
+0,1,218,-96
+0,1,364,-207
+0,1,257,-112
+0,1,109,-241
+0,1,-76,65
+0,1,-38,95
+0,1,225,29
+0,1,-98,-145
+0,1,-249,-45
+0,1,48,-355
+0,1,-10,-82
+0,1,-47,8
+0,1,162,10
+0,1,-157,-315
+0,1,-90,-89
+0,1,-96,-6
+0,1,135,-48
+0,1,-7,165
+0,1,163,98
+0,1,-156,36
+0,1,-38,-28
+0,1,45,35
+0,1,-9,218
+0,1,97,-328
+0,1,197,253
+0,1,254,112
+0,1,-98,-58
+0,1,-184,-117
+0,1,110,146
+0,1,0,-238
+0,1,-24,-99
+0,1,74,-29
+0,1,315,385
+0,1,318,-103
+0,1,-100,-2
+0,1,314,202
+0,1,-50,18
+0,1,13,197
+0,1,-80,-161
+0,1,97,118
+0,1,-106,-118
+0,1,-175,-49
+0,1,150,-143
+0,1,282,2
+0,1,136,269
+0,1,-4,0
+0,1,174,-73
+0,1,-48,-178
+0,1,-169,-205
+0,1,-190,-67
+0,1,-520,51
+0,1,-312,71
+0,1,-14,-36
+0,1,-164,86
+0,1,-131,141
+0,1,151,26
+0,1,-46,43
+0,1,27,13
+0,1,15,164
+0,1,43,63
+0,1,-152,43
+0,1,-179,-141
+0,1,262,-50
+0,1,-62,37
+0,1,-123,-166
+0,1,-66,-40
+0,1,180,-40
+0,1,-74,-233
+0,1,81,-133
+0,1,199,-51
+0,1,36,29
+0,1,-85,-90
+0,1,-126,53
+0,1,-96,197
+0,1,-11,21
+0,1,-80,-77
+0,1,-86,-99
+0,1,39,15
+0,1,71,111
+0,1,-1,138
+0,1,41,50
+0,1,280,94
+0,1,-162,57
+0,1,-78,-245
+0,1,325,225
+0,1,309,-439
+0,1,252,160
+0,1,-34,92
+0,1,152,248
+0,1,191,75
+0,1,-82,-38
+0,1,16,141
+0,1,325,97
+0,1,-10,-124
+0,1,-63,-100
+0,1,72,223
+0,1,-58,128
+0,1,-137,71
+0,1,29,-48
+0,1,-53,268
+0,1,-6,218
+0,1,166,11
+0,1,46,-204
+0,1,-193,113
+0,1,184,-121
+0,1,192,57
+0,1,152,286
+0,1,-14,58
+0,1,-54,-43
+0,1,140,23
+0,1,11,2
+0,1,352,146
+0,1,-97,237
+0,1,13,-300
+0,1,-211,53
+0,1,-55,88
+0,1,112,-151
+0,1,20,234
+0,1,-194,-129
+0,1,131,79
+0,1,-23,38
+0,1,-112,16
+0,1,-99,-71
+0,1,11,39
+0,1,-143,-70
+0,1,-217,68
+0,1,54,97
+0,1,-116,178
+0,1,-65,0
+0,1,32,-98
+0,1,309,19
+0,1,31,-33
+0,1,-51,-5
+0,1,-118,-40
+0,1,237,108
+0,1,210,-197
+0,1,-205,74
+0,1,-79,67
+0,1,125,378
+0,1,-175,123
+0,1,196,-193
+0,1,90,100
+0,1,-39,98
+0,1,-9,-296
+0,1,-109,167
+0,1,31,-162
+0,1,-124,-173
+0,1,-268,15
+0,1,-20,-127
+0,1,113,478
+0,1,-143,28
+0,1,198,98
+0,1,30,-173
+0,1,-160,5
+0,1,-7,42
+0,1,103,85
+0,1,-23,138
+0,1,-37,441
+0,1,92,-152
+0,1,28,109
+0,1,141,94
+0,1,-306,-229
+0,1,-8,-8
+0,1,48,36
+0,1,-148,54
+0,1,-32,94
+0,1,124,-73
+0,1,10,-90
+0,1,143,-229
+0,1,191,-171
+0,1,-127,-66
+0,1,-22,257
+0,1,7,103
+0,1,48,-76
+0,1,-139,-196
+0,1,120,-19
+0,1,148,227
+0,1,-177,-228
+0,1,-119,210
+0,1,242,-19
+0,1,323,37
+0,1,238,154
+0,1,-151,-17
+0,1,130,-348
+0,1,70,-216
+0,1,114,-344
+0,1,120,56
+0,1,-174,375
+0,1,50,109
+0,1,-289,-51
+0,1,-172,113
+0,1,-95,-91
+0,1,-236,3
+0,1,193,121
+0,1,-93,56
+0,1,-26,21
+0,1,-29,-193
+0,1,174,84
+0,1,41,-355
+0,1,35,-53
+0,1,18,21
+0,1,-32,135
+0,1,-18,-342
+0,1,96,150
+0,1,239,-27
+0,1,199,57
+0,1,66,-19
+0,1,-91,-139
+0,1,47,100
+0,1,60,-113
+0,1,-102,196
+0,1,-42,185
+0,1,-9,126
+0,1,-195,-200
+0,1,18,-63
+0,1,171,10
+0,1,122,247
+0,1,130,54
+0,1,-204,-4
+0,1,-153,177
+0,1,-32,83
+0,1,142,-9
+0,1,-150,-201
+0,1,-265,-111
+0,1,-55,-161
+0,1,-14,-137
+0,1,-3,-133
+0,1,107,-64
+0,1,127,-29
+0,1,103,-36
+0,1,-123,6
+0,1,-52,29
+0,1,155,-34
+0,1,42,-53
+0,1,-34,115
+0,1,58,-233
+0,1,79,-93
+0,1,-177,189
+0,1,132,79
+0,1,25,-138
+0,1,-208,-107
+0,1,-82,20
+0,1,-191,-153
+0,1,227,-121
+0,1,303,345
+0,1,111,49
+0,1,17,63
+0,1,370,138
+0,1,-204,137
+0,1,-143,157
+0,1,-110,58
+0,1,217,-94
+0,1,-150,44
+0,1,91,-38
+0,1,-2,86
+0,1,-72,-230
+0,1,74,43
+0,1,4,73
+0,1,-49,-65
+0,1,51,-138
+0,1,170,-187
+0,1,-72,5
+0,1,-128,-52
+0,1,170,-54
+0,1,126,73
+0,1,-270,-180
+0,1,-67,39
+0,1,-100,106
+0,1,261,-39
+0,1,269,67
+0,1,-87,-226
+0,1,-170,24
+0,1,104,402
+0,1,116,-14
+0,1,59,16
+0,1,204,-26
+0,1,85,32
+0,1,211,-167
+0,1,177,-40
+0,1,-53,47
+0,1,23,97
+0,1,-113,-230
+0,1,201,145
+0,1,190,-33
+0,1,51,-276
+0,1,90,210
+0,1,187,-92
+0,1,188,105
+0,1,32,-28
+0,1,62,-106
+0,1,-135,375
+0,1,11,22
+0,1,-104,34
+0,1,-191,117
+0,1,31,-233
+0,1,166,-48
+0,1,-267,137
+0,1,240,380
+0,1,47,63
+0,1,64,277
+0,1,-298,59
+0,1,89,-205
+0,1,159,60
+0,1,351,-11
+0,1,-119,90
+0,1,87,44
+0,1,44,281
+0,1,-85,-65
+0,1,-216,162
+0,1,-138,-85
+0,1,260,180
+0,1,-114,128
+0,1,-343,132
+0,1,-11,133
+0,1,-136,-38
+0,1,-53,145
+0,1,-174,-27
+0,1,204,-20
+0,1,-43,-104
+0,1,-145,453
+0,1,54,131
+0,1,2,-87
+0,1,-60,107
+0,1,-78,-32
+0,1,-228,160
+0,1,139,120
+0,1,125,21
+0,1,-31,158
+0,1,186,-257
+0,1,96,-161
+0,1,-354,16
+0,1,-391,101
+0,1,-64,155
+0,1,-91,-146
+0,1,-8,-237
+0,1,69,-46
+0,1,-437,63
+0,1,-125,103
+0,1,-37,129
+0,1,34,-51
+0,1,222,101
+0,1,-153,218
+0,1,57,212
+0,1,-159,153
+0,1,-62,-136
+0,1,-68,198
+0,1,-193,-32
+0,1,1,-60
+0,1,54,111
+0,1,89,40
+0,1,74,-187
+0,1,-134,-204
+0,1,108,64
+0,1,-17,67
+0,1,-17,125
+0,1,21,355
+0,1,202,223
+0,1,267,-184
+0,1,-56,-85
+0,1,270,18
+0,1,133,-82
+0,1,-58,114
+0,1,96,289
+0,1,270,135
+0,1,52,104
+0,1,-105,-98
+0,1,161,-65
+0,1,-231,99
+0,1,168,-48
+0,1,174,-108
+0,1,70,-69
+0,1,-184,-15
+0,1,89,-81
+0,1,-317,-11
+0,1,-28,110
+0,1,-265,98
+0,1,30,191
+0,1,243,-218
+0,1,-88,117
+0,1,412,-68
+0,1,50,-20
+0,1,-183,-35
+0,1,-4,42
+0,1,-55,28
+0,1,-110,-202
+0,1,234,211
+0,1,179,-140
+0,1,252,-82
+0,1,-41,0
+0,1,-110,-106
+0,1,25,26
+0,1,-70,-248
+0,1,90,7
+0,1,-62,-47
+0,1,111,169
+0,1,-18,54
+0,1,172,-199
+0,1,49,98
+0,1,157,148
+0,1,-107,-58
+0,1,-30,-3
+0,1,148,334
+0,1,-48,83
+0,1,-241,-188
+0,1,-126,105
+0,1,-104,129
+0,1,227,-215
+0,1,-182,48
+0,1,108,104
+0,1,-6,-75
+0,1,-129,-43
+0,1,-2,-2
+0,1,125,-12
+0,1,-152,-113
+0,1,-138,-207
+0,1,60,45
+0,1,-266,106
+0,1,33,195
+0,1,-269,-40
+0,1,53,31
+0,1,-63,-34
+0,1,-135,-29
+0,1,196,-157
+0,1,-73,227
+0,1,136,4
+0,1,22,13
+0,1,39,47
+0,1,55,-108
+0,1,112,-181
+0,1,-137,58
+0,1,191,-32
+0,1,16,-86
+0,1,45,-207
+0,1,-88,80
+0,1,142,-32
+0,1,39,-59
+0,1,-51,161
+0,1,-173,158
+0,1,-48,-46
+0,1,83,197
+0,1,266,-48
+0,1,141,-17
+0,1,-270,23
+0,1,-14,122
+0,1,200,188
+0,1,-108,-153
+0,1,310,71
+0,1,83,-83
+0,1,-101,-31
+0,1,233,87
+0,1,-251,72
+0,1,-155,-201
+0,1,46,102
+0,1,-93,347
+0,1,66,143
+0,1,-181,36
+0,1,217,21
+0,1,91,16
+0,1,102,-172
+0,1,-248,127
+0,1,78,58
+0,1,50,-143
+0,1,106,156
+0,1,6,-166
+0,1,65,-125
+0,1,24,137
+0,1,-72,204
+0,1,15,240
+0,1,-45,62
+0,1,-85,59
+0,1,43,62
+0,1,181,9
+0,1,65,66
+0,1,-77,-26
+0,1,-90,-35
+0,1,192,-65
+0,1,54,-235
+0,1,23,-13
+0,1,-74,36
+0,1,-132,193
+0,1,213,137
+0,1,19,-174
+0,1,-109,183
+0,1,-4,13
+0,1,-165,96
+0,1,31,-144
+0,1,48,-115
+0,1,-68,87
+0,1,-183,114
+0,1,64,-24
+0,1,-21,-19
+0,1,-60,-239
+0,1,-205,206
+0,1,-198,-54
+0,1,-70,83
+0,1,9,-171
+0,1,216,-207
+0,1,-87,122
+0,1,-68,-239
+0,1,59,-149
+0,1,3,20
+0,1,-154,176
+0,1,105,149
+0,1,-264,135
+0,1,193,55
+0,1,-37,-48
+0,1,-372,165
+0,1,115,7
+0,1,-6,-8
+0,1,-104,83
+0,1,-108,67
+0,1,28,-62
+0,1,-23,112
+0,1,205,95
+0,1,-29,-286
+0,1,44,-2
+0,1,12,8
+0,1,63,-142
+0,1,90,42
+0,1,52,-19
+0,1,94,218
+0,1,231,-2
+0,1,-159,155
+0,1,-12,-64
+0,1,250,95
+0,1,116,-291
+0,1,-98,-35
+0,1,-3,-226
+0,1,-275,299
+0,1,150,-121
+0,1,-212,-31
+0,1,167,-150
+0,1,-44,47
+0,1,94,7
+0,1,144,-64
+0,1,129,-134
+0,1,46,-115
+0,1,165,46
+0,1,208,-69
+0,1,-16,-51
+0,1,-312,113
+0,1,14,69
+0,1,-90,-44
+0,1,-291,-25
+0,1,-24,91
+0,1,64,11
+0,1,-150,-178
+0,1,-184,289
+0,1,-199,329
+0,1,88,181
+0,1,-218,59
+0,1,99,-111
+0,1,9,338
+0,1,169,57
+0,1,-142,-103
+0,1,319,311
+0,1,-270,171
+0,1,107,-162
+0,1,-123,131
+0,1,-203,-44
+0,1,16,184
+0,1,102,-118
+0,1,221,128
+0,1,-33,-7
+0,1,-185,82
+0,1,0,-470
+0,1,-257,99
+0,1,-60,-13
+0,1,108,63
+0,1,154,53
+0,1,-135,114
+0,1,99,-111
+0,1,-133,46
+0,1,-53,17
+0,1,-181,-20
+0,1,-178,-222
+0,1,57,-202
+0,1,162,116
+0,1,48,-161
+0,1,-40,-177
+0,1,130,-63
+0,1,-237,18
+0,1,-106,-67
+0,1,-5,-45
+0,1,-150,26
+0,1,295,-14
+0,1,173,-4
+0,1,-205,-155
+0,1,-110,149
+0,1,47,12
+0,1,-76,128
+0,1,-251,-62
+0,1,-64,-16
+0,1,20,-2
+0,1,20,85
+0,1,-56,-58
+0,1,-29,243
+0,1,163,-62
+0,1,153,74
+0,1,-163,131
+0,1,358,-248
+0,1,-150,-258
+0,1,-25,-76
+0,1,4,181
+0,1,133,-133
+0,1,-112,77
+0,1,-122,-357
+0,1,-89,239
+0,1,156,-28
+0,1,-4,-261
+0,1,60,109
+0,1,30,58
+0,1,-64,-311
+0,1,252,30
+0,1,-73,-44
+0,1,70,-359
+0,1,37,-19
+0,1,162,19
+0,1,-74,-186
+0,1,-102,28
+0,1,-106,-192
+0,1,-127,-233
+0,1,20,17
+0,1,255,8
+0,1,-32,-147
+0,1,-34,11
+0,1,-10,-111
+0,1,-102,-180
+0,1,135,47
+0,1,-7,-156
+0,1,185,30
+0,1,43,-51
+0,1,-156,129
+0,1,-310,18
+0,1,80,186
+0,1,-142,-13
+0,1,104,76
+0,1,181,52
+0,1,-137,-29
+0,1,-180,104
+0,1,-82,-81
+0,1,-68,12
+0,1,-28,62
+0,1,108,-96
+0,1,93,-163
+0,1,-115,-15
+0,1,-81,-152
+0,1,33,-111
+0,1,-242,173
+0,1,33,-194
+0,1,61,-463
+0,1,-243,118
+0,1,88,73
+0,1,44,-147
+0,1,-51,-22
+0,1,131,73
+0,1,-335,-54
+0,1,243,-2
+0,1,138,-91
+0,1,169,164
+0,1,-235,85
+0,1,45,-360
+0,1,-171,-45
+0,1,102,278
+0,1,-12,180
+0,1,293,-148
+0,1,-31,-185
+0,1,-95,-67
+0,1,-211,144
+0,1,83,192
+0,1,436,-20
+0,1,-59,49
+0,1,-145,-285
+0,1,8,10
+0,1,-81,93
+0,1,-82,129
+0,1,-35,58
+0,1,25,165
+0,1,219,48
+0,1,-28,-197
+0,1,-3,46
+0,1,-102,-137
+0,1,-61,228
+0,1,64,-76
+0,1,-40,76
+0,1,147,-78
+0,1,-18,-72
+0,1,-326,106
+0,1,190,-20
+0,1,86,-113
+0,1,-86,129
+0,1,119,172
+0,1,4,69
+0,1,114,-56
+0,1,-271,-106
+0,1,151,200
+0,1,-152,-208
+0,1,-164,-221
+0,1,-57,67
+0,1,37,-281
+0,1,99,-10
+0,1,110,-347
+0,1,36,-82
+0,1,-82,42
+0,1,48,135
+0,1,-257,109
+0,1,-221,-284
+0,1,-278,29
+0,1,152,-91
+0,1,163,-76
+0,1,-252,-46
+0,1,-327,-89
+0,1,70,-4
+0,1,3,-158
+0,1,194,-25
+0,1,-76,162
+0,1,-123,8
+0,1,-81,26
+0,1,16,-34
+0,1,-7,-303
+0,1,20,118
+0,1,146,-67
+0,1,143,83
+0,1,41,-119
+0,1,309,-178
+0,1,39,-240
+0,1,-156,23
+0,1,94,-172
+0,1,-112,-87
+0,1,-17,19
+0,1,152,5
+0,1,51,-157
+0,1,98,93
+0,1,8,-59
+0,1,16,153
+0,1,-163,-72
+0,1,-382,115
+0,1,2,166
+0,1,-116,-255
+0,1,-150,84
+0,1,10,-278
+0,1,-105,57
+0,1,-176,259
+0,1,296,-116
+0,1,-63,208
+0,1,-5,-74
+0,1,98,46
+0,1,-82,52
+0,1,85,-162
+0,1,-39,97
+0,1,-61,134
+0,1,-205,-116
+0,1,-270,-119
+0,1,-30,139
+0,1,-37,240
+0,1,36,104
+0,1,40,66
+0,1,333,-40
+0,1,0,276
+0,1,138,35
+0,1,-212,-17
+0,1,110,8
+0,1,-9,85
+0,1,-1,264
+0,1,6,45
+0,1,19,-66
+0,1,2,282
+0,1,-88,88
+0,1,-190,-181
+0,1,150,186
+0,1,-134,-37
+0,1,-132,-116
+0,1,23,73
+0,1,-172,108
+0,1,-10,-59
+0,1,-120,-33
+0,1,83,64
+0,1,107,-54
+0,1,-110,86
+0,1,-177,9
+0,1,49,158
+0,1,-60,-198
+0,1,150,-149
+0,1,-131,-32
+0,1,-191,-360
+0,1,195,-320
+0,1,-186,-222
+0,1,78,-59
+0,1,23,87
+0,1,-196,70
+0,1,229,-15
+0,1,37,100
+0,1,-73,97
+0,1,115,-15
+0,1,205,191
+0,1,-158,22
+0,1,5,120
+0,1,2,73
+0,1,23,-83
+0,1,191,-58
+0,1,-119,39
+0,1,-142,-115
+0,1,-24,52
+0,1,188,-26
+0,1,90,-164
+0,1,-53,-156
+0,1,-366,59
+0,1,-163,121
+0,1,308,-30
+0,1,96,-54
+0,1,-352,6
+0,1,-146,-98
+0,1,48,13
+0,1,96,65
+0,1,-148,-148
+0,1,-43,54
+0,1,87,274
+0,1,137,109
+0,1,-31,134
+0,1,-21,214
+0,1,85,-157
+0,1,-147,-23
+0,1,51,11
+0,1,29,5
+0,1,93,32
+0,1,-50,11
+0,1,-105,-155
+0,1,-154,-166
+0,1,32,192
+0,1,135,-184
+0,1,5,99
+0,1,66,128
+0,1,-15,-98
+0,1,-44,70
+0,1,4,7
+0,1,-79,190
+0,1,185,68
+0,1,178,-3
+0,1,52,90
+0,1,68,-141
+0,1,59,67
+0,1,-125,-34
+0,1,45,23
+0,1,-13,24
+0,1,-110,-3
+0,1,28,53
+0,1,-158,111
+0,1,-31,18
+0,1,211,98
+0,1,-123,99
+0,1,41,41
+0,1,-205,22
+0,1,-165,224
+0,1,105,-84
+0,1,-38,148
+0,1,157,129
+0,1,194,-102
+0,1,-7,146
+0,1,175,33
+0,1,-100,-13
+0,1,218,-121
+0,1,-49,-154
+0,1,-10,-146
+0,1,159,-65
+0,1,-154,-151
+0,1,96,-14
+0,1,-87,9
+0,1,206,140
+0,1,-104,372
+0,1,-59,-64
+0,1,-208,-108
+0,1,177,72
+0,1,247,-36
+0,1,31,176
+0,1,25,4
+0,1,-186,22
+0,1,-29,-254
+0,1,99,-130
+0,1,-272,-287
+0,1,-237,14
+0,1,184,50
+0,1,163,-359
+0,1,136,-290
+0,1,64,254
+0,1,-15,-252
+0,1,-171,169
+0,1,18,-52
+0,1,204,165
+0,1,28,165
+0,1,-42,-56
+0,1,45,-162
+0,1,-47,-114
+0,1,-271,226
+0,1,-279,-89
+0,1,-17,43
+0,1,148,13
+0,1,-105,172
+0,1,-332,37
+0,1,11,27
+0,1,165,-133
+0,1,-15,10
+0,1,300,89
+0,1,55,-213
+0,1,-15,195
+0,1,-35,199
+0,1,139,114
+0,1,-143,-135
+0,1,66,-31
+0,1,157,-137
+0,1,230,90
+0,1,-30,-118
+0,1,-176,79
+0,1,135,-47
+0,1,199,191
+0,1,292,148
+0,1,-127,-100
+0,1,210,-134
+0,1,79,-257
+0,1,316,20
+0,1,42,-35
+0,1,-184,-26
+0,1,-13,-6
+0,1,-69,-5
+0,1,199,19
+0,1,-62,-76
+0,1,1,89
+0,1,56,-36
+0,1,35,-278
+0,1,-74,18
+0,1,-79,-89
+0,1,15,164
+0,1,-176,-196
+0,1,-62,-239
+0,1,100,-149
+0,1,358,207
+0,1,229,-30
+0,1,-146,-25
+0,1,65,7
+0,1,189,-311
+0,1,56,152
+0,1,197,106
+0,1,60,121
+0,1,139,308
+0,1,145,-9
+0,1,-40,-150
+0,1,67,-36
+0,1,-302,-20
+0,1,120,83
+0,1,-65,169
+0,1,-43,-100
+0,1,-126,-43
+0,1,-113,-23
+0,1,115,-277
+0,1,-31,242
+0,1,151,-168
+0,1,135,-4
+0,1,105,64
+0,1,-157,53
+0,1,-25,-15
+0,1,-240,-41
+0,1,-110,18
+0,1,13,-88
+0,1,-55,-10
+0,1,-133,215
+0,1,-231,16
+0,1,-83,242
+0,1,176,261
+0,1,-4,-81
+0,1,-162,-78
+0,1,-88,216
+0,1,-31,5
+0,1,-107,-490
+0,1,31,148
+0,1,-83,13
+0,1,146,102
+0,1,58,117
+0,1,-147,-96
+0,1,-18,-53
+0,1,218,-5
+0,1,-57,55
+0,1,-217,40
+0,1,-128,309
+0,1,89,17
+0,1,17,315
+0,1,-104,131
+0,1,159,-260
+0,1,-167,169
+0,1,48,-189
+0,1,57,-109