diff --git a/9_Firmware/9_2_FPGA/ddc_400m.v b/9_Firmware/9_2_FPGA/ddc_400m.v index 708f55b..dea2f4d 100644 --- a/9_Firmware/9_2_FPGA/ddc_400m.v +++ b/9_Firmware/9_2_FPGA/ddc_400m.v @@ -16,10 +16,9 @@ module ddc_400m_enhanced ( output wire [1:0] ddc_status, // Enhanced interfaces output wire [7:0] ddc_diagnostics, - output wire mixer_saturation, - output wire filter_overflow, - input wire bypass_mode, // Test mode - + output wire mixer_saturation, + output wire filter_overflow, + input wire [1:0] test_mode, input wire [15:0] test_phase_inc, input wire force_saturation, @@ -90,11 +89,9 @@ end // CDC synchronization for control signals (2-stage synchronizers) (* ASYNC_REG = "TRUE" *) reg [1:0] mixers_enable_sync_chain; -(* ASYNC_REG = "TRUE" *) reg [1:0] bypass_mode_sync_chain; -(* ASYNC_REG = "TRUE" *) reg [1:0] force_saturation_sync_chain; +(* ASYNC_REG = "TRUE" *) reg [1:0] force_saturation_sync_chain; wire mixers_enable_sync; -wire bypass_mode_sync; -wire force_saturation_sync; +wire force_saturation_sync; // Debug monitoring signals reg [31:0] sample_counter; @@ -139,17 +136,14 @@ assign debug_mixed_q_trunc = mixed_q[25:8]; // Clock Domain Crossing for Control Signals (2-stage synchronizers) // ============================================================================ assign mixers_enable_sync = mixers_enable_sync_chain[1]; -assign bypass_mode_sync = bypass_mode_sync_chain[1]; assign force_saturation_sync = force_saturation_sync_chain[1]; always @(posedge clk_400m or negedge reset_n_400m) begin if (!reset_n_400m) begin mixers_enable_sync_chain <= 2'b00; - bypass_mode_sync_chain <= 2'b00; force_saturation_sync_chain <= 2'b00; end else begin mixers_enable_sync_chain <= {mixers_enable_sync_chain[0], mixers_enable}; - bypass_mode_sync_chain <= {bypass_mode_sync_chain[0], bypass_mode}; force_saturation_sync_chain <= {force_saturation_sync_chain[0], force_saturation}; end end diff --git a/9_Firmware/9_2_FPGA/formal/fv_range_bin_decimator.v b/9_Firmware/9_2_FPGA/formal/fv_range_bin_decimator.v index 43bc28a..15a435d 100644 --- a/9_Firmware/9_2_FPGA/formal/fv_range_bin_decimator.v +++ b/9_Firmware/9_2_FPGA/formal/fv_range_bin_decimator.v @@ -83,6 +83,7 @@ module fv_range_bin_decimator ( .range_bin_index (range_bin_index), .decimation_mode (decimation_mode), .start_bin (start_bin), + .watchdog_timeout (), .fv_state (state), .fv_in_bin_count (in_bin_count), .fv_group_sample_count (group_sample_count), diff --git a/9_Firmware/9_2_FPGA/radar_receiver_final.v b/9_Firmware/9_2_FPGA/radar_receiver_final.v index 1ad8809..ffa463d 100644 --- a/9_Firmware/9_2_FPGA/radar_receiver_final.v +++ b/9_Firmware/9_2_FPGA/radar_receiver_final.v @@ -37,6 +37,11 @@ module radar_receiver_final ( input wire [15:0] host_short_listen_cycles, input wire [5:0] host_chirps_per_elev, + // Digital gain control (Fix 3: between DDC output and matched filter) + // [3]=direction: 0=amplify(left shift), 1=attenuate(right shift) + // [2:0]=shift amount: 0..7 bits. Default 0 = pass-through. + input wire [3:0] host_gain_shift, + // STM32 toggle signals for mode 00 (STM32-driven) pass-through. // These are CDC-synchronized in radar_system_top.v / radar_transmitter.v // before reaching this module. In mode 00, the RX mode controller uses @@ -66,6 +71,11 @@ wire mem_ready; wire [15:0] adc_i_scaled, adc_q_scaled; wire adc_valid_sync; +// Gain-controlled signals (between DDC output and matched filter) +wire signed [15:0] gc_i, gc_q; +wire gc_valid; +wire [7:0] gc_saturation_count; // Diagnostic: clipped sample counter + // Reference signals for the processing chain wire [15:0] long_chirp_real, long_chirp_imag; wire [15:0] short_chirp_real, short_chirp_imag; @@ -176,9 +186,8 @@ ddc_400m_enhanced ddc( .baseband_q(ddc_out_q), // Q output at 100MHz .baseband_valid_i(ddc_valid_i), // Valid at 100MHz .baseband_valid_q(ddc_valid_q), - .mixers_enable(1'b1), - .bypass_mode(1'b1) -); + .mixers_enable(1'b1) +); ddc_input_interface ddc_if ( .clk(clk), @@ -193,6 +202,22 @@ ddc_input_interface ddc_if ( .data_sync_error() ); +// 2b. Digital Gain Control (Fix 3) +// Host-configurable power-of-2 shift between DDC output and matched filter. +// Default gain_shift=0 → pass-through (no behavioral change from baseline). +rx_gain_control gain_ctrl ( + .clk(clk), + .reset_n(reset_n), + .data_i_in(adc_i_scaled), + .data_q_in(adc_q_scaled), + .valid_in(adc_valid_sync), + .gain_shift(host_gain_shift), + .data_i_out(gc_i), + .data_q_out(gc_q), + .valid_out(gc_valid), + .saturation_count(gc_saturation_count) +); + // 3. Dual Chirp Memory Loader wire [9:0] sample_addr_from_chain; @@ -257,9 +282,9 @@ assign range_profile_valid_out = range_valid; matched_filter_multi_segment mf_dual ( .clk(clk), .reset_n(reset_n), - .ddc_i({{2{adc_i_scaled[15]}}, adc_i_scaled}), - .ddc_q({{2{adc_q_scaled[15]}}, adc_q_scaled}), - .ddc_valid(adc_valid_sync), + .ddc_i({{2{gc_i[15]}}, gc_i}), + .ddc_q({{2{gc_q[15]}}, gc_q}), + .ddc_valid(gc_valid), .use_long_chirp(use_long_chirp), .chirp_counter(chirp_counter), .mc_new_chirp(mc_new_chirp), @@ -295,7 +320,8 @@ range_bin_decimator #( .range_valid_out(decimated_range_valid), .range_bin_index(decimated_range_bin), .decimation_mode(2'b01), // Peak detection mode - .start_bin(10'd0) + .start_bin(10'd0), + .watchdog_timeout() // Diagnostic — unconnected (monitored via ILA if needed) ); // ========== FRAME SYNC USING chirp_counter ========== diff --git a/9_Firmware/9_2_FPGA/radar_system_top.v b/9_Firmware/9_2_FPGA/radar_system_top.v index cf48e20..2e7b76c 100644 --- a/9_Firmware/9_2_FPGA/radar_system_top.v +++ b/9_Firmware/9_2_FPGA/radar_system_top.v @@ -161,8 +161,8 @@ wire rx_range_valid; wire [15:0] rx_doppler_real; wire [15:0] rx_doppler_imag; wire rx_doppler_data_valid; -reg rx_cfar_detection; -reg rx_cfar_valid; +reg rx_detect_flag; // Threshold detection result (was rx_cfar_detection) +reg rx_detect_valid; // Detection valid pulse (was rx_cfar_valid) // Data packing for USB wire [31:0] usb_range_profile; @@ -170,8 +170,8 @@ wire usb_range_valid; wire [15:0] usb_doppler_real; wire [15:0] usb_doppler_imag; wire usb_doppler_valid; -wire usb_cfar_detection; -wire usb_cfar_valid; +wire usb_detect_flag; // (was usb_cfar_detection) +wire usb_detect_valid; // (was usb_cfar_valid) // System status reg [3:0] status_reg; @@ -188,9 +188,14 @@ wire [15:0] usb_cmd_value; // Declared here (before rx_inst) so Icarus Verilog can resolve forward refs. reg [1:0] host_radar_mode; reg host_trigger_pulse; -reg [15:0] host_cfar_threshold; +reg [15:0] host_detect_threshold; // (was host_cfar_threshold) reg [2:0] host_stream_control; +// Fix 3: Digital gain control register +// [3]=direction: 0=amplify, 1=attenuate. [2:0]=shift amount 0..7. +// Default 0x00 = pass-through (no gain change). +reg [3:0] host_gain_shift; + // Gap 2: Host-configurable chirp timing registers // These override the compile-time defaults in radar_mode_controller when // written via USB command. Defaults match the parameter values in @@ -203,6 +208,22 @@ reg [15:0] host_short_listen_cycles; // Opcode 0x14 (default 17450) reg [5:0] host_chirps_per_elev; // Opcode 0x15 (default 32) reg host_status_request; // Opcode 0xFF (self-clearing pulse) +// Fix 4: Doppler/chirps mismatch protection +// DOPPLER_FFT_SIZE is compile-time (32). If host sets chirps_per_elev to a +// different value, Doppler accumulation is corrupted. Clamp at command decode +// and flag the mismatch so the host knows. +localparam DOPPLER_FFT_SIZE = 32; // Must match doppler_processor parameter +reg chirps_mismatch_error; // Set if host tried to set chirps != FFT size + +// Fix 7: Range-mode register (opcode 0x20) +// Future-proofing for 3km/10km antenna switching. +// 2'b00 = Auto (default — system selects based on scene) +// 2'b01 = Short-range (3km) +// 2'b10 = Long-range (10km) +// 2'b11 = Reserved +// Currently a configuration store only — antenna/timing switching TBD. +reg [1:0] host_range_mode; + // ============================================================================ // CLOCK BUFFERING // ============================================================================ @@ -446,6 +467,8 @@ radar_receiver_final rx_inst ( .host_short_chirp_cycles(host_short_chirp_cycles), .host_short_listen_cycles(host_short_listen_cycles), .host_chirps_per_elev(host_chirps_per_elev), + // Fix 3: digital gain control + .host_gain_shift(host_gain_shift), // STM32 toggle signals for RX mode controller (mode 00 pass-through). // These are the raw GPIO inputs — the RX mode controller's edge detectors // (inside radar_mode_controller) handle debouncing/edge detection. @@ -464,30 +487,43 @@ assign rx_doppler_real = rx_doppler_output[15:0]; assign rx_doppler_imag = rx_doppler_output[31:16]; assign rx_doppler_data_valid = rx_doppler_valid; -// For this implementation, we'll create a simple CFAR detection simulation -// In a real system, this would come from a CFAR module -reg [7:0] cfar_counter; -reg [16:0] cfar_mag; // Approximate magnitude for threshold detection +// ============================================================================ +// THRESHOLD DETECTOR (renamed from misleading "CFAR" — this is NOT CFAR) +// ============================================================================ +// Simple magnitude threshold: |I|+|Q| > host_detect_threshold +// This is a placeholder until real CFAR (Gap 1) is implemented. +// +// BUG FIXES applied (Build 22): +// 1. cfar_mag was registered (<=) then compared in same always block, +// causing one-cycle-lag: comparison used PREVIOUS sample's magnitude. +// FIX: compute magnitude combinationally (wire), compare same cycle. +// 2. rx_cfar_detection was never cleared on non-detect cycles — stayed +// latched high after first detection until system reset. +// FIX: clear detection flag every cycle, set only on actual detect. + +// Combinational magnitude: no pipeline lag +wire [16:0] detect_mag; +wire [15:0] detect_abs_i = rx_doppler_real[15] ? (~rx_doppler_real + 16'd1) : rx_doppler_real; +wire [15:0] detect_abs_q = rx_doppler_imag[15] ? (~rx_doppler_imag + 16'd1) : rx_doppler_imag; +assign detect_mag = {1'b0, detect_abs_i} + {1'b0, detect_abs_q}; + +reg [7:0] detect_counter; always @(posedge clk_100m_buf or negedge sys_reset_n) begin if (!sys_reset_n) begin - cfar_counter <= 8'd0; - rx_cfar_detection <= 1'b0; - rx_cfar_valid <= 1'b0; - cfar_mag <= 17'd0; + detect_counter <= 8'd0; + rx_detect_flag <= 1'b0; + rx_detect_valid <= 1'b0; end else begin - rx_cfar_valid <= 1'b0; + // Default: clear every cycle (fixes sticky detection bug) + rx_detect_flag <= 1'b0; + rx_detect_valid <= 1'b0; - // Simple threshold detection on doppler magnitude if (rx_doppler_valid) begin - // Calculate approximate magnitude (|I| + |Q|) - cfar_mag <= (rx_doppler_real[15] ? -rx_doppler_real : rx_doppler_real) + - (rx_doppler_imag[15] ? -rx_doppler_imag : rx_doppler_imag); - - // Threshold detection (Gap 2: uses host-configurable threshold) - if (cfar_mag > {1'b0, host_cfar_threshold}) begin - rx_cfar_detection <= 1'b1; - rx_cfar_valid <= 1'b1; - cfar_counter <= cfar_counter + 1; + // Compare combinational magnitude against threshold (same cycle) + if (detect_mag > {1'b0, host_detect_threshold}) begin + rx_detect_flag <= 1'b1; + rx_detect_valid <= 1'b1; + detect_counter <= detect_counter + 1; end end end @@ -505,8 +541,8 @@ assign usb_doppler_real = rx_doppler_real; assign usb_doppler_imag = rx_doppler_imag; assign usb_doppler_valid = rx_doppler_valid; -assign usb_cfar_detection = rx_cfar_detection; -assign usb_cfar_valid = rx_cfar_valid; +assign usb_detect_flag = rx_detect_flag; +assign usb_detect_valid = rx_detect_valid; // ============================================================================ // USB DATA INTERFACE INSTANTIATION @@ -523,8 +559,8 @@ usb_data_interface usb_inst ( .doppler_real(usb_doppler_real), .doppler_imag(usb_doppler_imag), .doppler_valid(usb_doppler_valid), - .cfar_detection(usb_cfar_detection), - .cfar_valid(usb_cfar_valid), + .cfar_detection(usb_detect_flag), + .cfar_valid(usb_detect_valid), // FT601 Interface .ft601_data(ft601_data), @@ -554,7 +590,7 @@ usb_data_interface usb_inst ( // Gap 2: Status readback inputs .status_request(host_status_request), - .status_cfar_threshold(host_cfar_threshold), + .status_cfar_threshold(host_detect_threshold), .status_stream_ctrl(host_stream_control), .status_radar_mode(host_radar_mode), .status_long_chirp(host_long_chirp_cycles), @@ -562,7 +598,8 @@ usb_data_interface usb_inst ( .status_guard(host_guard_cycles), .status_short_chirp(host_short_chirp_cycles), .status_short_listen(host_short_listen_cycles), - .status_chirps_per_elev(host_chirps_per_elev) + .status_chirps_per_elev(host_chirps_per_elev), + .status_range_mode(host_range_mode) ); // ============================================================================ @@ -608,15 +645,16 @@ wire cmd_valid_100m = cmd_valid_toggle_100m ^ cmd_valid_toggle_100m_prev; // Sample cmd_data fields when CDC'd valid pulse arrives. Data is stable // because the read FSM holds cmd_opcode/addr/value until the next command. // NOTE: reg declarations for host_radar_mode, host_trigger_pulse, -// host_cfar_threshold, host_stream_control are in INTERNAL SIGNALS section +// host_detect_threshold, host_stream_control are in INTERNAL SIGNALS section // above (before rx_inst) to avoid Icarus Verilog forward-reference errors. always @(posedge clk_100m_buf or negedge sys_reset_n) begin if (!sys_reset_n) begin host_radar_mode <= 2'b01; // Default: auto-scan host_trigger_pulse <= 1'b0; - host_cfar_threshold <= 16'd10000; // Default threshold + host_detect_threshold <= 16'd10000; // Default threshold host_stream_control <= 3'b111; // Default: all streams enabled + host_gain_shift <= 4'd0; // Default: pass-through (no gain change) // Gap 2: chirp timing defaults (match radar_mode_controller parameters) host_long_chirp_cycles <= 16'd3000; host_long_listen_cycles <= 16'd13700; @@ -625,6 +663,8 @@ always @(posedge clk_100m_buf or negedge sys_reset_n) begin host_short_listen_cycles <= 16'd17450; host_chirps_per_elev <= 6'd32; host_status_request <= 1'b0; + chirps_mismatch_error <= 1'b0; + host_range_mode <= 2'b00; // Default: auto end else begin host_trigger_pulse <= 1'b0; // Self-clearing pulse host_status_request <= 1'b0; // Self-clearing pulse @@ -632,7 +672,7 @@ always @(posedge clk_100m_buf or negedge sys_reset_n) begin case (usb_cmd_opcode) 8'h01: host_radar_mode <= usb_cmd_value[1:0]; 8'h02: host_trigger_pulse <= 1'b1; - 8'h03: host_cfar_threshold <= usb_cmd_value; + 8'h03: host_detect_threshold <= usb_cmd_value; 8'h04: host_stream_control <= usb_cmd_value[2:0]; // Gap 2: chirp timing configuration 8'h10: host_long_chirp_cycles <= usb_cmd_value; @@ -640,7 +680,23 @@ always @(posedge clk_100m_buf or negedge sys_reset_n) begin 8'h12: host_guard_cycles <= usb_cmd_value; 8'h13: host_short_chirp_cycles <= usb_cmd_value; 8'h14: host_short_listen_cycles <= usb_cmd_value; - 8'h15: host_chirps_per_elev <= usb_cmd_value[5:0]; + 8'h15: begin + // Fix 4: Clamp chirps_per_elev to DOPPLER_FFT_SIZE. + // If host requests a different value, clamp and set error flag. + if (usb_cmd_value[5:0] > DOPPLER_FFT_SIZE[5:0]) begin + host_chirps_per_elev <= DOPPLER_FFT_SIZE[5:0]; + chirps_mismatch_error <= 1'b1; + end else if (usb_cmd_value[5:0] == 6'd0) begin + host_chirps_per_elev <= DOPPLER_FFT_SIZE[5:0]; + chirps_mismatch_error <= 1'b1; + end else begin + host_chirps_per_elev <= usb_cmd_value[5:0]; + // Clear error only if value matches FFT size exactly + chirps_mismatch_error <= (usb_cmd_value[5:0] != DOPPLER_FFT_SIZE[5:0]); + end + end + 8'h16: host_gain_shift <= usb_cmd_value[3:0]; // Fix 3: digital gain + 8'h20: host_range_mode <= usb_cmd_value[1:0]; // Fix 7: range mode 8'hFF: host_status_request <= 1'b1; // Gap 2: status readback default: ; endcase diff --git a/9_Firmware/9_2_FPGA/range_bin_decimator.v b/9_Firmware/9_2_FPGA/range_bin_decimator.v index 0ee3567..7c52386 100644 --- a/9_Firmware/9_2_FPGA/range_bin_decimator.v +++ b/9_Firmware/9_2_FPGA/range_bin_decimator.v @@ -51,7 +51,10 @@ module range_bin_decimator #( // Configuration input wire [1:0] decimation_mode, // 00=decimate, 01=peak, 10=average - input wire [9:0] start_bin // First input bin to process + input wire [9:0] start_bin, // First input bin to process + + // Diagnostics + output reg watchdog_timeout // Pulses high for 1 cycle on watchdog reset `ifdef FORMAL , @@ -63,6 +66,11 @@ module range_bin_decimator #( `endif ); +// Fix 5: Watchdog timeout — if no valid input arrives for WATCHDOG_LIMIT +// clocks while in ST_PROCESS or ST_SKIP, return to ST_IDLE to prevent hang. +// 256 clocks at 100MHz = 2.56us, well beyond normal inter-sample gap. +localparam WATCHDOG_LIMIT = 10'd256; + // ============================================================================ // INTERNAL SIGNALS // ============================================================================ @@ -85,6 +93,9 @@ localparam ST_DONE = 3'd4; // Skip counter for start_bin reg [9:0] skip_count; +// Watchdog counter — counts consecutive clocks with no range_valid_in +reg [9:0] watchdog_count; + `ifdef FORMAL assign fv_state = state; assign fv_in_bin_count = in_bin_count; @@ -128,6 +139,8 @@ always @(posedge clk or negedge reset_n) begin group_sample_count <= 4'd0; output_bin_count <= 6'd0; skip_count <= 10'd0; + watchdog_count <= 10'd0; + watchdog_timeout <= 1'b0; range_valid_out <= 1'b0; range_i_out <= 16'd0; range_q_out <= 16'd0; @@ -140,8 +153,9 @@ always @(posedge clk or negedge reset_n) begin decim_i <= 16'd0; decim_q <= 16'd0; end else begin - // Default: output not valid - range_valid_out <= 1'b0; + // Default: output not valid, watchdog not triggered + range_valid_out <= 1'b0; + watchdog_timeout <= 1'b0; case (state) // ================================================================ @@ -152,6 +166,7 @@ always @(posedge clk or negedge reset_n) begin group_sample_count <= 4'd0; output_bin_count <= 6'd0; skip_count <= 10'd0; + watchdog_count <= 10'd0; peak_i <= 16'd0; peak_q <= 16'd0; peak_mag <= 17'd0; @@ -198,6 +213,7 @@ always @(posedge clk or negedge reset_n) begin // ================================================================ ST_SKIP: begin if (range_valid_in) begin + watchdog_count <= 10'd0; in_bin_count <= in_bin_count + 1; if (skip_count >= start_bin) begin @@ -226,6 +242,17 @@ always @(posedge clk or negedge reset_n) begin end else begin skip_count <= skip_count + 1; end + end else begin + // No valid input — increment watchdog + if (watchdog_count >= WATCHDOG_LIMIT - 1) begin + watchdog_timeout <= 1'b1; + state <= ST_IDLE; + `ifdef SIMULATION + $display("[RNG_DECIM] WATCHDOG: timeout in ST_SKIP after %0d idle clocks", WATCHDOG_LIMIT); + `endif + end else begin + watchdog_count <= watchdog_count + 1; + end end end @@ -234,6 +261,7 @@ always @(posedge clk or negedge reset_n) begin // ================================================================ ST_PROCESS: begin if (range_valid_in) begin + watchdog_count <= 10'd0; in_bin_count <= in_bin_count + 1; // Mode-specific sample processing — always process @@ -273,6 +301,17 @@ always @(posedge clk or negedge reset_n) begin end else begin group_sample_count <= group_sample_count + 1; end + end else begin + // No valid input — increment watchdog + if (watchdog_count >= WATCHDOG_LIMIT - 1) begin + watchdog_timeout <= 1'b1; + state <= ST_IDLE; + `ifdef SIMULATION + $display("[RNG_DECIM] WATCHDOG: timeout in ST_PROCESS after %0d idle clocks", WATCHDOG_LIMIT); + `endif + end else begin + watchdog_count <= watchdog_count + 1; + end end end diff --git a/9_Firmware/9_2_FPGA/run_regression.sh b/9_Firmware/9_2_FPGA/run_regression.sh index 9bee0f9..c9e81f4 100755 --- a/9_Firmware/9_2_FPGA/run_regression.sh +++ b/9_Firmware/9_2_FPGA/run_regression.sh @@ -72,6 +72,7 @@ PROD_RTL=( usb_data_interface.v edge_detector.v radar_mode_controller.v + rx_gain_control.v ) # Source-only RTL (not instantiated at top level, but should still be lint-clean) @@ -367,6 +368,14 @@ run_test "Doppler Processor (DSP48)" \ tb/tb_doppler_reg.vvp \ tb/tb_doppler_cosim.v doppler_processor.v xfft_32.v fft_engine.v +run_test "Threshold Detector (detection bugs)" \ + tb/tb_threshold_detector.vvp \ + tb/tb_threshold_detector.v + +run_test "RX Gain Control (digital gain)" \ + tb/tb_rx_gain_control.vvp \ + tb/tb_rx_gain_control.v rx_gain_control.v + echo "" # =========================================================================== @@ -390,7 +399,8 @@ if [[ "$QUICK" -eq 0 ]]; then cdc_modules.v fir_lowpass.v ddc_input_interface.v \ chirp_memory_loader_param.v latency_buffer.v \ matched_filter_multi_segment.v matched_filter_processing_chain.v \ - range_bin_decimator.v doppler_processor.v xfft_32.v fft_engine.v + range_bin_decimator.v doppler_processor.v xfft_32.v fft_engine.v \ + rx_gain_control.v # Golden compare run_test "Receiver (golden compare)" \ @@ -401,7 +411,8 @@ if [[ "$QUICK" -eq 0 ]]; then cdc_modules.v fir_lowpass.v ddc_input_interface.v \ chirp_memory_loader_param.v latency_buffer.v \ matched_filter_multi_segment.v matched_filter_processing_chain.v \ - range_bin_decimator.v doppler_processor.v xfft_32.v fft_engine.v + range_bin_decimator.v doppler_processor.v xfft_32.v fft_engine.v \ + rx_gain_control.v # Full system top (monitoring-only, legacy) run_test "System Top (radar_system_tb)" \ @@ -414,7 +425,8 @@ if [[ "$QUICK" -eq 0 ]]; then chirp_memory_loader_param.v latency_buffer.v \ matched_filter_multi_segment.v matched_filter_processing_chain.v \ range_bin_decimator.v doppler_processor.v xfft_32.v fft_engine.v \ - usb_data_interface.v edge_detector.v radar_mode_controller.v + usb_data_interface.v edge_detector.v radar_mode_controller.v \ + rx_gain_control.v # E2E integration (46 strict checks: TX, RX, USB R/W, CDC, safety, reset) run_test "System E2E (tb_system_e2e)" \ @@ -427,7 +439,8 @@ if [[ "$QUICK" -eq 0 ]]; then chirp_memory_loader_param.v latency_buffer.v \ matched_filter_multi_segment.v matched_filter_processing_chain.v \ range_bin_decimator.v doppler_processor.v xfft_32.v fft_engine.v \ - usb_data_interface.v edge_detector.v radar_mode_controller.v + usb_data_interface.v edge_detector.v radar_mode_controller.v \ + rx_gain_control.v else echo " (skipped receiver golden + system top + E2E — use without --quick)" SKIP=$((SKIP + 4)) diff --git a/9_Firmware/9_2_FPGA/rx_gain_control.v b/9_Firmware/9_2_FPGA/rx_gain_control.v new file mode 100644 index 0000000..8b258d7 --- /dev/null +++ b/9_Firmware/9_2_FPGA/rx_gain_control.v @@ -0,0 +1,95 @@ +`timescale 1ns / 1ps + +/** + * rx_gain_control.v + * + * Host-configurable digital gain control for the receive path. + * Placed between DDC output (ddc_input_interface) and matched filter input. + * + * Features: + * - Bidirectional power-of-2 gain shift (arithmetic shift) + * - gain_shift[3] = direction: 0 = left shift (amplify), 1 = right shift (attenuate) + * - gain_shift[2:0] = amount: 0..7 bits + * - Symmetric saturation to ±32767 on overflow (left shift only) + * - Saturation counter: 8-bit, counts samples that clipped (wraps at 255) + * - 1-cycle latency, valid-in/valid-out pipeline + * - Zero-overhead pass-through when gain_shift == 0 + * + * Intended insertion point in radar_receiver_final.v: + * ddc_input_interface → rx_gain_control → matched_filter_multi_segment + */ + +module rx_gain_control ( + input wire clk, + input wire reset_n, + + // Data input (from DDC / ddc_input_interface) + input wire signed [15:0] data_i_in, + input wire signed [15:0] data_q_in, + input wire valid_in, + + // Gain configuration (from host via USB command) + // [3] = direction: 0=amplify (left shift), 1=attenuate (right shift) + // [2:0] = shift amount: 0..7 bits + input wire [3:0] gain_shift, + + // Data output (to matched filter) + output reg signed [15:0] data_i_out, + output reg signed [15:0] data_q_out, + output reg valid_out, + + // Diagnostics + output reg [7:0] saturation_count // Number of clipped samples (wraps at 255) +); + +// Decompose gain_shift +wire shift_right = gain_shift[3]; +wire [2:0] shift_amt = gain_shift[2:0]; + +// ------------------------------------------------------------------------- +// Combinational shift + saturation +// ------------------------------------------------------------------------- +// Use wider intermediates to detect overflow on left shift. +// 24 bits is enough: 16 + 7 shift = 23 significant bits max. + +wire signed [23:0] shifted_i; +wire signed [23:0] shifted_q; + +assign shifted_i = shift_right ? (data_i_in >>> shift_amt) + : (data_i_in <<< shift_amt); +assign shifted_q = shift_right ? (data_q_in >>> shift_amt) + : (data_q_in <<< shift_amt); + +// Saturation: clamp to signed 16-bit range [-32768, +32767] +wire overflow_i = (shifted_i > 24'sd32767) || (shifted_i < -24'sd32768); +wire overflow_q = (shifted_q > 24'sd32767) || (shifted_q < -24'sd32768); + +wire signed [15:0] sat_i = overflow_i ? (shifted_i[23] ? -16'sd32768 : 16'sd32767) + : shifted_i[15:0]; +wire signed [15:0] sat_q = overflow_q ? (shifted_q[23] ? -16'sd32768 : 16'sd32767) + : shifted_q[15:0]; + +// ------------------------------------------------------------------------- +// Registered output stage (1-cycle latency) +// ------------------------------------------------------------------------- +always @(posedge clk or negedge reset_n) begin + if (!reset_n) begin + data_i_out <= 16'sd0; + data_q_out <= 16'sd0; + valid_out <= 1'b0; + saturation_count <= 8'd0; + end else begin + valid_out <= valid_in; + + if (valid_in) begin + data_i_out <= sat_i; + data_q_out <= sat_q; + + // Count clipped samples (either channel clipping counts as 1) + if ((overflow_i || overflow_q) && (saturation_count != 8'hFF)) + saturation_count <= saturation_count + 8'd1; + end + end +end + +endmodule diff --git a/9_Firmware/9_2_FPGA/tb/cosim/rx_final_doppler_out.csv b/9_Firmware/9_2_FPGA/tb/cosim/rx_final_doppler_out.csv index 534b3d4..515e434 100644 --- a/9_Firmware/9_2_FPGA/tb/cosim/rx_final_doppler_out.csv +++ b/9_Firmware/9_2_FPGA/tb/cosim/rx_final_doppler_out.csv @@ -1,2049 +1,2049 @@ cycle,range_bin,doppler_bin,output_hex -1038385000,0,0,00ccff51 -1038395000,0,1,ff7b0135 -1038405000,0,2,00d6fe35 -1038415000,0,3,0024016a -1038425000,0,4,fd7fff63 -1038435000,0,5,04e300fb -1038445000,0,6,fcc80088 -1038455000,0,7,0076fe24 -1038465000,0,8,ff2300e0 -1038475000,0,9,02200041 -1038485000,0,10,fdd4fe03 -1038495000,0,11,0179047e -1038505000,0,12,ff3bfc49 -1038515000,0,13,00c500b7 -1038525000,0,14,0012ff3e -1038535000,0,15,ffa7018f -1038545000,0,16,0086ff0b -1038555000,0,17,fed1012d -1038565000,0,18,00a8fef3 -1038575000,0,19,003e008a -1038585000,0,20,ffddffad -1038595000,0,21,ff93ff2d -1038605000,0,22,00c4ffbc -1038615000,0,23,fe4e00a8 -1038625000,0,24,02af0250 -1038635000,0,25,fe54fdad -1038645000,0,26,001a002d -1038655000,0,27,0079001a -1038665000,0,28,ffb5ffdb -1038675000,0,29,ffcd0001 -1038685000,0,30,01a6ff56 -1038695000,0,31,fd5900f9 -1042975000,1,0,feb0011a -1042985000,1,1,01980055 -1042995000,1,2,001fff35 -1043005000,1,3,ff8b010f -1043015000,1,4,ffa9ff13 -1043025000,1,5,01a2ff82 -1043035000,1,6,fe60008e -1043045000,1,7,003e00d4 -1043055000,1,8,ff31ff67 -1043065000,1,9,00b90055 -1043075000,1,10,fff8fec5 -1043085000,1,11,0082025f -1043095000,1,12,ffe7fe41 -1043105000,1,13,ff5dfe81 -1043115000,1,14,0114031a -1043125000,1,15,001efe2f -1043135000,1,16,fe300076 -1043145000,1,17,012a005d -1043155000,1,18,ffb1ff5d -1043165000,1,19,ffeb0125 -1043175000,1,20,ff11ff75 -1043185000,1,21,01d2ff76 -1043195000,1,22,0040015c -1043205000,1,23,fd42fcb4 -1043215000,1,24,04b303f9 -1043225000,1,25,fc4dfea1 -1043235000,1,26,01c4ff9d -1043245000,1,27,feb80039 -1043255000,1,28,002bffef -1043265000,1,29,00e7ff8f -1043275000,1,30,00800070 -1043285000,1,31,fee2febd -1047565000,2,0,0015ff8d -1047575000,2,1,ff52ffba -1047585000,2,2,01630169 -1047595000,2,3,ffc5ff4c -1047605000,2,4,fdf3ff66 -1047615000,2,5,02e4027f -1047625000,2,6,fe87fdec -1047635000,2,7,0112011a -1047645000,2,8,fe46ff9f -1047655000,2,9,0181ffc1 -1047665000,2,10,0012ff14 -1047675000,2,11,fec1010b -1047685000,2,12,010d005a -1047695000,2,13,fef2fdeb -1047705000,2,14,02100112 -1047715000,2,15,fe690125 -1047725000,2,16,ffa3004d -1047735000,2,17,0220fe62 -1047745000,2,18,fd55013f -1047755000,2,19,0123feb8 -1047765000,2,20,ffd7ff94 -1047775000,2,21,ff2a0189 -1047785000,2,22,0201ff52 -1047795000,2,23,fe46ffc6 -1047805000,2,24,014e0173 -1047815000,2,25,ff01feaf -1047825000,2,26,00ea0100 -1047835000,2,27,ff97fd6d -1047845000,2,28,ffed0370 -1047855000,2,29,feecfe31 -1047865000,2,30,02840084 -1047875000,2,31,fe3fff8f -1052155000,3,0,0110fffe -1052165000,3,1,ffbeffa0 -1052175000,3,2,00370120 -1052185000,3,3,003a0003 -1052195000,3,4,fde1feaa -1052205000,3,5,025502d3 -1052215000,3,6,ff30fd68 -1052225000,3,7,0044017c -1052235000,3,8,ffdfffe8 -1052245000,3,9,003bff9b -1052255000,3,10,ff95ff7b -1052265000,3,11,00800182 -1052275000,3,12,0005fe67 -1052285000,3,13,ff3bfed0 -1052295000,3,14,007f0167 -1052305000,3,15,ffe40181 -1052315000,3,16,017afec0 -1052325000,3,17,fde0006c -1052335000,3,18,0085ffd0 -1052345000,3,19,00f40003 -1052355000,3,20,fe87ff9e -1052365000,3,21,00a3fe79 -1052375000,3,22,ff6e031c -1052385000,3,23,00bcfd42 -1052395000,3,24,012b0302 -1052405000,3,25,fe6bfdad -1052415000,3,26,01530059 -1052425000,3,27,fe920160 -1052435000,3,28,009ffe51 -1052445000,3,29,ff89ffb8 -1052455000,3,30,012f0249 -1052465000,3,31,fe4cfe11 -1056745000,4,0,ff3300d6 -1056755000,4,1,0140ff59 -1056765000,4,2,00b2ffad -1056775000,4,3,fe3c01c9 -1056785000,4,4,004fff66 -1056795000,4,5,0318ff62 -1056805000,4,6,fd750031 -1056815000,4,7,ff160061 -1056825000,4,8,019fffd7 -1056835000,4,9,fee80012 -1056845000,4,10,fffeff25 -1056855000,4,11,0091022a -1056865000,4,12,0011fd75 -1056875000,4,13,ff4b00f2 -1056885000,4,14,010bffda -1056895000,4,15,00110052 -1056905000,4,16,ff47fff4 -1056915000,4,17,004c0173 -1056925000,4,18,ff4efe15 -1056935000,4,19,010800ff -1056945000,4,20,fed7ff48 -1056955000,4,21,0070ffe4 -1056965000,4,22,00990121 -1056975000,4,23,fe10fdef -1056985000,4,24,049703e3 -1056995000,4,25,fba8fc46 -1057005000,4,26,01f201b9 -1057015000,4,27,0037ffbe -1057025000,4,28,fe69ffb1 -1057035000,4,29,0279ff84 -1057045000,4,30,ff47012c -1057055000,4,31,feb5fe7e -1061335000,5,0,016301fc -1061345000,5,1,fea1000d -1061355000,5,2,00a7ff52 -1061365000,5,3,004b0145 -1061375000,5,4,ff510068 -1061385000,5,5,0165ff0d -1061395000,5,6,fe81fe93 -1061405000,5,7,005a0229 -1061415000,5,8,ff92fe8f -1061425000,5,9,00d30104 -1061435000,5,10,ff32ff37 -1061445000,5,11,014d0226 -1061455000,5,12,fecdfd29 -1061465000,5,13,00a20124 -1061475000,5,14,00f3ff03 -1061485000,5,15,fdaa00e6 -1061495000,5,16,02bbffa4 -1061505000,5,17,fe8500ed -1061515000,5,18,fe93ff90 -1061525000,5,19,01bfff31 -1061535000,5,20,fef3011a -1061545000,5,21,00a3fee9 -1061555000,5,22,ff4100cf -1061565000,5,23,008400c7 -1061575000,5,24,01c8fe39 -1061585000,5,25,fe1700d6 -1061595000,5,26,003800eb -1061605000,5,27,00f5fe68 -1061615000,5,28,ff47016d -1061625000,5,29,000efe72 -1061635000,5,30,ff270297 -1061645000,5,31,0014fc46 -1065925000,6,0,00bd0135 -1065935000,6,1,0044001d -1065945000,6,2,ff78fe6c -1065955000,6,3,0199009d -1065965000,6,4,fd0500fc -1065975000,6,5,03f3fff8 -1065985000,6,6,fc670028 -1065995000,6,7,0117fddc -1066005000,6,8,01450299 -1066015000,6,9,fed9fe4c -1066025000,6,10,00170024 -1066035000,6,11,00aa00bc -1066045000,6,12,fe84ff16 -1066055000,6,13,019c00ee -1066065000,6,14,ff7fff71 -1066075000,6,15,ff46ffb1 -1066085000,6,16,017300ad -1066095000,6,17,ffd2ff21 -1066105000,6,18,ff2a01dc -1066115000,6,19,ff29fe57 -1066125000,6,20,00a10090 -1066135000,6,21,00d3ff80 -1066145000,6,22,fe79ff4e -1066155000,6,23,008301da -1066165000,6,24,0217fe95 -1066175000,6,25,fd85028e -1066185000,6,26,01abfd18 -1066195000,6,27,ffa801ec -1066205000,6,28,0062ff0e -1066215000,6,29,fe02ffea -1066225000,6,30,01f5ff75 -1066235000,6,31,fe64fff5 -1070515000,7,0,006e0292 -1070525000,7,1,005bfeba -1070535000,7,2,000cff3b -1070545000,7,3,ff530197 -1070555000,7,4,002dff2a -1070565000,7,5,022e000f -1070575000,7,6,fe63fffb -1070585000,7,7,ffc30131 -1070595000,7,8,ffa2fe9e -1070605000,7,9,ff070153 -1070615000,7,10,0201fe27 -1070625000,7,11,018a015b -1070635000,7,12,fc5efea0 -1070645000,7,13,035000c2 -1070655000,7,14,fdb6ffb0 -1070665000,7,15,00ebffdf -1070675000,7,16,fece0014 -1070685000,7,17,00d3ffe4 -1070695000,7,18,ffba011d -1070705000,7,19,ffabffd1 -1070715000,7,20,0049fede -1070725000,7,21,0082017d -1070735000,7,22,ff11fedb -1070745000,7,23,00830073 -1070755000,7,24,009efef8 -1070765000,7,25,fea701f3 -1070775000,7,26,0205ff59 -1070785000,7,27,fda4fe7d -1070795000,7,28,01a0031c -1070805000,7,29,ff44fd06 -1070815000,7,30,018a02b2 -1070825000,7,31,fe13fcf5 -1075105000,8,0,00580199 -1075115000,8,1,00fafea3 -1075125000,8,2,ff4d016f -1075135000,8,3,ff1aff40 -1075145000,8,4,ff3a0116 -1075155000,8,5,03b8fe95 -1075165000,8,6,fc98016f -1075175000,8,7,01cffed4 -1075185000,8,8,009c0027 -1075195000,8,9,fe0f001c -1075205000,8,10,00b5ff7d -1075215000,8,11,ff070355 -1075225000,8,12,014bfc04 -1075235000,8,13,febf0092 -1075245000,8,14,02800128 -1075255000,8,15,fe41fed1 -1075265000,8,16,003e00f9 -1075275000,8,17,01040007 -1075285000,8,18,fe13ffb5 -1075295000,8,19,00660062 -1075305000,8,20,00b8ffb6 -1075315000,8,21,ff68005f -1075325000,8,22,00a8ff5b -1075335000,8,23,fd9fffd2 -1075345000,8,24,0416007f -1075355000,8,25,fe43012a -1075365000,8,26,ff4bfe67 -1075375000,8,27,01c5001d -1075385000,8,28,fe1b0090 -1075395000,8,29,0171fffa -1075405000,8,30,ff30001e -1075415000,8,31,ff75fe55 -1079695000,9,0,01dffffb -1079705000,9,1,ff12ffe4 -1079715000,9,2,00b0010a -1079725000,9,3,fffbfed4 -1079735000,9,4,fe3affce -1079745000,9,5,020f01b2 -1079755000,9,6,fe9cff68 -1079765000,9,7,01810069 -1079775000,9,8,fe23ff00 -1079785000,9,9,033f00b5 -1079795000,9,10,fd38ff00 -1079805000,9,11,febd012a -1079815000,9,12,032cfea5 -1079825000,9,13,fe2f0123 -1079835000,9,14,0073fea7 -1079845000,9,15,008801fa -1079855000,9,16,ffd3fffb -1079865000,9,17,00a2fea8 -1079875000,9,18,fd3200ec -1079885000,9,19,0249ff16 -1079895000,9,20,000800a8 -1079905000,9,21,fec5ffa8 -1079915000,9,22,01c2ffd6 -1079925000,9,23,fe6d0039 -1079935000,9,24,00db0122 -1079945000,9,25,0049fe3b -1079955000,9,26,ffb2022a -1079965000,9,27,ffcffd90 -1079975000,9,28,006a00fd -1079985000,9,29,0019000f -1079995000,9,30,004b001b -1080005000,9,31,fdf2ff68 -1084285000,10,0,01c4fe02 -1084295000,10,1,ff330121 -1084305000,10,2,ff7d0033 -1084315000,10,3,0090ff1a -1084325000,10,4,feebffa7 -1084335000,10,5,01980375 -1084345000,10,6,feccfd52 -1084355000,10,7,018600d4 -1084365000,10,8,fe30ffab -1084375000,10,9,01670050 -1084385000,10,10,ff77fe8b -1084395000,10,11,feea0247 -1084405000,10,12,024efdfe -1084415000,10,13,fe260076 -1084425000,10,14,0229ff97 -1084435000,10,15,fea400f8 -1084445000,10,16,feccfff6 -1084455000,10,17,021bff43 -1084465000,10,18,fd0b0193 -1084475000,10,19,01b4fd84 -1084485000,10,20,007d02ad -1084495000,10,21,0040fe2b -1084505000,10,22,000200dc -1084515000,10,23,fe56feb0 -1084525000,10,24,01a00245 -1084535000,10,25,ff9ffde0 -1084545000,10,26,ff7d013f -1084555000,10,27,ffd6feaf -1084565000,10,28,01d20196 -1084575000,10,29,fe3effbe -1084585000,10,30,00a5ffbb -1084595000,10,31,feec00a8 -1088875000,11,0,017f0007 -1088885000,11,1,00f2021d -1088895000,11,2,fe46fded -1088905000,11,3,016b00e4 -1088915000,11,4,fda6004c -1088925000,11,5,03750171 -1088935000,11,6,fe77fe94 -1088945000,11,7,ff14ff6f -1088955000,11,8,011200ba -1088965000,11,9,ff7800b7 -1088975000,11,10,0033fd9f -1088985000,11,11,ff900334 -1088995000,11,12,0105fcf9 -1089005000,11,13,ff9701b6 -1089015000,11,14,fff4ff27 -1089025000,11,15,0061fff2 -1089035000,11,16,ff9d0139 -1089045000,11,17,fe8a0049 -1089055000,11,18,019efee9 -1089065000,11,19,007bff1a -1089075000,11,20,ff9e028e -1089085000,11,21,ffa7fcbd -1089095000,11,22,ffd302f0 -1089105000,11,23,ffd6fdc5 -1089115000,11,24,006601d2 -1089125000,11,25,0068ff03 -1089135000,11,26,ffad001f -1089145000,11,27,ffde004a -1089155000,11,28,0163ff49 -1089165000,11,29,fe2100f4 -1089175000,11,30,020e0099 -1089185000,11,31,fce1fda6 -1093465000,12,0,011100ff -1093475000,12,1,ffaafef9 -1093485000,12,2,ffcb008c -1093495000,12,3,00880041 -1093505000,12,4,fe1e004c -1093515000,12,5,03df005d -1093525000,12,6,fe0cffea -1093535000,12,7,ffcfff7e -1093545000,12,8,feeaffe2 -1093555000,12,9,009b0126 -1093565000,12,10,0121fbe7 -1093575000,12,11,ff7f05fa -1093585000,12,12,ffb2fba6 -1093595000,12,13,019e00d7 -1093605000,12,14,fe3f01c1 -1093615000,12,15,0041fe53 -1093625000,12,16,004d00ff -1093635000,12,17,0050ff6f -1093645000,12,18,fe91000a -1093655000,12,19,00a4ffc1 -1093665000,12,20,0176ff82 -1093675000,12,21,fdc100a9 -1093685000,12,22,019e00e2 -1093695000,12,23,fe93fe34 -1093705000,12,24,01e80178 -1093715000,12,25,ff5bffca -1093725000,12,26,ffabff6f -1093735000,12,27,ff050078 -1093745000,12,28,013a0034 -1093755000,12,29,001aff13 -1093765000,12,30,006f00d7 -1093775000,12,31,fe35feef -1098055000,13,0,fd7b0008 -1098065000,13,1,033bffae -1098075000,13,2,fd51ffa5 -1098085000,13,3,01630130 -1098095000,13,4,fe2800b4 -1098105000,13,5,04c5fd5a -1098115000,13,6,fd000282 -1098125000,13,7,ff6dfe01 -1098135000,13,8,00f40242 -1098145000,13,9,ff9cfdef -1098155000,13,10,005cff82 -1098165000,13,11,fec0031b -1098175000,13,12,0101fdca -1098185000,13,13,ffc3ffcb -1098195000,13,14,00b20040 -1098205000,13,15,ffa5ff56 -1098215000,13,16,00450104 -1098225000,13,17,ffd9ffd2 -1098235000,13,18,ff55ffc1 -1098245000,13,19,ffed00a2 -1098255000,13,20,ffceff24 -1098265000,13,21,ffb100fc -1098275000,13,22,012cff0a -1098285000,13,23,feb90085 -1098295000,13,24,02a800d2 -1098305000,13,25,fd5cffb9 -1098315000,13,26,0146fe8c -1098325000,13,27,fff400d3 -1098335000,13,28,ffcd00d6 -1098345000,13,29,ff9bfe47 -1098355000,13,30,010a0208 -1098365000,13,31,0001fef4 -1102645000,14,0,fef10080 -1102655000,14,1,01ce0054 -1102665000,14,2,ffa7ffb8 -1102675000,14,3,ff2100ee -1102685000,14,4,fefcff94 -1102695000,14,5,0345ff9e -1102705000,14,6,fe0cffd6 -1102715000,14,7,fe94009e -1102725000,14,8,01a1ff9f -1102735000,14,9,010a012f -1102745000,14,10,fea9fdd2 -1102755000,14,11,0042029f -1102765000,14,12,00f6fe3f -1102775000,14,13,fe8dfe9a -1102785000,14,14,018c0126 -1102795000,14,15,ffb0ffc3 -1102805000,14,16,fe51011c -1102815000,14,17,01a40006 -1102825000,14,18,fe27fea2 -1102835000,14,19,01570100 -1102845000,14,20,ff2cffe8 -1102855000,14,21,0041ff1a -1102865000,14,22,01900210 -1102875000,14,23,fe38fcc8 -1102885000,14,24,01c90281 -1102895000,14,25,fd10febb -1102905000,14,26,02cd0100 -1102915000,14,27,fe66004b -1102925000,14,28,00660001 -1102935000,14,29,ffc9fefa -1102945000,14,30,005400a0 -1102955000,14,31,000cff1f -1107235000,15,0,fe29014e -1107245000,15,1,0220fe40 -1107255000,15,2,ff6d0124 -1107265000,15,3,0057fd78 -1107275000,15,4,fdff02de -1107285000,15,5,0239fed3 -1107295000,15,6,fefb004c -1107305000,15,7,ff7afffb -1107315000,15,8,01000097 -1107325000,15,9,00150013 -1107335000,15,10,fef8fe2a -1107345000,15,11,ffab0239 -1107355000,15,12,0299fe0a -1107365000,15,13,fcce016d -1107375000,15,14,027bff0e -1107385000,15,15,ff220022 -1107395000,15,16,ff9d0040 -1107405000,15,17,00f8ff04 -1107415000,15,18,fed701de -1107425000,15,19,ff5d002a -1107435000,15,20,00edff4e -1107445000,15,21,ff1d0055 -1107455000,15,22,0149fe28 -1107465000,15,23,002201a1 -1107475000,15,24,001200c3 -1107485000,15,25,007ffdf9 -1107495000,15,26,ff500170 -1107505000,15,27,0035ffa9 -1107515000,15,28,ff430062 -1107525000,15,29,fee8fed3 -1107535000,15,30,02c50082 -1107545000,15,31,ff46ffe6 -1111825000,16,0,0011ff74 -1111835000,16,1,00b30137 -1111845000,16,2,fff9fed4 -1111855000,16,3,ff1200a1 -1111865000,16,4,fe17000f -1111875000,16,5,048b011c -1111885000,16,6,fd30fe9b -1111895000,16,7,00110000 -1111905000,16,8,000500c3 -1111915000,16,9,003e0018 -1111925000,16,10,00fefe26 -1111935000,16,11,fe59043b -1111945000,16,12,0141fb8f -1111955000,16,13,ffba00d7 -1111965000,16,14,ff4d0140 -1111975000,16,15,0222feaf -1111985000,16,16,fd8501dc -1111995000,16,17,0191ff6b -1112005000,16,18,ff19ff3c -1112015000,16,19,fed20087 -1112025000,16,20,01fffeb7 -1112035000,16,21,ff2b00f0 -1112045000,16,22,0076019b -1112055000,16,23,fea5fd7e -1112065000,16,24,03a502c9 -1112075000,16,25,fcdafdf2 -1112085000,16,26,0144ffda -1112095000,16,27,ff4bfff1 -1112105000,16,28,008100a7 -1112115000,16,29,ff3cff69 -1112125000,16,30,00510172 -1112135000,16,31,ffe8feb7 -1116415000,17,0,0152ffa7 -1116425000,17,1,0116ffe7 -1116435000,17,2,fdddffc7 -1116445000,17,3,028d007a -1116455000,17,4,fc8eff8f -1116465000,17,5,04850073 -1116475000,17,6,fca501e1 -1116485000,17,7,0166fda5 -1116495000,17,8,fee60012 -1116505000,17,9,004f01e8 -1116515000,17,10,0093fd29 -1116525000,17,11,fee802d9 -1116535000,17,12,016dfde6 -1116545000,17,13,ffc100d5 -1116555000,17,14,003dff73 -1116565000,17,15,feefff3d -1116575000,17,16,01140285 -1116585000,17,17,ff6cfe25 -1116595000,17,18,fee300af -1116605000,17,19,008f010e -1116615000,17,20,00f4feaf -1116625000,17,21,ff79ffbb -1116635000,17,22,005500d1 -1116645000,17,23,fef6fe97 -1116655000,17,24,02c0024a -1116665000,17,25,fd4ffe84 -1116675000,17,26,01790061 -1116685000,17,27,fec4ff8b -1116695000,17,28,00950064 -1116705000,17,29,0039ffbd -1116715000,17,30,01cd00db -1116725000,17,31,fc75ff53 -1121005000,18,0,025c00de -1121015000,18,1,fea8ffb5 -1121025000,18,2,013bff8e -1121035000,18,3,fe0d0025 -1121045000,18,4,000e0077 -1121055000,18,5,03890069 -1121065000,18,6,fd30ffac -1121075000,18,7,01cfffc0 -1121085000,18,8,fd4fffeb -1121095000,18,9,019c0136 -1121105000,18,10,fefdfd85 -1121115000,18,11,01a5024e -1121125000,18,12,fe99fee6 -1121135000,18,13,009bff70 -1121145000,18,14,016d0163 -1121155000,18,15,fe47ff55 -1121165000,18,16,001e0024 -1121175000,18,17,017c0047 -1121185000,18,18,fd35fee0 -1121195000,18,19,01b301a3 -1121205000,18,20,ff90fe2b -1121215000,18,21,000b0081 -1121225000,18,22,005a0200 -1121235000,18,23,fecdfd4c -1121245000,18,24,0337018f -1121255000,18,25,fda0ffc6 -1121265000,18,26,00b30031 -1121275000,18,27,fed7ff36 -1121285000,18,28,0069002c -1121295000,18,29,00490116 -1121305000,18,30,0229fe2d -1121315000,18,31,fc29005b -1125595000,19,0,fedc00ce -1125605000,19,1,011eff58 -1125615000,19,2,ff39fff7 -1125625000,19,3,01c6025e -1125635000,19,4,fd87fd00 -1125645000,19,5,02da0299 -1125655000,19,6,fe2afe6e -1125665000,19,7,00e00014 -1125675000,19,8,fec1015e -1125685000,19,9,005ffe0f -1125695000,19,10,006300ee -1125705000,19,11,005f010a -1125715000,19,12,fee1fe63 -1125725000,19,13,00b9ff7e -1125735000,19,14,0168ffee -1125745000,19,15,fed501ad -1125755000,19,16,ff20ff76 -1125765000,19,17,00d2012a -1125775000,19,18,0045fe6f -1125785000,19,19,feee0044 -1125795000,19,20,ffa9ffa8 -1125805000,19,21,0188ffed -1125815000,19,22,002200fc -1125825000,19,23,fdb6fde0 -1125835000,19,24,02e70312 -1125845000,19,25,fde5fecb -1125855000,19,26,020fff60 -1125865000,19,27,fdd1008c -1125875000,19,28,021bfff9 -1125885000,19,29,fee1ffc8 -1125895000,19,30,ffdc005c -1125905000,19,31,0031fedf -1130185000,20,0,00b901e7 -1130195000,20,1,00d3feb2 -1130205000,20,2,fef0ffe5 -1130215000,20,3,012101b9 -1130225000,20,4,fd9aff37 -1130235000,20,5,047700be -1130245000,20,6,fc74fec5 -1130255000,20,7,01ae00de -1130265000,20,8,feecff32 -1130275000,20,9,ff80008e -1130285000,20,10,012dff4d -1130295000,20,11,ff2900f9 -1130305000,20,12,0062ff50 -1130315000,20,13,0067ffa4 -1130325000,20,14,fff3004a -1130335000,20,15,005200c4 -1130345000,20,16,ff45003f -1130355000,20,17,013dffce -1130365000,20,18,fd42ff01 -1130375000,20,19,01490077 -1130385000,20,20,011eff6b -1130395000,20,21,fe990054 -1130405000,20,22,00ee0137 -1130415000,20,23,fe44fe20 -1130425000,20,24,04420224 -1130435000,20,25,fc4cff2e -1130445000,20,26,0165ffdd -1130455000,20,27,ff5dfecf -1130465000,20,28,0022012a -1130475000,20,29,00ed0126 -1130485000,20,30,003ffe22 -1130495000,20,31,fdccff1e -1134775000,21,0,ffd9ff08 -1134785000,21,1,011effc5 -1134795000,21,2,fe620006 -1134805000,21,3,01c30206 -1134815000,21,4,fe0aff73 -1134825000,21,5,01f2ff49 -1134835000,21,6,ff040085 -1134845000,21,7,003f001a -1134855000,21,8,ff38fece -1134865000,21,9,015e0168 -1134875000,21,10,ff5efd2a -1134885000,21,11,fff1041c -1134895000,21,12,ffcffd52 -1134905000,21,13,ffcc005d -1134915000,21,14,012fffbb -1134925000,21,15,ff340122 -1134935000,21,16,ffc3ffc8 -1134945000,21,17,015afeab -1134955000,21,18,fd90022e -1134965000,21,19,0223fe1c -1134975000,21,20,ff40ffbd -1134985000,21,21,fe940099 -1134995000,21,22,0170010d -1135005000,21,23,ff27ff50 -1135015000,21,24,0180fffe -1135025000,21,25,fea20060 -1135035000,21,26,016cfff2 -1135045000,21,27,ff6dfeaa -1135055000,21,28,013b026a -1135065000,21,29,fd86fd79 -1135075000,21,30,008901bb -1135085000,21,31,0042ffbc -1139365000,22,0,fe4dfe8d -1139375000,22,1,02dcfea2 -1139385000,22,2,fd63028f -1139395000,22,3,01c0fea6 -1139405000,22,4,fe94ff9b -1139415000,22,5,00dc0102 -1139425000,22,6,011200a9 -1139435000,22,7,ffb9ff0f -1139445000,22,8,fe660004 -1139455000,22,9,0178ff8e -1139465000,22,10,ff1a004c -1139475000,22,11,0020003b -1139485000,22,12,ff0cff3e -1139495000,22,13,017b01a4 -1139505000,22,14,ff7afd26 -1139515000,22,15,00a80302 -1139525000,22,16,009dfea3 -1139535000,22,17,fdc8ff34 -1139545000,22,18,0199022b -1139555000,22,19,fd9efe7a -1139565000,22,20,03a40087 -1139575000,22,21,fc6affd0 -1139585000,22,22,01e2ff73 -1139595000,22,23,ffbd00a1 -1139605000,22,24,009c00bc -1139615000,22,25,ff98ff7c -1139625000,22,26,ff2eff9e -1139635000,22,27,01a200b5 -1139645000,22,28,fff8ff50 -1139655000,22,29,ff23ffca -1139665000,22,30,0076ffba -1139675000,22,31,ffda01de -1143955000,23,0,007e0147 -1143965000,23,1,fefffe5d -1143975000,23,2,fff601ac -1143985000,23,3,0045ff70 -1143995000,23,4,ff92ff4c -1144005000,23,5,0134016b -1144015000,23,6,ff82ffa2 -1144025000,23,7,006900e7 -1144035000,23,8,fdfcfd5f -1144045000,23,9,021a0295 -1144055000,23,10,fe61fd65 -1144065000,23,11,010d03e8 -1144075000,23,12,00ccfd2b -1144085000,23,13,fef30048 -1144095000,23,14,01b0ff65 -1144105000,23,15,fe500155 -1144115000,23,16,ffcaff0d -1144125000,23,17,0185ff5f -1144135000,23,18,fdc20278 -1144145000,23,19,0089fe84 -1144155000,23,20,0190fed0 -1144165000,23,21,fdf40229 -1144175000,23,22,010cff94 -1144185000,23,23,0109febf -1144195000,23,24,ff640019 -1144205000,23,25,00260103 -1144215000,23,26,ff570117 -1144225000,23,27,002dfc68 -1144235000,23,28,0002036d -1144245000,23,29,ff69fcd0 -1144255000,23,30,00ca0385 -1144265000,23,31,ffdefd81 -1148545000,24,0,fed5001f -1148555000,24,1,02bd00bd -1148565000,24,2,fd3d00f4 -1148575000,24,3,0179fe5f -1148585000,24,4,fcde0399 -1148595000,24,5,04e8fce3 -1148605000,24,6,fdc0011a -1148615000,24,7,fffeffe1 -1148625000,24,8,0065fe7c -1148635000,24,9,ffdf021d -1148645000,24,10,ff61fd96 -1148655000,24,11,00ea03f5 -1148665000,24,12,0000fcc4 -1148675000,24,13,fe6b0075 -1148685000,24,14,02d2ffc7 -1148695000,24,15,fe2700c3 -1148705000,24,16,004dfffd -1148715000,24,17,0195ff7f -1148725000,24,18,fd8f00d8 -1148735000,24,19,fff1fef3 -1148745000,24,20,01c8ffe7 -1148755000,24,21,fe9e0067 -1148765000,24,22,009effc4 -1148775000,24,23,feceffc1 -1148785000,24,24,01d901a0 -1148795000,24,25,006bfef3 -1148805000,24,26,fd93ffe2 -1148815000,24,27,029cffc5 -1148825000,24,28,fdd2001c -1148835000,24,29,006b008d -1148845000,24,30,00b8009f -1148855000,24,31,ffa5fdd7 -1153135000,25,0,02bf00eb -1153145000,25,1,ff90ff24 -1153155000,25,2,fed8fff8 -1153165000,25,3,00f40010 -1153175000,25,4,ff790169 -1153185000,25,5,0095ff1d -1153195000,25,6,ff5fff16 -1153205000,25,7,011f01c7 -1153215000,25,8,fe41fe2e -1153225000,25,9,004201ca -1153235000,25,10,00fafeab -1153245000,25,11,fd93020a -1153255000,25,12,0358fcd2 -1153265000,25,13,fe7a0261 -1153275000,25,14,00e9fe55 -1153285000,25,15,00250086 -1153295000,25,16,feab017b -1153305000,25,17,005cfe5a -1153315000,25,18,fe9401ca -1153325000,25,19,0176fed2 -1153335000,25,20,005bffe5 -1153345000,25,21,ff210041 -1153355000,25,22,01110036 -1153365000,25,23,fef3ff95 -1153375000,25,24,021500cc -1153385000,25,25,ff3afecc -1153395000,25,26,ff4a0223 -1153405000,25,27,ff4ffc08 -1153415000,25,28,01cc0340 -1153425000,25,29,fec00045 -1153435000,25,30,018ffe3f -1153445000,25,31,fcd5ffe2 -1157725000,26,0,007bfe19 -1157735000,26,1,ffc7037b -1157745000,26,2,0093fdb5 -1157755000,26,3,ff5a0029 -1157765000,26,4,ff590087 -1157775000,26,5,027e00e8 -1157785000,26,6,fe3eff26 -1157795000,26,7,0052ffbd -1157805000,26,8,004bffac -1157815000,26,9,ff1302ad -1157825000,26,10,0154fca4 -1157835000,26,11,fe400272 -1157845000,26,12,01b6fcc1 -1157855000,26,13,00a00290 -1157865000,26,14,fdc2fed6 -1157875000,26,15,023801c9 -1157885000,26,16,fe55fe33 -1157895000,26,17,0153015f -1157905000,26,18,fe5dfef1 -1157915000,26,19,007600db -1157925000,26,20,012ffe49 -1157935000,26,21,fea60136 -1157945000,26,22,015e00d8 -1157955000,26,23,feacfd3f -1157965000,26,24,00e90334 -1157975000,26,25,fee3fd4d -1157985000,26,26,01cc01ee -1157995000,26,27,fefcff26 -1158005000,26,28,fede023b -1158015000,26,29,0224fcae -1158025000,26,30,ff8200ac -1158035000,26,31,feb600bf -1162315000,27,0,01d201ce -1162325000,27,1,ff8cff8a -1162335000,27,2,000b0004 -1162345000,27,3,ff6201d7 -1162355000,27,4,ffb5febb -1162365000,27,5,030c008e -1162375000,27,6,fbecffcc -1162385000,27,7,01d5ff28 -1162395000,27,8,0098ff17 -1162405000,27,9,ffc202de -1162415000,27,10,ffa5fcdd -1162425000,27,11,00710194 -1162435000,27,12,ff21ffd2 -1162445000,27,13,01b70013 -1162455000,27,14,fd460060 -1162465000,27,15,01edff46 -1162475000,27,16,fe6600f6 -1162485000,27,17,025cfed0 -1162495000,27,18,fe59ffa2 -1162505000,27,19,ff6801df -1162515000,27,20,00d9fd63 -1162525000,27,21,ff980236 -1162535000,27,22,01140026 -1162545000,27,23,ff13ff9a -1162555000,27,24,ffcc0035 -1162565000,27,25,0002ffa4 -1162575000,27,26,01ab0035 -1162585000,27,27,fe1dff46 -1162595000,27,28,012d0180 -1162605000,27,29,fea9feb5 -1162615000,27,30,02de0206 -1162625000,27,31,fcd3fc70 -1166905000,28,0,013b0085 -1166915000,28,1,ffae001b -1166925000,28,2,ff8dff4e -1166935000,28,3,016d0126 -1166945000,28,4,fd67ff8a -1166955000,28,5,03c7006f -1166965000,28,6,fe9d008f -1166975000,28,7,fe64fea1 -1166985000,28,8,00900131 -1166995000,28,9,0056ff45 -1167005000,28,10,ff71fe7e -1167015000,28,11,023f0519 -1167025000,28,12,fda6fa76 -1167035000,28,13,01f201f8 -1167045000,28,14,feb60026 -1167055000,28,15,00300028 -1167065000,28,16,0123ff1d -1167075000,28,17,fef200a9 -1167085000,28,18,feef0056 -1167095000,28,19,010dff50 -1167105000,28,20,ffe3ffb4 -1167115000,28,21,fffb00df -1167125000,28,22,ff630049 -1167135000,28,23,00e2ff45 -1167145000,28,24,016a001d -1167155000,28,25,fdce0053 -1167165000,28,26,0147fe66 -1167175000,28,27,fde70251 -1167185000,28,28,02b0fe5c -1167195000,28,29,fe080056 -1167205000,28,30,01de018a -1167215000,28,31,fdaafe0a -1171495000,29,0,00a6fec6 -1171505000,29,1,005d0209 -1171515000,29,2,feadfe45 -1171525000,29,3,00f801bf -1171535000,29,4,feb6012b -1171545000,29,5,0279fd41 -1171555000,29,6,feaa01aa -1171565000,29,7,ff69feb6 -1171575000,29,8,01570175 -1171585000,29,9,fe7efe1f -1171595000,29,10,017800bb -1171605000,29,11,fe170248 -1171615000,29,12,01c9fd55 -1171625000,29,13,ff2effab -1171635000,29,14,00c70242 -1171645000,29,15,fff7fd39 -1171655000,29,16,ffb40276 -1171665000,29,17,00a3ff33 -1171675000,29,18,fd7b002f -1171685000,29,19,0258ffb5 -1171695000,29,20,fed8ff0d -1171705000,29,21,ffe50119 -1171715000,29,22,0092002c -1171725000,29,23,ffe9ffd8 -1171735000,29,24,0177ff3f -1171745000,29,25,ff0e011d -1171755000,29,26,ff08ff49 -1171765000,29,27,00a1018c -1171775000,29,28,0091fd1b -1171785000,29,29,fee00283 -1171795000,29,30,0115fee8 -1171805000,29,31,fee7ffe1 -1176085000,30,0,000700e2 -1176095000,30,1,ffe1fe96 -1176105000,30,2,000a0195 -1176115000,30,3,0071ffde -1176125000,30,4,ff2dffb1 -1176135000,30,5,0249006d -1176145000,30,6,fea1fff2 -1176155000,30,7,fee2ff88 -1176165000,30,8,01d70006 -1176175000,30,9,ffcb00a8 -1176185000,30,10,ff05fd6c -1176195000,30,11,000e0371 -1176205000,30,12,ffeefe16 -1176215000,30,13,019fffaf -1176225000,30,14,fdf300d2 -1176235000,30,15,0174fefe -1176245000,30,16,ffdd012a -1176255000,30,17,00d7feee -1176265000,30,18,fdd6009d -1176275000,30,19,000d0084 -1176285000,30,20,0003febd -1176295000,30,21,fee700e7 -1176305000,30,22,0413fff8 -1176315000,30,23,fcd0feca -1176325000,30,24,00e901b6 -1176335000,30,25,ff39ff7c -1176345000,30,26,013fffc2 -1176355000,30,27,ffe400cd -1176365000,30,28,ff4600ac -1176375000,30,29,001dfddd -1176385000,30,30,008d00fc -1176395000,30,31,ff62ff78 -1180675000,31,0,fe05ff1e -1180685000,31,1,03b2ff97 -1180695000,31,2,fb7c00f4 -1180705000,31,3,037cfeae -1180715000,31,4,ffb900ae -1180725000,31,5,ffc2ffa7 -1180735000,31,6,00190204 -1180745000,31,7,ff4bfe43 -1180755000,31,8,fffd0053 -1180765000,31,9,00a3ffe8 -1180775000,31,10,fe760006 -1180785000,31,11,010b00c7 -1180795000,31,12,018ffe86 -1180805000,31,13,ff1300cd -1180815000,31,14,0054ff36 -1180825000,31,15,fec400e8 -1180835000,31,16,017bfeb4 -1180845000,31,17,fe4600a5 -1180855000,31,18,00de01d6 -1180865000,31,19,ff9efe12 -1180875000,31,20,ffc5ffbe -1180885000,31,21,004e013d -1180895000,31,22,00fbff16 -1180905000,31,23,ff23001b -1180915000,31,24,ff67ffbf -1180925000,31,25,00b9018c -1180935000,31,26,0090feac -1180945000,31,27,ffc70075 -1180955000,31,28,ffd7ff9a -1180965000,31,29,fec9ff5f -1180975000,31,30,01d00094 -1180985000,31,31,ff42012e -1185265000,32,0,00850156 -1185275000,32,1,0021fdec -1185285000,32,2,01460171 -1185295000,32,3,fde400f1 -1185305000,32,4,0031fe5d -1185315000,32,5,01a60238 -1185325000,32,6,fe38fdc6 -1185335000,32,7,00fe010a -1185345000,32,8,fefcfece -1185355000,32,9,019601dc -1185365000,32,10,fe7efd0f -1185375000,32,11,fffa04cf -1185385000,32,12,0080fd3c -1185395000,32,13,ff8dfed6 -1185405000,32,14,018d0272 -1185415000,32,15,ff88fd88 -1185425000,32,16,ff4501d0 -1185435000,32,17,fe8f0042 -1185445000,32,18,029eff5f -1185455000,32,19,ffac008b -1185465000,32,20,fe6bff49 -1185475000,32,21,00bc002e -1185485000,32,22,00d6ffc6 -1185495000,32,23,fe14ff7e -1185505000,32,24,03da02dc -1185515000,32,25,fcc6fdce -1185525000,32,26,01c2ffe9 -1185535000,32,27,ff0e0015 -1185545000,32,28,00f400a6 -1185555000,32,29,fefdfdec -1185565000,32,30,01210232 -1185575000,32,31,fe46fe40 -1189855000,33,0,0106024a -1189865000,33,1,ff6b0039 -1189875000,33,2,0068fed2 -1189885000,33,3,0049006e -1189895000,33,4,fe150071 -1189905000,33,5,02e5ffc2 -1189915000,33,6,feb2fe82 -1189925000,33,7,005a02e8 -1189935000,33,8,feb2fdc8 -1189945000,33,9,00a40092 -1189955000,33,10,0063feae -1189965000,33,11,006102ba -1189975000,33,12,ff48fde6 -1189985000,33,13,ff9afff0 -1189995000,33,14,00a70182 -1190005000,33,15,004fff83 -1190015000,33,16,ff42ffdc -1190025000,33,17,0015ffc9 -1190035000,33,18,ffa0fffe -1190045000,33,19,011d0054 -1190055000,33,20,fdc30069 -1190065000,33,21,02c5fef0 -1190075000,33,22,ff2e00c8 -1190085000,33,23,fec6fea6 -1190095000,33,24,026e0322 -1190105000,33,25,fdd0fda8 -1190115000,33,26,01810132 -1190125000,33,27,fec10014 -1190135000,33,28,00a0fe60 -1190145000,33,29,009000f2 -1190155000,33,30,00e5ff84 -1190165000,33,31,fdc1fe5f -1194445000,34,0,01bafea7 -1194455000,34,1,fea8028a -1194465000,34,2,00ecfdf1 -1194475000,34,3,ff0b0185 -1194485000,34,4,ff24fdf4 -1194495000,34,5,0296026a -1194505000,34,6,fed8ff87 -1194515000,34,7,0061ffbd -1194525000,34,8,ff720072 -1194535000,34,9,ff5dff2b -1194545000,34,10,0163ff86 -1194555000,34,11,fe5b004f -1194565000,34,12,00fd009a -1194575000,34,13,00adfda6 -1194585000,34,14,fe4d03a2 -1194595000,34,15,01c7fe77 -1194605000,34,16,fde8003d -1194615000,34,17,01e2ffdc -1194625000,34,18,fee20027 -1194635000,34,19,0069003f -1194645000,34,20,ffd6fed0 -1194655000,34,21,ffc8011a -1194665000,34,22,00180081 -1194675000,34,23,ffbbfd97 -1194685000,34,24,01c8034a -1194695000,34,25,ff81ff13 -1194705000,34,26,ff1bff42 -1194715000,34,27,007dffb5 -1194725000,34,28,ffbd0042 -1194735000,34,29,ff35009a -1194745000,34,30,03470016 -1194755000,34,31,fcc9ff25 -1199035000,35,0,014601d3 -1199045000,35,1,febaff5d -1199055000,35,2,017d00aa -1199065000,35,3,fe6000dc -1199075000,35,4,0096fdc2 -1199085000,35,5,00740214 -1199095000,35,6,006dff1e -1199105000,35,7,ff53fff7 -1199115000,35,8,ff4d0082 -1199125000,35,9,013effa1 -1199135000,35,10,fe29ffe7 -1199145000,35,11,02b200f3 -1199155000,35,12,fdc3fe2b -1199165000,35,13,017aff33 -1199175000,35,14,ff4202a7 -1199185000,35,15,004cff02 -1199195000,35,16,ffce0017 -1199205000,35,17,ff4e0027 -1199215000,35,18,ff85011a -1199225000,35,19,0220fe62 -1199235000,35,20,fdd6ff72 -1199245000,35,21,02700160 -1199255000,35,22,fe170016 -1199265000,35,23,ffdbfedf -1199275000,35,24,01c70094 -1199285000,35,25,fef601e7 -1199295000,35,26,0019fca1 -1199305000,35,27,ffca028f -1199315000,35,28,00f9ff51 -1199325000,35,29,fec6ffb5 -1199335000,35,30,01b60109 -1199345000,35,31,fe1afd20 -1203625000,36,0,007801e9 -1203635000,36,1,0086ff40 -1203645000,36,2,ffbeff5c -1203655000,36,3,ffd50279 -1203665000,36,4,ff49fe54 -1203675000,36,5,036300b5 -1203685000,36,6,fd64ff56 -1203695000,36,7,004100d0 -1203705000,36,8,ffe6fee9 -1203715000,36,9,ffc10056 -1203725000,36,10,0098ff8a -1203735000,36,11,ff7d01ab -1203745000,36,12,001dfe0d -1203755000,36,13,000900b8 -1203765000,36,14,003bfff6 -1203775000,36,15,001b004d -1203785000,36,16,ff960065 -1203795000,36,17,01c2ff9c -1203805000,36,18,fce2fff2 -1203815000,36,19,01490037 -1203825000,36,20,0025ff80 -1203835000,36,21,ffebff65 -1203845000,36,22,00360222 -1203855000,36,23,fe3dfd12 -1203865000,36,24,050003c1 -1203875000,36,25,fb8bfdce -1203885000,36,26,00fc00c0 -1203895000,36,27,00a1ff19 -1203905000,36,28,ff310037 -1203915000,36,29,018d0086 -1203925000,36,30,0067002a -1203935000,36,31,fd93fdc5 -1208215000,37,0,01fd02a1 -1208225000,37,1,ff40ff2d -1208235000,37,2,00d0ffc6 -1208245000,37,3,ff04ffc6 -1208255000,37,4,fee20245 -1208265000,37,5,0294fde9 -1208275000,37,6,fe37ff69 -1208285000,37,7,00960156 -1208295000,37,8,ff9eff98 -1208305000,37,9,ffd6ffdb -1208315000,37,10,00daff01 -1208325000,37,11,ff300373 -1208335000,37,12,00b5fcaf -1208345000,37,13,ff520074 -1208355000,37,14,0188006e -1208365000,37,15,fefeffda -1208375000,37,16,ff3fff8f -1208385000,37,17,00e8010b -1208395000,37,18,fde0ff8a -1208405000,37,19,02c800ca -1208415000,37,20,fdcaff2b -1208425000,37,21,0186ff8f -1208435000,37,22,ffaf00a1 -1208445000,37,23,fed2ff88 -1208455000,37,24,025e01dc -1208465000,37,25,fe96fe2d -1208475000,37,26,00b200ab -1208485000,37,27,00040079 -1208495000,37,28,fefffeb5 -1208505000,37,29,01100054 -1208515000,37,30,ff0e0164 -1208525000,37,31,ff3afcfc -1212805000,38,0,ff62027c -1212815000,38,1,0190fddc -1212825000,38,2,fe3b015c -1212835000,38,3,006b0058 -1212845000,38,4,ff58fe24 -1212855000,38,5,00a5019e -1212865000,38,6,00ed0119 -1212875000,38,7,ff08fd8c -1212885000,38,8,00ca0252 -1212895000,38,9,fff8fe99 -1212905000,38,10,fed4ffbd -1212915000,38,11,0025003f -1212925000,38,12,002affc1 -1212935000,38,13,0098005f -1212945000,38,14,ff00ff74 -1212955000,38,15,016401cf -1212965000,38,16,0094fe6c -1212975000,38,17,fdf600b2 -1212985000,38,18,005bff60 -1212995000,38,19,00330132 -1213005000,38,20,0194fe30 -1213015000,38,21,fd490182 -1213025000,38,22,00fbff4f -1213035000,38,23,ffdeffaa -1213045000,38,24,01d4005e -1213055000,38,25,fec601ad -1213065000,38,26,ffe6fd3b -1213075000,38,27,00d50243 -1213085000,38,28,fec6ff9b -1213095000,38,29,01c6fdfd -1213105000,38,30,fdf80238 -1213115000,38,31,00eefd8f -1217395000,39,0,006f0178 -1217405000,39,1,fe1afeea -1217415000,39,2,02410061 -1217425000,39,3,fdfd008f -1217435000,39,4,ffd0ffda -1217445000,39,5,02a1ff85 -1217455000,39,6,fca00051 -1217465000,39,7,0298013b -1217475000,39,8,ff77fddb -1217485000,39,9,feaf020d -1217495000,39,10,0189fd55 -1217505000,39,11,ffff034d -1217515000,39,12,ffd8fdca -1217525000,39,13,ff52ff4b -1217535000,39,14,015000db -1217545000,39,15,fedd00c3 -1217555000,39,16,001fffac -1217565000,39,17,ff9effec -1217575000,39,18,ffe1ff2f -1217585000,39,19,ffef00e5 -1217595000,39,20,0058ff2c -1217605000,39,21,009dffdf -1217615000,39,22,ff640263 -1217625000,39,23,0108fe99 -1217635000,39,24,ff77ffdd -1217645000,39,25,ff0d003d -1217655000,39,26,0065ffb7 -1217665000,39,27,0139ff2f -1217675000,39,28,fd74008c -1217685000,39,29,025cfff9 -1217695000,39,30,feec024d -1217705000,39,31,00bffd01 -1221985000,40,0,00830251 -1221995000,40,1,fff6fea9 -1222005000,40,2,01000119 -1222015000,40,3,ffc3ff46 -1222025000,40,4,fd0d01c8 -1222035000,40,5,0566fd73 -1222045000,40,6,fd20019f -1222055000,40,7,0029ff04 -1222065000,40,8,003400e2 -1222075000,40,9,fead008b -1222085000,40,10,021bfd92 -1222095000,40,11,fe6a040b -1222105000,40,12,015dfc27 -1222115000,40,13,fef90023 -1222125000,40,14,01a50118 -1222135000,40,15,ff160035 -1222145000,40,16,ff910017 -1222155000,40,17,001eff1d -1222165000,40,18,ffc200fb -1222175000,40,19,ffd7ff6a -1222185000,40,20,0101ff0c -1222195000,40,21,fea40191 -1222205000,40,22,0120fea1 -1222215000,40,23,fe090072 -1222225000,40,24,02a001ea -1222235000,40,25,fed3fecf -1222245000,40,26,ffb7fe2e -1222255000,40,27,01880211 -1222265000,40,28,fdbdff11 -1222275000,40,29,01c100a1 -1222285000,40,30,ff970044 -1222295000,40,31,feb4fdf1 -1226575000,41,0,02e1ffe9 -1226585000,41,1,fe9dffcf -1226595000,41,2,0095ffe3 -1226605000,41,3,ff1dff8e -1226615000,41,4,ffdc0132 -1226625000,41,5,0213008b -1226635000,41,6,fec4005d -1226645000,41,7,ff9cfd72 -1226655000,41,8,01990168 -1226665000,41,9,fe4a0167 -1226675000,41,10,0161fd42 -1226685000,41,11,fd260207 -1226695000,41,12,02cbfe9c -1226705000,41,13,ff3cfff1 -1226715000,41,14,ffc70110 -1226725000,41,15,0113ff1b -1226735000,41,16,fee5016b -1226745000,41,17,01dfff27 -1226755000,41,18,fcdbffd3 -1226765000,41,19,020900d8 -1226775000,41,20,feb8fde6 -1226785000,41,21,00bd00d3 -1226795000,41,22,00100117 -1226805000,41,23,ffa8ffaa -1226815000,41,24,003d0008 -1226825000,41,25,00b2008b -1226835000,41,26,ffa7fe00 -1226845000,41,27,fff80157 -1226855000,41,28,ffbd0050 -1226865000,41,29,ffecff79 -1226875000,41,30,01a5fffc -1226885000,41,31,fc850015 -1231165000,42,0,02a1004d -1231175000,42,1,fe0affd1 -1231185000,42,2,0099005d -1231195000,42,3,00e3ffba -1231205000,42,4,fe7fffe0 -1231215000,42,5,01d40117 -1231225000,42,6,fe51fee0 -1231235000,42,7,01d20025 -1231245000,42,8,fdd10017 -1231255000,42,9,01c20091 -1231265000,42,10,febdff2b -1231275000,42,11,0078011e -1231285000,42,12,0082fdfc -1231295000,42,13,ff9a0068 -1231305000,42,14,013f0167 -1231315000,42,15,fe73ffc5 -1231325000,42,16,0057fec5 -1231335000,42,17,014600c1 -1231345000,42,18,fcad0087 -1231355000,42,19,0219fe98 -1231365000,42,20,ff47005e -1231375000,42,21,ffaa00a7 -1231385000,42,22,02df00aa -1231395000,42,23,fd62fef7 -1231405000,42,24,008b0103 -1231415000,42,25,0052ff11 -1231425000,42,26,00650065 -1231435000,42,27,ff4cfe74 -1231445000,42,28,002c027a -1231455000,42,29,ff24ff0e -1231465000,42,30,0241ff8b -1231475000,42,31,fd190003 -1235755000,43,0,0245013c -1235765000,43,1,ff15007d -1235775000,43,2,0062ff2d -1235785000,43,3,0047ff51 -1235795000,43,4,fddf01e1 -1235805000,43,5,03a20045 -1235815000,43,6,fd8fff2a -1235825000,43,7,feebff95 -1235835000,43,8,02de00f3 -1235845000,43,9,fe64ff95 -1235855000,43,10,0172ff4e -1235865000,43,11,fe0e00a1 -1235875000,43,12,00f0fe6c -1235885000,43,13,00af0155 -1235895000,43,14,fe6c0113 -1235905000,43,15,01b3ff08 -1235915000,43,16,febd0006 -1235925000,43,17,011300d9 -1235935000,43,18,fe7cfdad -1235945000,43,19,01ef0267 -1235955000,43,20,fd9bfd6d -1235965000,43,21,016e025b -1235975000,43,22,00bdfef8 -1235985000,43,23,fe9d00bb -1235995000,43,24,0090fff7 -1236005000,43,25,0044fe4d -1236015000,43,26,fff401cc -1236025000,43,27,ff80ff93 -1236035000,43,28,00fe0032 -1236045000,43,29,fee1ffd3 -1236055000,43,30,01ac002f -1236065000,43,31,fd11fe4c -1240345000,44,0,02f0ff4a -1240355000,44,1,fd6c0080 -1240365000,44,2,0171ffaa -1240375000,44,3,ffd80018 -1240385000,44,4,fef50055 -1240395000,44,5,0361fed7 -1240405000,44,6,fe080211 -1240415000,44,7,ff02fe1e -1240425000,44,8,006c01d8 -1240435000,44,9,0080fefa -1240445000,44,10,0048ff14 -1240455000,44,11,ffc00371 -1240465000,44,12,ffb7fc44 -1240475000,44,13,027a00f6 -1240485000,44,14,fc26fff7 -1240495000,44,15,0200ff18 -1240505000,44,16,00140180 -1240515000,44,17,002cffe6 -1240525000,44,18,fe4ffeda -1240535000,44,19,019000ae -1240545000,44,20,ff91ffcf -1240555000,44,21,ff470019 -1240565000,44,22,017601ff -1240575000,44,23,feb4fc62 -1240585000,44,24,00580276 -1240595000,44,25,ff84ffac -1240605000,44,26,0174fea8 -1240615000,44,27,fe6c014d -1240625000,44,28,013bfeb8 -1240635000,44,29,ff5a0106 -1240645000,44,30,01700061 -1240655000,44,31,fcce000c -1244935000,45,0,00300031 -1244945000,45,1,010f0051 -1244955000,45,2,fe6afec9 -1244965000,45,3,01dc00cf -1244975000,45,4,fd040057 -1244985000,45,5,03ddfffa -1244995000,45,6,fe390184 -1245005000,45,7,ffb8fc5e -1245015000,45,8,00f7030c -1245025000,45,9,0036ff3b -1245035000,45,10,fe34fed8 -1245045000,45,11,00b90154 -1245055000,45,12,ff7afe23 -1245065000,45,13,0196022c -1245075000,45,14,ffdafe4d -1245085000,45,15,fe6b0197 -1245095000,45,16,030efeab -1245105000,45,17,fdb1004f -1245115000,45,18,ff8200f9 -1245125000,45,19,ffa0ff5f -1245135000,45,20,00f0fef7 -1245145000,45,21,002100aa -1245155000,45,22,008b00b8 -1245165000,45,23,feb8feb0 -1245175000,45,24,01030180 -1245185000,45,25,ff760019 -1245195000,45,26,00a4fdfa -1245205000,45,27,ff8b026e -1245215000,45,28,001aff67 -1245225000,45,29,0030febc -1245235000,45,30,006e0053 -1245245000,45,31,fea5003b -1249525000,46,0,00e5ff14 -1249535000,46,1,001bfff7 -1249545000,46,2,008a0015 -1249555000,46,3,ff41ffeb -1249565000,46,4,ff700011 -1249575000,46,5,01e900d7 -1249585000,46,6,fec4005c -1249595000,46,7,ffb1fdf4 -1249605000,46,8,00db00f1 -1249615000,46,9,00ca007c -1249625000,46,10,fe81feb9 -1249635000,46,11,ffcd00da -1249645000,46,12,009dfff4 -1249655000,46,13,ffdfff51 -1249665000,46,14,0028011e -1249675000,46,15,fff1fee3 -1249685000,46,16,008d0148 -1249695000,46,17,0173fdf7 -1249705000,46,18,fb9401f1 -1249715000,46,19,0335ffbb -1249725000,46,20,fd96fed9 -1249735000,46,21,0193fff9 -1249745000,46,22,ffe6017c -1249755000,46,23,ff8bfeee -1249765000,46,24,0157010b -1249775000,46,25,fe2cff9e -1249785000,46,26,02ddff91 -1249795000,46,27,fd4d0120 -1249805000,46,28,00c9feca -1249815000,46,29,0039008f -1249825000,46,30,0062fe5a -1249835000,46,31,fe6b0243 -1254115000,47,0,fd830002 -1254125000,47,1,03ea0056 -1254135000,47,2,fd44001a -1254145000,47,3,0187ffdb -1254155000,47,4,fe6eff06 -1254165000,47,5,002300ac -1254175000,47,6,012800da -1254185000,47,7,ff1dff12 -1254195000,47,8,006600e4 -1254205000,47,9,ffc3ff53 -1254215000,47,10,0026ff9b -1254225000,47,11,fe8f011d -1254235000,47,12,0209fe83 -1254245000,47,13,fe960019 -1254255000,47,14,01ce0078 -1254265000,47,15,fefc0202 -1254275000,47,16,0093fd70 -1254285000,47,17,fe7a0010 -1254295000,47,18,ff580140 -1254305000,47,19,01850019 -1254315000,47,20,0022fed6 -1254325000,47,21,feb10186 -1254335000,47,22,00eafe0e -1254345000,47,23,0191023a -1254355000,47,24,fdd0ff7a -1254365000,47,25,0195ff8b -1254375000,47,26,ff6a001f -1254385000,47,27,0065feff -1254395000,47,28,000301d1 -1254405000,47,29,feaafdf9 -1254415000,47,30,010c01ac -1254425000,47,31,0086fefa -1258705000,48,0,002700a4 -1258715000,48,1,0039ff63 -1258725000,48,2,01020041 -1258735000,48,3,fed60071 -1258745000,48,4,fe0cfef8 -1258755000,48,5,04a80230 -1258765000,48,6,fd18fe36 -1258775000,48,7,ff51003d -1258785000,48,8,01590022 -1258795000,48,9,fef1ffd2 -1258805000,48,10,012bff00 -1258815000,48,11,ffc1049f -1258825000,48,12,001efb49 -1258835000,48,13,ff7000ef -1258845000,48,14,0082000d -1258855000,48,15,0122ffec -1258865000,48,16,fdcd0040 -1258875000,48,17,013b00cf -1258885000,48,18,febefec3 -1258895000,48,19,011a0151 -1258905000,48,20,ff6effd4 -1258915000,48,21,004cfe68 -1258925000,48,22,00760182 -1258935000,48,23,fe3dfe8b -1258945000,48,24,0407026a -1258955000,48,25,fc3ffdbc -1258965000,48,26,01850184 -1258975000,48,27,000bff13 -1258985000,48,28,ff9c00b3 -1258995000,48,29,ffd0feb9 -1259005000,48,30,006800db -1259015000,48,31,ff4cff78 -1263295000,49,0,011600f2 -1263305000,49,1,00a4004f -1263315000,49,2,fec5fe95 -1263325000,49,3,01ac0301 -1263335000,49,4,fca9fe4d -1263345000,49,5,04a0ff58 -1263355000,49,6,fca400f0 -1263365000,49,7,014fff8c -1263375000,49,8,ffdcff50 -1263385000,49,9,fee00059 -1263395000,49,10,020f000d -1263405000,49,11,ff310188 -1263415000,49,12,ff23fe33 -1263425000,49,13,0099001c -1263435000,49,14,ffb00036 -1263445000,49,15,00df0017 -1263455000,49,16,fe9200b0 -1263465000,49,17,01bafe6d -1263475000,49,18,fe4f0185 -1263485000,49,19,00480075 -1263495000,49,20,008bfe5d -1263505000,49,21,ff52004e -1263515000,49,22,0120009e -1263525000,49,23,fe23fe7c -1263535000,49,24,0338035e -1263545000,49,25,fd56fe1b -1263555000,49,26,013500b1 -1263565000,49,27,ff5ffe7e -1263575000,49,28,0015015b -1263585000,49,29,0081ff7e -1263595000,49,30,012cff7c -1263605000,49,31,fd6bff55 -1267885000,50,0,00740231 -1267895000,50,1,ffd1ffeb -1267905000,50,2,00cffed8 -1267915000,50,3,fedbffa5 -1267925000,50,4,007a007a -1267935000,50,5,015a00c1 -1267945000,50,6,fdb8ff1d -1267955000,50,7,01f901bd -1267965000,50,8,fe94fe35 -1267975000,50,9,0050020e -1267985000,50,10,ff56fd7f -1267995000,50,11,015c0193 -1268005000,50,12,0000fe26 -1268015000,50,13,ff0700a1 -1268025000,50,14,018101d5 -1268035000,50,15,fee6fe14 -1268045000,50,16,ff1aff9d -1268055000,50,17,014f01cd -1268065000,50,18,febbff6a -1268075000,50,19,00cf017b -1268085000,50,20,fea4fd92 -1268095000,50,21,02b0011b -1268105000,50,22,ff120053 -1268115000,50,23,fe3bfde1 -1268125000,50,24,02c202c5 -1268135000,50,25,fe70fe52 -1268145000,50,26,005c021f -1268155000,50,27,ffd2fd55 -1268165000,50,28,0036023e -1268175000,50,29,ff8ffdd3 -1268185000,50,30,01d10233 -1268195000,50,31,fdfefd4e -1272475000,51,0,007affa0 -1272485000,51,1,00baffa0 -1272495000,51,2,ff4300ef -1272505000,51,3,01b50145 -1272515000,51,4,fca4fdff -1272525000,51,5,04890269 -1272535000,51,6,fe09fdb9 -1272545000,51,7,ffdc0133 -1272555000,51,8,ff40ff12 -1272565000,51,9,003000cc -1272575000,51,10,0002ff43 -1272585000,51,11,015d0059 -1272595000,51,12,fe79ffed -1272605000,51,13,007dff48 -1272615000,51,14,00fdfff7 -1272625000,51,15,ff480193 -1272635000,51,16,ff78ff10 -1272645000,51,17,0050015e -1272655000,51,18,ff4dfec7 -1272665000,51,19,00ddff37 -1272675000,51,20,ff0a0181 -1272685000,51,21,0161fe13 -1272695000,51,22,ffb101a5 -1272705000,51,23,fe72fe01 -1272715000,51,24,02660452 -1272725000,51,25,fe0efd06 -1272735000,51,26,018aff87 -1272745000,51,27,fe6d01b3 -1272755000,51,28,0219000f -1272765000,51,29,fe91fdd4 -1272775000,51,30,01f501db -1272785000,51,31,fd2eff09 -1277065000,52,0,0064005c -1277075000,52,1,00b201e3 -1277085000,52,2,ff23fe28 -1277095000,52,3,00de0148 -1277105000,52,4,fd6c0047 -1277115000,52,5,04f6ff85 -1277125000,52,6,fcf3fef3 -1277135000,52,7,003a01d4 -1277145000,52,8,0024fe17 -1277155000,52,9,ffd5017f -1277165000,52,10,ffaaff6d -1277175000,52,11,00c3007c -1277185000,52,12,007dfeab -1277195000,52,13,fea0005b -1277205000,52,14,01260019 -1277215000,52,15,ff85ff9d -1277225000,52,16,003a0192 -1277235000,52,17,00cc0069 -1277245000,52,18,fcd1fddc -1277255000,52,19,02d4ff8c -1277265000,52,20,ff720217 -1277275000,52,21,febefe75 -1277285000,52,22,02110093 -1277295000,52,23,fceefff4 -1277305000,52,24,03e6010f -1277315000,52,25,fda5ff35 -1277325000,52,26,008600ab -1277335000,52,27,0057fe50 -1277345000,52,28,ff35013b -1277355000,52,29,0124008b -1277365000,52,30,ffbaff5d -1277375000,52,31,fed7feab -1281655000,53,0,01010313 -1281665000,53,1,ff45fd18 -1281675000,53,2,00340173 -1281685000,53,3,007d0148 -1281695000,53,4,fec7fff8 -1281705000,53,5,0118feb5 -1281715000,53,6,00bbffe6 -1281725000,53,7,ff1900a2 -1281735000,53,8,ff04ff44 -1281745000,53,9,017000b0 -1281755000,53,10,fee2feb3 -1281765000,53,11,00e30468 -1281775000,53,12,ffd9fade -1281785000,53,13,fff301e9 -1281795000,53,14,0092ff14 -1281805000,53,15,ff9000e9 -1281815000,53,16,00d30039 -1281825000,53,17,fea7ff84 -1281835000,53,18,ffb6013d -1281845000,53,19,011ffe5c -1281855000,53,20,ff75ffde -1281865000,53,21,ffa6003d -1281875000,53,22,003f0090 -1281885000,53,23,ffdbffa0 -1281895000,53,24,00ac00b0 -1281905000,53,25,000cffe4 -1281915000,53,26,0048ff65 -1281925000,53,27,ff490060 -1281935000,53,28,ffe7012c -1281945000,53,29,0137fcd5 -1281955000,53,30,fe0002de -1281965000,53,31,0044fd39 -1286245000,54,0,ffb4fef6 -1286255000,54,1,0179ffdc -1286265000,54,2,ff2400bd -1286275000,54,3,ffd5fed5 -1286285000,54,4,00870338 -1286295000,54,5,0057fce2 -1286305000,54,6,ffa00102 -1286315000,54,7,ffd6feda -1286325000,54,8,ffaa01d4 -1286335000,54,9,00e4fec3 -1286345000,54,10,ff6100e3 -1286355000,54,11,fed00091 -1286365000,54,12,0276fe0c -1286375000,54,13,fde100f8 -1286385000,54,14,01790002 -1286395000,54,15,ffa3ff3d -1286405000,54,16,ff520100 -1286415000,54,17,0141ffbe -1286425000,54,18,fed601d1 -1286435000,54,19,00a7fdbf -1286445000,54,20,ff31009e -1286455000,54,21,ffc90050 -1286465000,54,22,0140fde4 -1286475000,54,23,ff90031e -1286485000,54,24,005cfeee -1286495000,54,25,0012ffdb -1286505000,54,26,002dff43 -1286515000,54,27,ff8401cf -1286525000,54,28,ffe6febe -1286535000,54,29,ffc7000e -1286545000,54,30,027ffeac -1286555000,54,31,fd2f01c7 -1290835000,55,0,ff210057 -1290845000,55,1,00c30114 -1290855000,55,2,fe8bfed7 -1290865000,55,3,016d02b4 -1290875000,55,4,fef2fd6b -1290885000,55,5,01da0138 -1290895000,55,6,ff45ffa1 -1290905000,55,7,ff07ffc2 -1290915000,55,8,0067006e -1290925000,55,9,0068ff4c -1290935000,55,10,fefbff30 -1290945000,55,11,01d902e8 -1290955000,55,12,fdd1fd1f -1290965000,55,13,02b500c7 -1290975000,55,14,fdebff0a -1290985000,55,15,00a50233 -1290995000,55,16,ffb5ffc1 -1291005000,55,17,ffc9fde2 -1291015000,55,18,fff90287 -1291025000,55,19,ff8dfef4 -1291035000,55,20,0146fe4d -1291045000,55,21,feb800ee -1291055000,55,22,00f9022f -1291065000,55,23,fecdfd4e -1291075000,55,24,01b301de -1291085000,55,25,fe6800c6 -1291095000,55,26,0069feba -1291105000,55,27,017dff7c -1291115000,55,28,fef7009d -1291125000,55,29,0075ff3b -1291135000,55,30,fe6f0236 -1291145000,55,31,01affd51 -1295425000,56,0,ff810086 -1295435000,56,1,0186ffed -1295445000,56,2,fed3fff2 -1295455000,56,3,00dbff3e -1295465000,56,4,fd5e00aa -1295475000,56,5,05cc00d9 -1295485000,56,6,fbb7ff5a -1295495000,56,7,00aa0058 -1295505000,56,8,ff8aff1a -1295515000,56,9,ffdb0116 -1295525000,56,10,007cfddd -1295535000,56,11,fff8050f -1295545000,56,12,00dcfafb -1295555000,56,13,ffe10197 -1295565000,56,14,003effbe -1295575000,56,15,ffd8ffcb -1295585000,56,16,ff4700c2 -1295595000,56,17,0066ffab -1295605000,56,18,ff4d0022 -1295615000,56,19,00a100a0 -1295625000,56,20,ffc4fe72 -1295635000,56,21,ffe60127 -1295645000,56,22,00a50038 -1295655000,56,23,fe40fd3c -1295665000,56,24,035e03ba -1295675000,56,25,fee1fede -1295685000,56,26,fee4ff7f -1295695000,56,27,fff8ff2b -1295705000,56,28,00aa014d -1295715000,56,29,ff9dff5d -1295725000,56,30,008effb0 -1295735000,56,31,fefa0019 -1300015000,57,0,02fd013e -1300025000,57,1,feb2fef3 -1300035000,57,2,ff71fe7c -1300045000,57,3,017f01e2 -1300055000,57,4,fe06ff42 -1300065000,57,5,023001b9 -1300075000,57,6,fcaffef9 -1300085000,57,7,0447ff8e -1300095000,57,8,fcb30002 -1300105000,57,9,027c0215 -1300115000,57,10,fdfffca1 -1300125000,57,11,ff6002f5 -1300135000,57,12,01cdfd96 -1300145000,57,13,ff80011c -1300155000,57,14,003f00b4 -1300165000,57,15,0068ff2a -1300175000,57,16,ffc50090 -1300185000,57,17,ffcaffbb -1300195000,57,18,ff3900b2 -1300205000,57,19,010dff58 -1300215000,57,20,ff6cfed8 -1300225000,57,21,001800e1 -1300235000,57,22,003f013d -1300245000,57,23,fec3fe34 -1300255000,57,24,030f01a0 -1300265000,57,25,fe20fff9 -1300275000,57,26,008ffe4d -1300285000,57,27,ffb4ffe1 -1300295000,57,28,007d0228 -1300305000,57,29,fee8fe06 -1300315000,57,30,017b0002 -1300325000,57,31,fd06003c -1304605000,58,0,0071ff71 -1304615000,58,1,00a70120 -1304625000,58,2,ff6cfecc -1304635000,58,3,013000b1 -1304645000,58,4,fd5aff88 -1304655000,58,5,03310094 -1304665000,58,6,fdaf0056 -1304675000,58,7,00a1ff2d -1304685000,58,8,00ba0029 -1304695000,58,9,ff7701f7 -1304705000,58,10,0060fc06 -1304715000,58,11,fde204e6 -1304725000,58,12,027cfc76 -1304735000,58,13,00b00001 -1304745000,58,14,fec900c2 -1304755000,58,15,011c0003 -1304765000,58,16,fe1b004d -1304775000,58,17,013dffa4 -1304785000,58,18,fe4c0066 -1304795000,58,19,0150ffcf -1304805000,58,20,ff2aff64 -1304815000,58,21,00e70082 -1304825000,58,22,01a70028 -1304835000,58,23,fd51fecd -1304845000,58,24,015e01e9 -1304855000,58,25,fe5dfe95 -1304865000,58,26,029400b8 -1304875000,58,27,fe5eff06 -1304885000,58,28,00940236 -1304895000,58,29,fe50fce9 -1304905000,58,30,028d0168 -1304915000,58,31,fdd20047 -1309195000,59,0,01dcffff -1309205000,59,1,fffd0029 -1309215000,59,2,ff91ff04 -1309225000,59,3,003e028e -1309235000,59,4,fdcafeb6 -1309245000,59,5,03c800e1 -1309255000,59,6,fd7cff0c -1309265000,59,7,012c0010 -1309275000,59,8,ff1effa8 -1309285000,59,9,010f0162 -1309295000,59,10,fffbfe55 -1309305000,59,11,ff4d0236 -1309315000,59,12,ffa7fe1c -1309325000,59,13,00c7ffc7 -1309335000,59,14,fe86012c -1309345000,59,15,01e3ff0d -1309355000,59,16,ff50011f -1309365000,59,17,004ffeab -1309375000,59,18,feb100bc -1309385000,59,19,01e000f6 -1309395000,59,20,ff66fe2e -1309405000,59,21,ff1e01af -1309415000,59,22,00aa0020 -1309425000,59,23,0024fdea -1309435000,59,24,ff8602d6 -1309445000,59,25,0025fcb2 -1309455000,59,26,015f01af -1309465000,59,27,fe05ff62 -1309475000,59,28,00e901d4 -1309485000,59,29,00b3fe21 -1309495000,59,30,00c801e4 -1309505000,59,31,fcddfe0d -1313785000,60,0,01ca019f -1313795000,60,1,feb9fec9 -1313805000,60,2,0076005d -1313815000,60,3,008bff74 -1313825000,60,4,fe6c011e -1313835000,60,5,0489fee3 -1313845000,60,6,fbf2008c -1313855000,60,7,00fe0010 -1313865000,60,8,fff2fff1 -1313875000,60,9,ffcc0027 -1313885000,60,10,ff5bff0d -1313895000,60,11,02af03ae -1313905000,60,12,fe2afae6 -1313915000,60,13,ffe2026d -1313925000,60,14,008aff53 -1313935000,60,15,0000000a -1313945000,60,16,001cff03 -1313955000,60,17,004b01fb -1313965000,60,18,fdb2febf -1313975000,60,19,021300bc -1313985000,60,20,fefeff3a -1313995000,60,21,00b70027 -1314005000,60,22,ffc601d6 -1314015000,60,23,fe74fda2 -1314025000,60,24,03c8013d -1314035000,60,25,fcc0ffb5 -1314045000,60,26,0029ffa7 -1314055000,60,27,0137fff2 -1314065000,60,28,ffd40042 -1314075000,60,29,fff6ff89 -1314085000,60,30,00aa019b -1314095000,60,31,fdc2fe64 -1318375000,61,0,fd200007 -1318385000,61,1,03460041 -1318395000,61,2,fde800c5 -1318405000,61,3,0036ff2d -1318415000,61,4,ffce0203 -1318425000,61,5,018efddb -1318435000,61,6,ffc100a5 -1318445000,61,7,ff51ffd9 -1318455000,61,8,ffb80111 -1318465000,61,9,0087fea1 -1318475000,61,10,0001ff52 -1318485000,61,11,fdf702ae -1318495000,61,12,02e4fd48 -1318505000,61,13,fe6c00c2 -1318515000,61,14,0100ffd1 -1318525000,61,15,ffca00dd -1318535000,61,16,ff18ff9d -1318545000,61,17,020400cb -1318555000,61,18,fd4aff53 -1318565000,61,19,003eff81 -1318575000,61,20,0182ff63 -1318585000,61,21,fe4402b1 -1318595000,61,22,01b5fd11 -1318605000,61,23,feef0229 -1318615000,61,24,00fcff5f -1318625000,61,25,002bffb3 -1318635000,61,26,ff150136 -1318645000,61,27,0091fe40 -1318655000,61,28,fff80086 -1318665000,61,29,ff9e009a -1318675000,61,30,006a00b1 -1318685000,61,31,00e2fe1d -1322965000,62,0,fd9701e7 -1322975000,62,1,03e0ff6b -1322985000,62,2,fc7ffeb0 -1322995000,62,3,027a020b -1323005000,62,4,fd4a0012 -1323015000,62,5,03d4ffb7 -1323025000,62,6,fe0dff99 -1323035000,62,7,fea3ff2a -1323045000,62,8,020c00a3 -1323055000,62,9,fee6ffc8 -1323065000,62,10,007bfff9 -1323075000,62,11,fef100b2 -1323085000,62,12,0072feee -1323095000,62,13,010001bb -1323105000,62,14,ff72febd -1323115000,62,15,ffd4ffd3 -1323125000,62,16,0055ff0f -1323135000,62,17,ffa20291 -1323145000,62,18,002ffe20 -1323155000,62,19,ff920165 -1323165000,62,20,ff0aff44 -1323175000,62,21,009cffa1 -1323185000,62,22,00ffffb9 -1323195000,62,23,0037016e -1323205000,62,24,fe98ff5f -1323215000,62,25,01580098 -1323225000,62,26,0023ff1b -1323235000,62,27,ffbb0186 -1323245000,62,28,ffb2fe2c -1323255000,62,29,ff78ffc9 -1323265000,62,30,011e01f5 -1323275000,62,31,0002fd65 -1327555000,63,0,ff7afe91 -1327565000,63,1,012c0032 -1327575000,63,2,ff45ffd6 -1327585000,63,3,007701a5 -1327595000,63,4,0022ff69 -1327605000,63,5,fed2ff97 -1327615000,63,6,01130036 -1327625000,63,7,ff4dff02 -1327635000,63,8,00c90171 -1327645000,63,9,ffc0ff32 -1327655000,63,10,ff3efff1 -1327665000,63,11,ff8600b6 -1327675000,63,12,00b90022 -1327685000,63,13,009cfe90 -1327695000,63,14,00ca0150 -1327705000,63,15,fefefef8 -1327715000,63,16,fe0c00af -1327725000,63,17,02dcffbc -1327735000,63,18,ff010228 -1327745000,63,19,ff4dfcef -1327755000,63,20,001a02a7 -1327765000,63,21,012afe25 -1327775000,63,22,ff2dfffa -1327785000,63,23,fff7009e -1327795000,63,24,fff1003f -1327805000,63,25,01480028 -1327815000,63,26,ffd4fec5 -1327825000,63,27,ff0a01be -1327835000,63,28,02abff1e -1327845000,63,29,fb50ffe4 -1327855000,63,30,03aeff0c -1327865000,63,31,fe820168 +1038385000,0,0,004cff69 +1038395000,0,1,fff401dc +1038405000,0,2,00a2fdd0 +1038415000,0,3,ff5401a2 +1038425000,0,4,fe51ff23 +1038435000,0,5,049300b2 +1038445000,0,6,fcb80120 +1038455000,0,7,00f7fd99 +1038465000,0,8,fea4010b +1038475000,0,9,025700cb +1038485000,0,10,fddefd1c +1038495000,0,11,014b0507 +1038505000,0,12,ffb3fc77 +1038515000,0,13,00320047 +1038525000,0,14,0006ffcb +1038535000,0,15,000f010f +1038545000,0,16,ffd8febf +1038555000,0,17,ffb0019a +1038565000,0,18,00b6feb8 +1038575000,0,19,ffaa0112 +1038585000,0,20,0057ffbb +1038595000,0,21,fef7fec8 +1038605000,0,22,006e000e +1038615000,0,23,ff19ffc7 +1038625000,0,24,0288027d +1038635000,0,25,fec9fe6f +1038645000,0,26,fffaffb0 +1038655000,0,27,ffe700b5 +1038665000,0,28,0005ffdb +1038675000,0,29,ff30ff17 +1038685000,0,30,0204ffc3 +1038695000,0,31,fdf100a9 +1042975000,1,0,ffff0123 +1042985000,1,1,00b8ff6a +1042995000,1,2,008b0051 +1043005000,1,3,ff8800ad +1043015000,1,4,ff4bff8a +1043025000,1,5,0183ff94 +1043035000,1,6,fed1ffb3 +1043045000,1,7,ffdd0106 +1043055000,1,8,ff0ffefb +1043065000,1,9,014801b3 +1043075000,1,10,00c4fdca +1043085000,1,11,ff4102cb +1043095000,1,12,ff68fdb5 +1043105000,1,13,0007ffb8 +1043115000,1,14,018f0201 +1043125000,1,15,ff80fdbd +1043135000,1,16,fe51011f +1043145000,1,17,01aa00a6 +1043155000,1,18,fee1ff79 +1043165000,1,19,00c20079 +1043175000,1,20,fe41fffa +1043185000,1,21,0289ff16 +1043195000,1,22,ff13014f +1043205000,1,23,fe91fd50 +1043215000,1,24,046d03b3 +1043225000,1,25,fc0efdc1 +1043235000,1,26,015c0060 +1043245000,1,27,ff4100c3 +1043255000,1,28,00e0ff8f +1043265000,1,29,ffb5feca +1043275000,1,30,00b10161 +1043285000,1,31,fe76fe79 +1047565000,2,0,00ffff95 +1047575000,2,1,fedc002a +1047585000,2,2,01e5001f +1047595000,2,3,fe7c000b +1047605000,2,4,fea7ff68 +1047615000,2,5,0304027c +1047625000,2,6,feadfd80 +1047635000,2,7,012501bd +1047645000,2,8,fd6cfeed +1047655000,2,9,01ed0132 +1047665000,2,10,008afe01 +1047675000,2,11,fe8b00c3 +1047685000,2,12,00760066 +1047695000,2,13,fffdfe58 +1047705000,2,14,00fb0110 +1047715000,2,15,ffaa0139 +1047725000,2,16,feb5ffc1 +1047735000,2,17,01c2fe88 +1047745000,2,18,fd9d0235 +1047755000,2,19,020cfd87 +1047765000,2,20,ff0b005a +1047775000,2,21,ff9a00c4 +1047785000,2,22,0165ffea +1047795000,2,23,fe91fff1 +1047805000,2,24,01f40131 +1047815000,2,25,fe31fdcc +1047825000,2,26,0118022f +1047835000,2,27,ff09fcfb +1047845000,2,28,00dc03fc +1047855000,2,29,fe81fd70 +1047865000,2,30,02a7009a +1047875000,2,31,fdbcffe1 +1052155000,3,0,0080fff9 +1052165000,3,1,ffb5ff57 +1052175000,3,2,00d600b3 +1052185000,3,3,ffe900c3 +1052195000,3,4,fd92fde5 +1052205000,3,5,039a0330 +1052215000,3,6,fea4fd9c +1052225000,3,7,ffb20171 +1052235000,3,8,ffc7ff5d +1052245000,3,9,00fa0003 +1052255000,3,10,feb8ff83 +1052265000,3,11,00fc00ed +1052275000,3,12,fffbff2a +1052285000,3,13,ff77fefa +1052295000,3,14,00140122 +1052305000,3,15,004b0115 +1052315000,3,16,0154ff5d +1052325000,3,17,fdefffc5 +1052335000,3,18,00b4003d +1052345000,3,19,0087ffa5 +1052355000,3,20,fe7afff9 +1052365000,3,21,00b4fe30 +1052375000,3,22,ffa40362 +1052385000,3,23,004efcf3 +1052395000,3,24,0209037d +1052405000,3,25,fdc6fdf5 +1052415000,3,26,016effcd +1052425000,3,27,fe7c0117 +1052435000,3,28,00fdfea0 +1052445000,3,29,feffffc2 +1052455000,3,30,01dc0168 +1052465000,3,31,fe15ff4b +1056745000,4,0,feed00e2 +1056755000,4,1,0189ffeb +1056765000,4,2,00a9fef7 +1056775000,4,3,fdcb01d7 +1056785000,4,4,0093ff6d +1056795000,4,5,0292ff98 +1056805000,4,6,fdba008d +1056815000,4,7,ffbf0014 +1056825000,4,8,0125ff8b +1056835000,4,9,ff2a0064 +1056845000,4,10,ffe7fec2 +1056855000,4,11,004702a1 +1056865000,4,12,002ffd1a +1056875000,4,13,ff0300bc +1056885000,4,14,00f800bb +1056895000,4,15,00b30011 +1056905000,4,16,ff2fffa6 +1056915000,4,17,00af017b +1056925000,4,18,fecffdb7 +1056935000,4,19,00990163 +1056945000,4,20,ff41ff8b +1056955000,4,21,001aff5e +1056965000,4,22,00b6018b +1056975000,4,23,fe8dfdbc +1056985000,4,24,04570439 +1056995000,4,25,fbfefc12 +1057005000,4,26,01e90120 +1057015000,4,27,ff690025 +1057025000,4,28,feb5fffa +1057035000,4,29,0259ff42 +1057045000,4,30,ffa00195 +1057055000,4,31,fee5fdff +1061335000,5,0,012d014d +1061345000,5,1,fea70090 +1061355000,5,2,0037fed9 +1061365000,5,3,0129015a +1061375000,5,4,feacffd0 +1061385000,5,5,01bdffc4 +1061395000,5,6,fe71feca +1061405000,5,7,012d01c9 +1061415000,5,8,fe1afeb8 +1061425000,5,9,012100ea +1061435000,5,10,ff66ff8a +1061445000,5,11,01f80154 +1061455000,5,12,fdecfdae +1061465000,5,13,00e300e1 +1061475000,5,14,0158ffa9 +1061485000,5,15,fd6c002b +1061495000,5,16,02a10075 +1061505000,5,17,fe650044 +1061515000,5,18,fec5ffaf +1061525000,5,19,013bfef8 +1061535000,5,20,ffe601be +1061545000,5,21,000bfe5a +1061555000,5,22,ff9d008a +1061565000,5,23,ffd90165 +1061575000,5,24,02c4fe92 +1061585000,5,25,fd67006e +1061595000,5,26,002e0036 +1061605000,5,27,009cff6a +1061615000,5,28,000e00c0 +1061625000,5,29,fff1fead +1061635000,5,30,ff220233 +1061645000,5,31,0016fd3f +1065925000,6,0,ff64fffd +1065935000,6,1,0210ff66 +1065945000,6,2,fda90089 +1065955000,6,3,0140ff0f +1065965000,6,4,ff1a0141 +1065975000,6,5,018f0078 +1065985000,6,6,fe900041 +1065995000,6,7,00abfd04 +1066005000,6,8,fff702fd +1066015000,6,9,00f9feaa +1066025000,6,10,fea3ffc1 +1066035000,6,11,ff1bfffa +1066045000,6,12,01c400ae +1066055000,6,13,ff2b00b8 +1066065000,6,14,0083fe1c +1066075000,6,15,0032010e +1066085000,6,16,0006ffc1 +1066095000,6,17,00b8ff4c +1066105000,6,18,fdeb0229 +1066115000,6,19,fff6fe37 +1066125000,6,20,01380065 +1066135000,6,21,fe9b0058 +1066145000,6,22,00e0fe33 +1066155000,6,23,01450296 +1066165000,6,24,fe9bfe09 +1066175000,6,25,00d702b8 +1066185000,6,26,001dfd1d +1066195000,6,27,fed301fc +1066205000,6,28,0206ffa0 +1066215000,6,29,fcf3fecc +1066225000,6,30,0271ffc8 +1066235000,6,31,ff0a0114 +1070515000,7,0,ff5b02fa +1070525000,7,1,01cdfee8 +1070535000,7,2,fedafeb3 +1070545000,7,3,0072027a +1070555000,7,4,ffbcfe44 +1070565000,7,5,02250067 +1070575000,7,6,fe8400b0 +1070585000,7,7,001effd4 +1070595000,7,8,ff00ffd0 +1070605000,7,9,001b004e +1070615000,7,10,00b4fe62 +1070625000,7,11,01e10173 +1070635000,7,12,fc81fea8 +1070645000,7,13,025a0091 +1070655000,7,14,ff0c00cc +1070665000,7,15,0088fead +1070675000,7,16,ff190144 +1070685000,7,17,00e9feda +1070695000,7,18,ff5a010f +1070705000,7,19,ff28006a +1070715000,7,20,016cfdfa +1070725000,7,21,ff3d01eb +1070735000,7,22,0072ff00 +1070745000,7,23,ff5a001e +1070755000,7,24,00b8ff82 +1070765000,7,25,fef70258 +1070775000,7,26,0190fe48 +1070785000,7,27,fe29ffe1 +1070795000,7,28,022b018a +1070805000,7,29,feacfded +1070815000,7,30,01f60228 +1070825000,7,31,fdbcfce1 +1075105000,8,0,00f20141 +1075115000,8,1,ffe0feb3 +1075125000,8,2,006b0077 +1075135000,8,3,fecd0038 +1075145000,8,4,ffe60046 +1075155000,8,5,0345003e +1075165000,8,6,fc2f003a +1075175000,8,7,01c6ff6d +1075185000,8,8,0095ff03 +1075195000,8,9,feae0136 +1075205000,8,10,ffd8fe72 +1075215000,8,11,00970408 +1075225000,8,12,003efc42 +1075235000,8,13,fee80117 +1075245000,8,14,011f001f +1075255000,8,15,002afe47 +1075265000,8,16,ff80021d +1075275000,8,17,0180ff7d +1075285000,8,18,fd350023 +1075295000,8,19,018dffb6 +1075305000,8,20,ffc8011e +1075315000,8,21,ff25feda +1075325000,8,22,012dffd0 +1075335000,8,23,fe08ff21 +1075345000,8,24,0431024f +1075355000,8,25,fd12ffe2 +1075365000,8,26,0020fec4 +1075375000,8,27,013fff92 +1075385000,8,28,fefc0122 +1075395000,8,29,0056ff99 +1075405000,8,30,00bd002f +1075415000,8,31,fe20fef3 +1079695000,9,0,00e8ff9a +1079705000,9,1,0013fffe +1079715000,9,2,008500c3 +1079725000,9,3,ff45fed8 +1079735000,9,4,ff3affa1 +1079745000,9,5,02250242 +1079755000,9,6,fdcaffaa +1079765000,9,7,01d6ff7d +1079775000,9,8,fdedff7c +1079785000,9,9,03500100 +1079795000,9,10,fd79fde5 +1079805000,9,11,feef01e3 +1079815000,9,12,02f0ff55 +1079825000,9,13,fdbb0035 +1079835000,9,14,00f4ff0d +1079845000,9,15,007101d8 +1079855000,9,16,ff2effb2 +1079865000,9,17,01d5fed8 +1079875000,9,18,fd0f0135 +1079885000,9,19,012bff1a +1079895000,9,20,00e00061 +1079905000,9,21,fe9dffb8 +1079915000,9,22,016cfffc +1079925000,9,23,fef6ff73 +1079935000,9,24,00f101f8 +1079945000,9,25,ffe8fec2 +1079955000,9,26,ffab00e7 +1079965000,9,27,ffc1fe2b +1079975000,9,28,008a0139 +1079985000,9,29,fff3ff41 +1079995000,9,30,01060089 +1080005000,9,31,fda3ffe0 +1084285000,10,0,00fafeba +1084295000,10,1,00b0010f +1084305000,10,2,febbff3d +1084315000,10,3,001fff95 +1084325000,10,4,ff49004f +1084335000,10,5,022102b7 +1084345000,10,6,fe4afd98 +1084355000,10,7,016b007a +1084365000,10,8,fe3b0076 +1084375000,10,9,01c9ff9f +1084385000,10,10,ff05fea3 +1084395000,10,11,feec0293 +1084405000,10,12,031cfde5 +1084415000,10,13,fd02ffcf +1084425000,10,14,029c00ae +1084435000,10,15,ff060083 +1084445000,10,16,fec6ff88 +1084455000,10,17,014eff79 +1084465000,10,18,fd8301f7 +1084475000,10,19,01d9fdb3 +1084485000,10,20,00d50199 +1084495000,10,21,ff1ffec3 +1084505000,10,22,00cc0152 +1084515000,10,23,fea3fe48 +1084525000,10,24,00f901dc +1084535000,10,25,ffd9fedd +1084545000,10,26,ff910059 +1084555000,10,27,ffb4ff11 +1084565000,10,28,01b2016f +1084575000,10,29,feae0013 +1084585000,10,30,009aff48 +1084595000,10,31,fec4008f +1088875000,11,0,0303fff4 +1088885000,11,1,ff2901fa +1088895000,11,2,ff46fe76 +1088905000,11,3,010a0003 +1088915000,11,4,fd480092 +1088925000,11,5,049a0181 +1088935000,11,6,fd86fe4b +1088945000,11,7,ffde0041 +1088955000,11,8,005f002f +1088965000,11,9,ff7700d5 +1088975000,11,10,006ffd93 +1088985000,11,11,ff3d02d3 +1088995000,11,12,01defd61 +1089005000,11,13,fed20186 +1089015000,11,14,0081ffac +1089025000,11,15,ffbdff79 +1089035000,11,16,ffcb0174 +1089045000,11,17,fed50008 +1089055000,11,18,011afe98 +1089065000,11,19,0156001f +1089075000,11,20,ff080170 +1089085000,11,21,ff7efe05 +1089095000,11,22,005401d1 +1089105000,11,23,ff16fdff +1089115000,11,24,011f025d +1089125000,11,25,008ffddd +1089135000,11,26,fecd01b3 +1089145000,11,27,0113ff37 +1089155000,11,28,ffceff89 +1089165000,11,29,ff3a0130 +1089175000,11,30,0211ffc4 +1089185000,11,31,fc27fe6b +1093465000,12,0,00b000e8 +1093475000,12,1,ff6cffc3 +1093485000,12,2,002f0006 +1093495000,12,3,006700a9 +1093505000,12,4,fdae008e +1093515000,12,5,0447ff38 +1093525000,12,6,fdb10044 +1093535000,12,7,00510064 +1093545000,12,8,ff1eff07 +1093555000,12,9,00360103 +1093565000,12,10,0094fd1c +1093575000,12,11,0006052e +1093585000,12,12,fff8fafd +1093595000,12,13,011a0143 +1093605000,12,14,fe500282 +1093615000,12,15,0108fd98 +1093625000,12,16,ffba0132 +1093635000,12,17,ff92ffaf +1093645000,12,18,ff71ff86 +1093655000,12,19,0095ffcd +1093665000,12,20,0182fffe +1093675000,12,21,fda1fff2 +1093685000,12,22,0179017c +1093695000,12,23,fe7ffeda +1093705000,12,24,024c000b +1093715000,12,25,fee4ffd3 +1093725000,12,26,ffd40084 +1093735000,12,27,ff760044 +1093745000,12,28,0154ff63 +1093755000,12,29,ff36fff3 +1093765000,12,30,005e00ca +1093775000,12,31,ff30fe4a +1098055000,13,0,fe260064 +1098065000,13,1,01d7ffec +1098075000,13,2,fdecfe7e +1098085000,13,3,0232019d +1098095000,13,4,fddd01b2 +1098105000,13,5,0395fc8b +1098115000,13,6,fdf90234 +1098125000,13,7,ffccfe4c +1098135000,13,8,004b02aa +1098145000,13,9,fffdfd6d +1098155000,13,10,ffd60058 +1098165000,13,11,fec001ff +1098175000,13,12,016dfda9 +1098185000,13,13,00970098 +1098195000,13,14,ff1500f3 +1098205000,13,15,0035fdc7 +1098215000,13,16,00900178 +1098225000,13,17,fffb0062 +1098235000,13,18,fe70ff6e +1098245000,13,19,00d8007b +1098255000,13,20,ff47ff32 +1098265000,13,21,ffd300bf +1098275000,13,22,01d9ff48 +1098285000,13,23,fe18018e +1098295000,13,24,01e3ff7e +1098305000,13,25,fe19ff69 +1098315000,13,26,022aff40 +1098325000,13,27,feb20189 +1098335000,13,28,003bff87 +1098345000,13,29,ff69fefa +1098355000,13,30,015d01d5 +1098365000,13,31,ffcbfedf +1102645000,14,0,fe0b0048 +1102655000,14,1,02a0ff70 +1102665000,14,2,ffa800fa +1102675000,14,3,fe5bff52 +1102685000,14,4,008400d8 +1102695000,14,5,01d0ffb3 +1102705000,14,6,ff15fefe +1102715000,14,7,fdda01c2 +1102725000,14,8,015ffeb7 +1102735000,14,9,018600fa +1102745000,14,10,ff0afe54 +1102755000,14,11,ffcb026a +1102765000,14,12,01bffe7a +1102775000,14,13,fd00ff4f +1102785000,14,14,0241ff78 +1102795000,14,15,003b013a +1102805000,14,16,fd65ffc2 +1102815000,14,17,02ea00d6 +1102825000,14,18,fd24ff26 +1102835000,14,19,01830030 +1102845000,14,20,ff680034 +1102855000,14,21,ffdaff6d +1102865000,14,22,016500e4 +1102875000,14,23,ff62fde4 +1102885000,14,24,00950247 +1102895000,14,25,fe58fe54 +1102905000,14,26,015a0248 +1102915000,14,27,fea3fe9c +1102925000,14,28,012900e2 +1102935000,14,29,ff4efe85 +1102945000,14,30,00cd00ca +1102955000,14,31,ffedffc0 +1107235000,15,0,ff7b0038 +1107245000,15,1,0108ff9e +1107255000,15,2,0002ffb4 +1107265000,15,3,ffd6fe66 +1107275000,15,4,ff370249 +1107285000,15,5,01de007d +1107295000,15,6,fe35feb3 +1107305000,15,7,005d00b0 +1107315000,15,8,004cff76 +1107325000,15,9,0098019a +1107335000,15,10,fdd1fd00 +1107345000,15,11,00e60299 +1107355000,15,12,01ddfdf7 +1107365000,15,13,fe3d0196 +1107375000,15,14,00a8ff72 +1107385000,15,15,0095ff77 +1107395000,15,16,fe7d00ec +1107405000,15,17,01d2feca +1107415000,15,18,fdb60246 +1107425000,15,19,0028fe22 +1107435000,15,20,017100f9 +1107445000,15,21,fee4ff75 +1107455000,15,22,00bdffc9 +1107465000,15,23,00090044 +1107475000,15,24,00b00202 +1107485000,15,25,ff56fd0e +1107495000,15,26,0087017e +1107505000,15,27,ff34feb7 +1107515000,15,28,0127013b +1107525000,15,29,fd71ff28 +1107535000,15,30,036600aa +1107545000,15,31,fe05ffdd +1111825000,16,0,000bfffa +1111835000,16,1,011700d4 +1111845000,16,2,0003ff74 +1111855000,16,3,fe8200a0 +1111865000,16,4,fed9ff9a +1111875000,16,5,04780186 +1111885000,16,6,fcd2fea6 +1111895000,16,7,ffccffa9 +1111905000,16,8,010a0002 +1111915000,16,9,ff3f00b5 +1111925000,16,10,00ddfeae +1111935000,16,11,ff76040b +1111945000,16,12,00c6fb78 +1111955000,16,13,ff4401b9 +1111965000,16,14,ff8effbb +1111975000,16,15,0235fed0 +1111985000,16,16,fd870268 +1111995000,16,17,01f1ff02 +1112005000,16,18,fe7fff2e +1112015000,16,19,ff22019a +1112025000,16,20,019bfeb6 +1112035000,16,21,ff9e0018 +1112045000,16,22,00260140 +1112055000,16,23,fef2fdd7 +1112065000,16,24,03ac02ec +1112075000,16,25,fc99fd89 +1112085000,16,26,015100dc +1112095000,16,27,ff9eff63 +1112105000,16,28,ff8e00b8 +1112115000,16,29,ffc6ff85 +1112125000,16,30,016a0133 +1112135000,16,31,fea5fe48 +1116415000,17,0,015dff4e +1116425000,17,1,0051ffdc +1116435000,17,2,fe38ffe5 +1116445000,17,3,0308012a +1116455000,17,4,fc40fec7 +1116465000,17,5,03c10115 +1116475000,17,6,fce1012b +1116485000,17,7,0171fdbb +1116495000,17,8,0040ffc0 +1116505000,17,9,ff570255 +1116515000,17,10,fff6fe0e +1116525000,17,11,ffdf021c +1116535000,17,12,0122fd6e +1116545000,17,13,ff58010d +1116555000,17,14,ffb40042 +1116565000,17,15,00a2feb8 +1116575000,17,16,0019013c +1116585000,17,17,ff31ff30 +1116595000,17,18,ff9e01f1 +1116605000,17,19,00e80022 +1116615000,17,20,ff58fda9 +1116625000,17,21,ffdf00d1 +1116635000,17,22,01a10103 +1116645000,17,23,fde1fdbd +1116655000,17,24,02ea029a +1116665000,17,25,fd47fe1f +1116675000,17,26,021c0128 +1116685000,17,27,fe8dff20 +1116695000,17,28,0036013e +1116705000,17,29,ffe0fec5 +1116715000,17,30,01b20094 +1116725000,17,31,fd580000 +1121005000,18,0,02b2006e +1121015000,18,1,feaeffb3 +1121025000,18,2,01af0008 +1121035000,18,3,fdd0002f +1121045000,18,4,ffaa0096 +1121055000,18,5,0378003f +1121065000,18,6,fd0aff4f +1121075000,18,7,0219ffd1 +1121085000,18,8,fdc4ffda +1121095000,18,9,0173019b +1121105000,18,10,fee8fdb1 +1121115000,18,11,0150020e +1121125000,18,12,fe81feeb +1121135000,18,13,00e6ff14 +1121145000,18,14,01680149 +1121155000,18,15,fe8effef +1121165000,18,16,00060008 +1121175000,18,17,011c005d +1121185000,18,18,fd63fed0 +1121195000,18,19,019a0119 +1121205000,18,20,ff96fe74 +1121215000,18,21,00a0009b +1121225000,18,22,ffe40213 +1121235000,18,23,fea1fd9f +1121245000,18,24,03440128 +1121255000,18,25,fd63ff9d +1121265000,18,26,012a0043 +1121275000,18,27,ff1efeea +1121285000,18,28,002700cb +1121295000,18,29,0042013a +1121305000,18,30,01befde1 +1121315000,18,31,fc200061 +1125595000,19,0,ff8affea +1125605000,19,1,003afff9 +1125615000,19,2,0055ff8a +1125625000,19,3,007701d0 +1125635000,19,4,fdf1fdf9 +1125645000,19,5,030e0259 +1125655000,19,6,fe54fe88 +1125665000,19,7,00ccfff1 +1125675000,19,8,fe840180 +1125685000,19,9,0059fe0a +1125695000,19,10,00b50131 +1125705000,19,11,00fc002e +1125715000,19,12,fd95fe62 +1125725000,19,13,0194002e +1125735000,19,14,00a2ff6d +1125745000,19,15,ff5502d3 +1125755000,19,16,ff5cfdf6 +1125765000,19,17,ffcc01e5 +1125775000,19,18,0149fec0 +1125785000,19,19,feabffba +1125795000,19,20,0011002f +1125805000,19,21,015eff05 +1125815000,19,22,ff8c018e +1125825000,19,23,fe08fdd5 +1125835000,19,24,03260334 +1125845000,19,25,fda9fe08 +1125855000,19,26,01a50029 +1125865000,19,27,fe320050 +1125875000,19,28,01a9008a +1125885000,19,29,0028ff9c +1125895000,19,30,ff06ff51 +1125905000,19,31,00070027 +1130185000,20,0,ff4f01e8 +1130195000,20,1,0127ffb8 +1130205000,20,2,ff5bff10 +1130215000,20,3,00720195 +1130225000,20,4,fdffffc9 +1130235000,20,5,048f0063 +1130245000,20,6,fc89fed1 +1130255000,20,7,00f400b1 +1130265000,20,8,ff78ffc7 +1130275000,20,9,0029002b +1130285000,20,10,fffcfe9d +1130295000,20,11,ff76027e +1130305000,20,12,0181fe7d +1130315000,20,13,fea3ff34 +1130325000,20,14,00950168 +1130335000,20,15,0139ffa4 +1130345000,20,16,fe09000a +1130355000,20,17,01f9015c +1130365000,20,18,fdb5fdee +1130375000,20,19,00680095 +1130385000,20,20,00f7ffc9 +1130395000,20,21,fef10013 +1130405000,20,22,011d00f7 +1130415000,20,23,fe06fdd5 +1130425000,20,24,046c02fb +1130435000,20,25,fd13ff05 +1130445000,20,26,ffd8ff65 +1130455000,20,27,ffecffd0 +1130465000,20,28,0105003d +1130475000,20,29,ff69007a +1130485000,20,30,00e9ffe0 +1130495000,20,31,fee9fde6 +1134775000,21,0,ff330075 +1134785000,21,1,00cdff0c +1134795000,21,2,feb3ffff +1134805000,21,3,0255002f +1134815000,21,4,fcdd023b +1134825000,21,5,0268fdba +1134835000,21,6,ffa200d2 +1134845000,21,7,ffe6ffc9 +1134855000,21,8,ffafff41 +1134865000,21,9,fff30117 +1134875000,21,10,00f4fe77 +1134885000,21,11,fe750253 +1134895000,21,12,0121fd98 +1134905000,21,13,ff3d012c +1134915000,21,14,00ddff34 +1134925000,21,15,fec60189 +1134935000,21,16,0209fe89 +1134945000,21,17,ff790034 +1134955000,21,18,fdfd0191 +1134965000,21,19,01b1fee9 +1134975000,21,20,ff13fee5 +1134985000,21,21,ff96008a +1134995000,21,22,00e4ffb8 +1135005000,21,23,ff4c023d +1135015000,21,24,0121fe45 +1135025000,21,25,ffc700b1 +1135035000,21,26,00a40015 +1135045000,21,27,ff11fea5 +1135055000,21,28,fffb0294 +1135065000,21,29,0075fd00 +1135075000,21,30,fecd0136 +1135085000,21,31,013c0009 +1139365000,22,0,ff72fdd0 +1139375000,22,1,0179ffae +1139385000,22,2,fe4501e3 +1139395000,22,3,0118ff77 +1139405000,22,4,ff0aff75 +1139415000,22,5,00fb0123 +1139425000,22,6,00e6ff8c +1139435000,22,7,ffa0ffe5 +1139445000,22,8,fe2afefe +1139455000,22,9,01a3011b +1139465000,22,10,ff5cffaf +1139475000,22,11,00b30088 +1139485000,22,12,fe07fefe +1139495000,22,13,0224014a +1139505000,22,14,fe4ffd1b +1139515000,22,15,01a6037a +1139525000,22,16,0028fe32 +1139535000,22,17,fec3ffa6 +1139545000,22,18,00fb027d +1139555000,22,19,fe22fd4f +1139565000,22,20,029e01dd +1139575000,22,21,fc97fe4f +1139585000,22,22,01c000ca +1139595000,22,23,0014001b +1139605000,22,24,016c00c0 +1139615000,22,25,fef5ff31 +1139625000,22,26,ff60fff1 +1139635000,22,27,00db0036 +1139645000,22,28,00410098 +1139655000,22,29,ff06febc +1139665000,22,30,013f0027 +1139675000,22,31,fefe01aa +1143955000,23,0,01a10171 +1143965000,23,1,ff29fe32 +1143975000,23,2,ff1b019a +1143985000,23,3,0032fefe +1143995000,23,4,ffe50045 +1144005000,23,5,01da0152 +1144015000,23,6,fed7fe81 +1144025000,23,7,000c016e +1144035000,23,8,febbfe53 +1144045000,23,9,01d001e7 +1144055000,23,10,fe6dfd01 +1144065000,23,11,00ec03c6 +1144075000,23,12,008ffe2a +1144085000,23,13,ff8dfffb +1144095000,23,14,01befe7e +1144105000,23,15,fda00220 +1144115000,23,16,0021ff63 +1144125000,23,17,0161fec4 +1144135000,23,18,fe310260 +1144145000,23,19,0044feb6 +1144155000,23,20,0125ff11 +1144165000,23,21,feba020a +1144175000,23,22,00edfefb +1144185000,23,23,0050ffb8 +1144195000,23,24,ffdbffb5 +1144205000,23,25,007a008f +1144215000,23,26,ff1b0181 +1144225000,23,27,ffcafc6e +1144235000,23,28,ffff0364 +1144245000,23,29,008bfce5 +1144255000,23,30,ffca030a +1144265000,23,31,ff48fdea +1148545000,24,0,ff37ffc7 +1148555000,24,1,02810083 +1148565000,24,2,fe2100ea +1148575000,24,3,0057fe62 +1148585000,24,4,fe420288 +1148595000,24,5,03e9fea2 +1148605000,24,6,fd77ffcc +1148615000,24,7,00580118 +1148625000,24,8,000dfe07 +1148635000,24,9,003b0231 +1148645000,24,10,ffcafcb9 +1148655000,24,11,011b0533 +1148665000,24,12,ff01fb6e +1148675000,24,13,ff990161 +1148685000,24,14,0108ffc8 +1148695000,24,15,ff39003e +1148705000,24,16,000d00a1 +1148715000,24,17,023fff6f +1148725000,24,18,fcff0094 +1148735000,24,19,0115fec6 +1148745000,24,20,00120092 +1148755000,24,21,ff55fec4 +1148765000,24,22,00b50186 +1148775000,24,23,fe30feca +1148785000,24,24,028b0255 +1148795000,24,25,008dfebd +1148805000,24,26,fd3a0075 +1148815000,24,27,0291fe1d +1148825000,24,28,fea70144 +1148835000,24,29,feb9ffd1 +1148845000,24,30,025000ca +1148855000,24,31,fe8ffed0 +1153135000,25,0,0270ff18 +1153145000,25,1,ffa200c7 +1153155000,25,2,004cff40 +1153165000,25,3,feb4fffb +1153175000,25,4,017701d4 +1153185000,25,5,ff92fec1 +1153195000,25,6,ff41ffec +1153205000,25,7,012f0028 +1153215000,25,8,fef90006 +1153225000,25,9,ff7ffff5 +1153235000,25,10,00fdfffc +1153245000,25,11,fe690154 +1153255000,25,12,02b2fe5a +1153265000,25,13,fe2dffa5 +1153275000,25,14,010c00fd +1153285000,25,15,013cfecf +1153295000,25,16,fc860220 +1153305000,25,17,02bafe29 +1153315000,25,18,fd66022c +1153325000,25,19,0134fe77 +1153335000,25,20,005ffff4 +1153345000,25,21,005000c1 +1153355000,25,22,ff63ff1c +1153365000,25,23,0021008c +1153375000,25,24,01cd0016 +1153385000,25,25,ff0d004b +1153395000,25,26,ff3dff80 +1153405000,25,27,ff9bfed6 +1153415000,25,28,02040132 +1153425000,25,29,fd690169 +1153435000,25,30,037cfd9b +1153445000,25,31,fbc800f1 +1157725000,26,0,00cdfea4 +1157735000,26,1,00140286 +1157745000,26,2,fffdfe6d +1157755000,26,3,0060007e +1157765000,26,4,fedd0009 +1157775000,26,5,01b5017d +1157785000,26,6,fedcfead +1157795000,26,7,ffaaff3b +1157805000,26,8,0133005a +1157815000,26,9,ff6b01e1 +1157825000,26,10,00a6fd7c +1157835000,26,11,fe970312 +1157845000,26,12,012dfbd7 +1157855000,26,13,003c02f5 +1157865000,26,14,feb0fe05 +1157875000,26,15,019001aa +1157885000,26,16,ff29ff2a +1157895000,26,17,01900106 +1157905000,26,18,fd4bff3f +1157915000,26,19,00e40104 +1157925000,26,20,00adfd4d +1157935000,26,21,feb90203 +1157945000,26,22,025c0037 +1157955000,26,23,fe08fd3f +1157965000,26,24,00eb0420 +1157975000,26,25,ff25fca3 +1157985000,26,26,00fe0228 +1157995000,26,27,fffdff2c +1158005000,26,28,fe55017b +1158015000,26,29,0212fdab +1158025000,26,30,001c0087 +1158035000,26,31,fde6003c +1162315000,27,0,01870215 +1162325000,27,1,ffc6ff7c +1162335000,27,2,ffb00060 +1162345000,27,3,ffea0170 +1162355000,27,4,ff27fec4 +1162365000,27,5,0321008f +1162375000,27,6,fc32ffe5 +1162385000,27,7,01d2fef8 +1162395000,27,8,0078ff69 +1162405000,27,9,ffc6026c +1162415000,27,10,ff8ffd6c +1162425000,27,11,00a4011d +1162435000,27,12,fefefff1 +1162445000,27,13,01a1000e +1162455000,27,14,fd9d00b0 +1162465000,27,15,0162fecb +1162475000,27,16,fef50155 +1162485000,27,17,01ccfe8a +1162495000,27,18,fedcffc4 +1162505000,27,19,ff2e01f6 +1162515000,27,20,0111fd20 +1162525000,27,21,ff0902d9 +1162535000,27,22,01b2ff63 +1162545000,27,23,fea40016 +1162555000,27,24,fff0ffad +1162565000,27,25,002c001e +1162575000,27,26,01810004 +1162585000,27,27,fe88ff9d +1162595000,27,28,006600f3 +1162605000,27,29,ff21ff42 +1162615000,27,30,02a301bc +1162625000,27,31,fd34fc2f +1166905000,28,0,01c5ff69 +1166915000,28,1,fde5000a +1166925000,28,2,015b00cd +1166935000,28,3,00b30037 +1166945000,28,4,fd66ff9d +1166955000,28,5,0477ffd8 +1166965000,28,6,fd300155 +1166975000,28,7,ff35ff30 +1166985000,28,8,00b0ff97 +1166995000,28,9,00a70080 +1167005000,28,10,feb7fd6e +1167015000,28,11,01fd060d +1167025000,28,12,fee3fad6 +1167035000,28,13,00f800f4 +1167045000,28,14,ff19004d +1167055000,28,15,000e0001 +1167065000,28,16,005d0083 +1167075000,28,17,0093ff4a +1167085000,28,18,fde9fff5 +1167095000,28,19,0195008f +1167105000,28,20,fef2feb7 +1167115000,28,21,00850206 +1167125000,28,22,005affbb +1167135000,28,23,fefffe3a +1167145000,28,24,02d60175 +1167155000,28,25,fd19ff8c +1167165000,28,26,012dffa4 +1167175000,28,27,ff630089 +1167185000,28,28,0115fed6 +1167195000,28,29,fe4c01c6 +1167205000,28,30,01fdffe7 +1167215000,28,31,fddeff31 +1171495000,29,0,013dfe98 +1171505000,29,1,ff2e01dc +1171515000,29,2,ffcbfe32 +1171525000,29,3,007d01f1 +1171535000,29,4,feb8006c +1171545000,29,5,0298fe70 +1171555000,29,6,ff0e00d0 +1171565000,29,7,fe8dffbf +1171575000,29,8,01ed0074 +1171585000,29,9,fe36feca +1171595000,29,10,01520043 +1171605000,29,11,fea90209 +1171615000,29,12,0115fd8f +1171625000,29,13,0040003e +1171635000,29,14,ffb30180 +1171645000,29,15,00c3fdf3 +1171655000,29,16,fef3026a +1171665000,29,17,013cfe90 +1171675000,29,18,fced0082 +1171685000,29,19,0313ff65 +1171695000,29,20,fdfcff6e +1171705000,29,21,00de00b8 +1171715000,29,22,001000c8 +1171725000,29,23,ff8dff8d +1171735000,29,24,023fff9e +1171745000,29,25,fe540026 +1171755000,29,26,ff4a007d +1171765000,29,27,009b0021 +1171775000,29,28,00ebfe0b +1171785000,29,29,fe660246 +1171795000,29,30,018bfefc +1171805000,29,31,fe7f0029 +1176085000,30,0,0108004c +1176095000,30,1,fec9ff46 +1176105000,30,2,00af00da +1176115000,30,3,ffffffc8 +1176125000,30,4,ff7c0125 +1176135000,30,5,0183ff08 +1176145000,30,6,ffceffec +1176155000,30,7,fe37ffc1 +1176165000,30,8,01c10051 +1176175000,30,9,002f0079 +1176185000,30,10,fed4fdbf +1176195000,30,11,0078030b +1176205000,30,12,feb7fdcc +1176215000,30,13,02bf00b8 +1176225000,30,14,fd4fffbe +1176235000,30,15,01f7ff8a +1176245000,30,16,006c00c4 +1176255000,30,17,feefffb0 +1176265000,30,18,ff69ffe6 +1176275000,30,19,ffeb00c0 +1176285000,30,20,ffaaff39 +1176295000,30,21,fe89ffca +1176305000,30,22,047c00cc +1176315000,30,23,fd45fec7 +1176325000,30,24,000f01eb +1176335000,30,25,0009fdf9 +1176345000,30,26,00940191 +1176355000,30,27,003e0035 +1176365000,30,28,fef70062 +1176375000,30,29,0105fe9e +1176385000,30,30,ff2fffb2 +1176395000,30,31,ffcd0086 +1180675000,31,0,fdcaff82 +1180685000,31,1,03acff4a +1180695000,31,2,fb8a00fb +1180705000,31,3,03c0ff52 +1180715000,31,4,ff6e0083 +1180725000,31,5,ff83ffee +1180735000,31,6,007d0136 +1180745000,31,7,ffb9fed9 +1180755000,31,8,ff22fff0 +1180765000,31,9,0202ff80 +1180775000,31,10,fd52011f +1180785000,31,11,00e9fff4 +1180795000,31,12,01adfe90 +1180805000,31,13,ff1100f3 +1180815000,31,14,0052ff77 +1180825000,31,15,feec0057 +1180835000,31,16,0202ffbe +1180845000,31,17,fd9e0054 +1180855000,31,18,00dc0157 +1180865000,31,19,0018fe12 +1180875000,31,20,ff7effd1 +1180885000,31,21,001700ca +1180895000,31,22,01b3ffa4 +1180905000,31,23,fe35002f +1180915000,31,24,ff82fff8 +1180925000,31,25,009000fa +1180935000,31,26,015cff03 +1180945000,31,27,ff0700d4 +1180955000,31,28,00c7fe64 +1180965000,31,29,feb90105 +1180975000,31,30,00faff9b +1180985000,31,31,ffbe00dd +1185265000,32,0,004e00d5 +1185275000,32,1,002bfe5c +1185285000,32,2,01000073 +1185295000,32,3,feab00c7 +1185305000,32,4,000bff04 +1185315000,32,5,01630228 +1185325000,32,6,fe4efe26 +1185335000,32,7,00cc012b +1185345000,32,8,fea5fef5 +1185355000,32,9,01d8007f +1185365000,32,10,ff11fdf8 +1185375000,32,11,ffc00411 +1185385000,32,12,0062fdc5 +1185395000,32,13,ffe5feea +1185405000,32,14,00d002f4 +1185415000,32,15,ff65fd30 +1185425000,32,16,00080181 +1185435000,32,17,fe0f00b4 +1185445000,32,18,0318fea7 +1185455000,32,19,ff7d00af +1185465000,32,20,feb9ff88 +1185475000,32,21,ffcf0044 +1185485000,32,22,019cff72 +1185495000,32,23,fdbe0051 +1185505000,32,24,03e90289 +1185515000,32,25,fcbefd75 +1185525000,32,26,0207000a +1185535000,32,27,fee0ffe9 +1185545000,32,28,009e002b +1185555000,32,29,0009fe9e +1185565000,32,30,fffe0258 +1185575000,32,31,fec9fe9c +1189855000,33,0,00010179 +1189865000,33,1,00d3005f +1189875000,33,2,0008fed1 +1189885000,33,3,ffb2011c +1189895000,33,4,feb10055 +1189905000,33,5,02d3ff93 +1189915000,33,6,fdb4feb5 +1189925000,33,7,010101a9 +1189935000,33,8,fec6fec2 +1189945000,33,9,014000e1 +1189955000,33,10,0019fdd2 +1189965000,33,11,fffa0371 +1189975000,33,12,ff62fea4 +1189985000,33,13,feeffe72 +1189995000,33,14,017d0204 +1190005000,33,15,0065ff55 +1190015000,33,16,fec5ffe9 +1190025000,33,17,00b3fffd +1190035000,33,18,ffa0003b +1190045000,33,19,00000084 +1190055000,33,20,ff0dff7f +1190065000,33,21,01f3ff1d +1190075000,33,22,ff12019b +1190085000,33,23,ff8ffdf1 +1190095000,33,24,025002f8 +1190105000,33,25,fd32fe67 +1190115000,33,26,01830032 +1190125000,33,27,ff68011b +1190135000,33,28,00dcfe14 +1190145000,33,29,ff93006a +1190155000,33,30,01210024 +1190165000,33,31,fe37fe85 +1194445000,34,0,0296feb5 +1194455000,34,1,feb101a2 +1194465000,34,2,00c6fe54 +1194475000,34,3,ff290228 +1194485000,34,4,ff4cfdd0 +1194495000,34,5,022f028e +1194505000,34,6,fec0fec9 +1194515000,34,7,fffd0008 +1194525000,34,8,00710093 +1194535000,34,9,ff83fedd +1194545000,34,10,00b1ffb8 +1194555000,34,11,fe8d00f6 +1194565000,34,12,00ac0019 +1194575000,34,13,00e5fd95 +1194585000,34,14,fe580310 +1194595000,34,15,01b4ff03 +1194605000,34,16,fe4e00a3 +1194615000,34,17,0201ff58 +1194625000,34,18,fde20066 +1194635000,34,19,00e50046 +1194645000,34,20,ffcafe7e +1194655000,34,21,003b0120 +1194665000,34,22,fff00087 +1194675000,34,23,ff5dfddc +1194685000,34,24,021f03cd +1194695000,34,25,ff5bfdf9 +1194705000,34,26,fea7ff82 +1194715000,34,27,0111ffd8 +1194725000,34,28,fffa0069 +1194735000,34,29,ff09009d +1194745000,34,30,03280004 +1194755000,34,31,fbfeff4d +1199035000,35,0,ffd602af +1199045000,35,1,ff21fed6 +1199055000,35,2,011a007b +1199065000,35,3,000800e8 +1199075000,35,4,ff12fe1f +1199085000,35,5,014c023b +1199095000,35,6,ff66fe7a +1199105000,35,7,0059008f +1199115000,35,8,fe8d001b +1199125000,35,9,01e40017 +1199135000,35,10,fd74fec9 +1199145000,35,11,0333021b +1199155000,35,12,fe01fded +1199165000,35,13,00e8ff94 +1199175000,35,14,ff65013b +1199185000,35,15,00280025 +1199195000,35,16,00c00035 +1199205000,35,17,fdef0008 +1199215000,35,18,0086006b +1199225000,35,19,014cfee6 +1199235000,35,20,fee0ffaf +1199245000,35,21,012600db +1199255000,35,22,ff740066 +1199265000,35,23,ff15fe8b +1199275000,35,24,0251015d +1199285000,35,25,fdcc014f +1199295000,35,26,00d0fd11 +1199305000,35,27,001d014f +1199315000,35,28,00e10071 +1199325000,35,29,fe6eff6a +1199335000,35,30,01a5017d +1199345000,35,31,ff2efc51 +1203625000,36,0,004d01dc +1203635000,36,1,010cff80 +1203645000,36,2,ff31ff98 +1203655000,36,3,00310243 +1203665000,36,4,feb3fe73 +1203675000,36,5,03a1004c +1203685000,36,6,fd13ff92 +1203695000,36,7,00ab0055 +1203705000,36,8,0008ff6f +1203715000,36,9,ffb50010 +1203725000,36,10,00840037 +1203735000,36,11,ff490133 +1203745000,36,12,0069fe52 +1203755000,36,13,ffcd0020 +1203765000,36,14,00770028 +1203775000,36,15,ff78002f +1203785000,36,16,00230096 +1203795000,36,17,017effa8 +1203805000,36,18,fd910018 +1203815000,36,19,00d10059 +1203825000,36,20,005dff2d +1203835000,36,21,ff6fff8c +1203845000,36,22,0053018c +1203855000,36,23,fdfffd91 +1203865000,36,24,0540036f +1203875000,36,25,fbcdfe70 +1203885000,36,26,013e0051 +1203895000,36,27,00b9ff89 +1203905000,36,28,fe7fffd6 +1203915000,36,29,018700b8 +1203925000,36,30,000fffaa +1203935000,36,31,fe4afdfb +1208215000,37,0,01c7028d +1208225000,37,1,ff6cff28 +1208235000,37,2,012fffd7 +1208245000,37,3,feabffb9 +1208255000,37,4,fed4023e +1208265000,37,5,02aafe08 +1208275000,37,6,fe40ff6f +1208285000,37,7,00a80134 +1208295000,37,8,ff80ff7e +1208305000,37,9,ffa20022 +1208315000,37,10,011afecd +1208325000,37,11,ff65036f +1208335000,37,12,0085fccf +1208345000,37,13,ff180072 +1208355000,37,14,01970061 +1208365000,37,15,ff47ffee +1208375000,37,16,ff09ff5b +1208385000,37,17,00e80122 +1208395000,37,18,fde7ffa7 +1208405000,37,19,02c100b1 +1208415000,37,20,fde2ff28 +1208425000,37,21,01a0ff9c +1208435000,37,22,ff5c00c3 +1208445000,37,23,fee6ff4e +1208455000,37,24,028001e2 +1208465000,37,25,fe9afe54 +1208475000,37,26,00ac008d +1208485000,37,27,ffeb005f +1208495000,37,28,ff05fefb +1208505000,37,29,011e002a +1208515000,37,30,ff31016d +1208525000,37,31,ff0ffd08 +1212805000,38,0,008501b2 +1212815000,38,1,004bfdef +1212825000,38,2,fed2026c +1212835000,38,3,0124007e +1212845000,38,4,fee9fdf3 +1212855000,38,5,013e010e +1212865000,38,6,fec500c5 +1212875000,38,7,00e3fe42 +1212885000,38,8,ffcb0194 +1212895000,38,9,01a2ffce +1212905000,38,10,fd74fea8 +1212915000,38,11,00770180 +1212925000,38,12,0054fee7 +1212935000,38,13,fffd0015 +1212945000,38,14,ff9aff6e +1212955000,38,15,008a0177 +1212965000,38,16,01d10094 +1212975000,38,17,fd81fec7 +1212985000,38,18,00d6008e +1212995000,38,19,ff34fef2 +1213005000,38,20,0151006d +1213015000,38,21,fde0004e +1213025000,38,22,01810087 +1213035000,38,23,ffdffedc +1213045000,38,24,013b0026 +1213055000,38,25,fe620248 +1213065000,38,26,00ecfc42 +1213075000,38,27,ffb5034c +1213085000,38,28,0046fe81 +1213095000,38,29,ffe5ff93 +1213105000,38,30,000801aa +1213115000,38,31,ff40fd4f +1217395000,39,0,0070011d +1217405000,39,1,fd42ff9f +1217415000,39,2,025b003a +1217425000,39,3,fea1000b +1217435000,39,4,ff600081 +1217445000,39,5,02b1ffde +1217455000,39,6,fd4fff92 +1217465000,39,7,0202016a +1217475000,39,8,ff49fe24 +1217485000,39,9,ff7f0122 +1217495000,39,10,0137fd6e +1217505000,39,11,ff69043c +1217515000,39,12,003dfd51 +1217525000,39,13,ff0dff2b +1217535000,39,14,00c70180 +1217545000,39,15,ff91002e +1217555000,39,16,00b0ff53 +1217565000,39,17,ff3600cb +1217575000,39,18,0013ff38 +1217585000,39,19,00210035 +1217595000,39,20,ff6aff79 +1217605000,39,21,007bffd6 +1217615000,39,22,0035018a +1217625000,39,23,00baff0c +1217635000,39,24,ff3700c0 +1217645000,39,25,ffbdffc8 +1217655000,39,26,ffe3ffe8 +1217665000,39,27,00cdffac +1217675000,39,28,fe39ff99 +1217685000,39,29,027bff9d +1217695000,39,30,fe7d0314 +1217705000,39,31,0123fcb4 +1221985000,40,0,fffa0254 +1221995000,40,1,001afee6 +1222005000,40,2,013100ba +1222015000,40,3,ffa9ff72 +1222025000,40,4,fd8101e3 +1222035000,40,5,04bffd6f +1222045000,40,6,fd0201ee +1222055000,40,7,0068fe8e +1222065000,40,8,0015008d +1222075000,40,9,ff1100bb +1222085000,40,10,025efd8d +1222095000,40,11,fe1404d9 +1222105000,40,12,016afc22 +1222115000,40,13,fe5dff93 +1222125000,40,14,017d010d +1222135000,40,15,ffa6ffd1 +1222145000,40,16,ffbc0012 +1222155000,40,17,00b4ffbc +1222165000,40,18,ff6100f6 +1222175000,40,19,ff2bffd4 +1222185000,40,20,0111fee5 +1222195000,40,21,fe8500e1 +1222205000,40,22,0154fe9e +1222215000,40,23,feac0046 +1222225000,40,24,02450275 +1222235000,40,25,ff0dff43 +1222245000,40,26,ff78fdc7 +1222255000,40,27,0110020d +1222265000,40,28,fe04feee +1222275000,40,29,01cb0055 +1222285000,40,30,ffd500d3 +1222295000,40,31,fed6fda7 +1226575000,41,0,025a00bf +1226585000,41,1,febaff53 +1226595000,41,2,0096002a +1226605000,41,3,000fff07 +1226615000,41,4,ff0e01ea +1226625000,41,5,027e0095 +1226635000,41,6,fd770039 +1226645000,41,7,011bfdc5 +1226655000,41,8,0077004e +1226665000,41,9,fef60241 +1226675000,41,10,0103fc2c +1226685000,41,11,fe1d0367 +1226695000,41,12,0262fe08 +1226705000,41,13,ff1800c9 +1226715000,41,14,fef2ffcc +1226725000,41,15,01810028 +1226735000,41,16,ff4a003f +1226745000,41,17,0182ffff +1226755000,41,18,fda2feee +1226765000,41,19,0139019f +1226775000,41,20,ff9efe6c +1226785000,41,21,ffa20067 +1226795000,41,22,00a700e9 +1226805000,41,23,fefbff27 +1226815000,41,24,012500d0 +1226825000,41,25,ffd60001 +1226835000,41,26,00ddfe84 +1226845000,41,27,ff0b0033 +1226855000,41,28,0042021e +1226865000,41,29,ff70fe3f +1226875000,41,30,01b800f2 +1226885000,41,31,fcd9fed4 +1231165000,42,0,021b0076 +1231175000,42,1,fea500c2 +1231185000,42,2,008cffb1 +1231195000,42,3,0036ff92 +1231205000,42,4,ff11000e +1231215000,42,5,01df00ff +1231225000,42,6,fe34fedc +1231235000,42,7,0220ffa8 +1231245000,42,8,fcf800a5 +1231255000,42,9,021c0127 +1231265000,42,10,fefdfe4f +1231275000,42,11,004d0160 +1231285000,42,12,00e5fe29 +1231295000,42,13,ff51ffd9 +1231305000,42,14,01130215 +1231315000,42,15,feb4ff70 +1231325000,42,16,ffeffe72 +1231335000,42,17,018d0124 +1231345000,42,18,fca60085 +1231355000,42,19,020afeea +1231365000,42,20,002d003c +1231375000,42,21,febd0017 +1231385000,42,22,025c0124 +1231395000,42,23,fe36fe92 +1231405000,42,24,006e00ff +1231415000,42,25,003eff8b +1231425000,42,26,00850013 +1231435000,42,27,feffff10 +1231445000,42,28,009d0251 +1231455000,42,29,febffe59 +1231465000,42,30,0259ffd3 +1231475000,42,31,fd52ffba +1235755000,43,0,0165022c +1235765000,43,1,ff6a00e9 +1235775000,43,2,ff90fedf +1235785000,43,3,00e5ff97 +1235795000,43,4,fe8700fb +1235805000,43,5,03180040 +1235815000,43,6,fec2feec +1235825000,43,7,fda7fff6 +1235835000,43,8,02f20151 +1235845000,43,9,fdebff8d +1235855000,43,10,014bff6c +1235865000,43,11,fed000db +1235875000,43,12,00a7fd85 +1235885000,43,13,01f40226 +1235895000,43,14,fd4f0024 +1235905000,43,15,0219ffa4 +1235915000,43,16,fe51ffc2 +1235925000,43,17,00ec00ef +1235935000,43,18,fe78fe33 +1235945000,43,19,02110163 +1235955000,43,20,fd87feff +1235965000,43,21,01be00be +1235975000,43,22,0096ffc2 +1235985000,43,23,ff110062 +1235995000,43,24,0040ffdd +1236005000,43,25,fff3ff1b +1236015000,43,26,009d0152 +1236025000,43,27,fe2a0017 +1236035000,43,28,0243ff7d +1236045000,43,29,fe5aff6c +1236055000,43,30,020900a6 +1236065000,43,31,fd67fda8 +1240345000,44,0,02c9fed0 +1240355000,44,1,fe750066 +1240365000,44,2,014fffd2 +1240375000,44,3,ff35ffb8 +1240385000,44,4,ff3a009f +1240395000,44,5,0399ffab +1240405000,44,6,fdbe0167 +1240415000,44,7,ff21fd66 +1240425000,44,8,0040024a +1240435000,44,9,005cff8e +1240445000,44,10,00d9fe94 +1240455000,44,11,003b0362 +1240465000,44,12,fe7efca1 +1240475000,44,13,02650096 +1240485000,44,14,fcfb0063 +1240495000,44,15,01d9fefa +1240505000,44,16,ffd700e8 +1240515000,44,17,004f0012 +1240525000,44,18,fe41ffbc +1240535000,44,19,01650044 +1240545000,44,20,001aff51 +1240555000,44,21,ff210059 +1240565000,44,22,00b0021f +1240575000,44,23,ff45fc42 +1240585000,44,24,00f402e2 +1240595000,44,25,feb4ff2e +1240605000,44,26,017bfe2e +1240615000,44,27,fe9b021a +1240625000,44,28,0152fef3 +1240635000,44,29,ff6d006a +1240645000,44,30,018b002f +1240655000,44,31,fc2100de +1244935000,45,0,ffcdff08 +1244945000,45,1,017a0132 +1244955000,45,2,fe31ff29 +1244965000,45,3,01990109 +1244975000,45,4,fd6cff78 +1244985000,45,5,03b7ff68 +1244995000,45,6,fde9032a +1245005000,45,7,00a0fc3d +1245015000,45,8,ffa201e7 +1245025000,45,9,00c5ff34 +1245035000,45,10,febfff1e +1245045000,45,11,00cb025d +1245055000,45,12,ff33fdda +1245065000,45,13,009900ef +1245075000,45,14,0027ff2c +1245085000,45,15,ffe70185 +1245095000,45,16,023ffe6a +1245105000,45,17,fd0200b4 +1245115000,45,18,ffff0081 +1245125000,45,19,ffcbffd5 +1245135000,45,20,01baff10 +1245145000,45,21,fe590022 +1245155000,45,22,00a10140 +1245165000,45,23,0018fe0d +1245175000,45,24,011a014f +1245185000,45,25,fe930142 +1245195000,45,26,0079fda8 +1245205000,45,27,ff5d022d +1245215000,45,28,0177fed6 +1245225000,45,29,ff63fed3 +1245235000,45,30,ffdf01ca +1245245000,45,31,ff65ff71 +1249525000,46,0,0172fef0 +1249535000,46,1,001b004f +1249545000,46,2,003ffff5 +1249555000,46,3,ffdcffe3 +1249565000,46,4,ff0500a2 +1249575000,46,5,0193007a +1249585000,46,6,fef5000e +1249595000,46,7,ffd4fe23 +1249605000,46,8,00b70105 +1249615000,46,9,00ec0013 +1249625000,46,10,fed6ff35 +1249635000,46,11,ff5800eb +1249645000,46,12,0089ffa6 +1249655000,46,13,003eff62 +1249665000,46,14,fff9016a +1249675000,46,15,ff92fe67 +1249685000,46,16,01380164 +1249695000,46,17,0109fe47 +1249705000,46,18,fb81019b +1249715000,46,19,039cffa1 +1249725000,46,20,fd89ff42 +1249735000,46,21,01350004 +1249745000,46,22,00290118 +1249755000,46,23,ff76ff5f +1249765000,46,24,010700c3 +1249775000,46,25,fe64ff4f +1249785000,46,26,033effcb +1249795000,46,27,fd30017d +1249805000,46,28,0089fe6a +1249815000,46,29,009e00e8 +1249825000,46,30,ffcdfe70 +1249835000,46,31,fe4c01cb +1254115000,47,0,fe68ffe1 +1254125000,47,1,03710013 +1254135000,47,2,fdaf0024 +1254145000,47,3,0103ff91 +1254155000,47,4,fedb0028 +1254165000,47,5,006eff6c +1254175000,47,6,ff590164 +1254185000,47,7,00f5ffb3 +1254195000,47,8,ffe4fef3 +1254205000,47,9,ff3c00f2 +1254215000,47,10,01c1ff63 +1254225000,47,11,fd6900ed +1254235000,47,12,01faff2c +1254245000,47,13,fe53ff53 +1254255000,47,14,01fa00c4 +1254265000,47,15,ff4f00d6 +1254275000,47,16,fff8fe81 +1254285000,47,17,00270065 +1254295000,47,18,fe010076 +1254305000,47,19,010f0193 +1254315000,47,20,011dfddc +1254325000,47,21,fda200f4 +1254335000,47,22,0199fe82 +1254345000,47,23,01e301fd +1254355000,47,24,fe0cffcf +1254365000,47,25,00ccff46 +1254375000,47,26,ff6b0127 +1254385000,47,27,0115fde3 +1254395000,47,28,fe9601a4 +1254405000,47,29,ffd5ff25 +1254415000,47,30,0160005a +1254425000,47,31,ff71ffde +1258705000,48,0,febd0091 +1258715000,48,1,014bffb2 +1258725000,48,2,ff68ff70 +1258735000,48,3,008c0046 +1258745000,48,4,fd1dffab +1258755000,48,5,05ce0151 +1258765000,48,6,fbf7ff6e +1258775000,48,7,0051ff99 +1258785000,48,8,00300117 +1258795000,48,9,fefbfe0d +1258805000,48,10,01a60056 +1258815000,48,11,ffd40348 +1258825000,48,12,004ffcae +1258835000,48,13,fef8ffde +1258845000,48,14,01860153 +1258855000,48,15,ff70ff0b +1258865000,48,16,feed00a7 +1258875000,48,17,006b0034 +1258885000,48,18,001cfef8 +1258895000,48,19,ff5c01b6 +1258905000,48,20,011dff3f +1258915000,48,21,ff30feff +1258925000,48,22,011d00ee +1258935000,48,23,fd83ff7f +1258945000,48,24,04ea00e9 +1258955000,48,25,fb9fff89 +1258965000,48,26,01760032 +1258975000,48,27,0040ffdc +1258985000,48,28,ff53ff60 +1258995000,48,29,009a005e +1259005000,48,30,ff96ff91 +1259015000,48,31,00700055 +1263295000,49,0,00f5017f +1263305000,49,1,012400a3 +1263315000,49,2,fd71fea6 +1263325000,49,3,02ba0152 +1263335000,49,4,fcccffed +1263345000,49,5,0465fecc +1263355000,49,6,fc5e01ce +1263365000,49,7,025efe18 +1263375000,49,8,fe230033 +1263385000,49,9,ffb500f3 +1263395000,49,10,02befee8 +1263405000,49,11,fd9201b0 +1263415000,49,12,00dffe0c +1263425000,49,13,ff980078 +1263435000,49,14,007e0144 +1263445000,49,15,ffbdfe65 +1263455000,49,16,ffab0107 +1263465000,49,17,00ceff7d +1263475000,49,18,fe790100 +1263485000,49,19,0068ff92 +1263495000,49,20,0158fea5 +1263505000,49,21,fe37012a +1263515000,49,22,014a0048 +1263525000,49,23,ff60fe78 +1263535000,49,24,0161028f +1263545000,49,25,fe69000d +1263555000,49,26,00fcfe86 +1263565000,49,27,fedcfff4 +1263575000,49,28,00d90012 +1263585000,49,29,00c40042 +1263595000,49,30,0056003a +1263605000,49,31,fdcdfe13 +1267885000,50,0,005301d0 +1267895000,50,1,001e00cb +1267905000,50,2,00e8feea +1267915000,50,3,febcffbd +1267925000,50,4,00a10032 +1267935000,50,5,010b0036 +1267945000,50,6,fd73ff2f +1267955000,50,7,02bc01bd +1267965000,50,8,fe45fe3e +1267975000,50,9,0030024c +1267985000,50,10,ff21fd83 +1267995000,50,11,011401eb +1268005000,50,12,0074fe2f +1268015000,50,13,ff4bffe8 +1268025000,50,14,01660247 +1268035000,50,15,ff0bfe00 +1268045000,50,16,fee9ff90 +1268055000,50,17,017001d7 +1268065000,50,18,fea4ff02 +1268075000,50,19,0044016b +1268085000,50,20,ff17fe34 +1268095000,50,21,0293010e +1268105000,50,22,feff0077 +1268115000,50,23,fe66fd9d +1268125000,50,24,028f02b6 +1268135000,50,25,feb6fe9a +1268145000,50,26,010301a5 +1268155000,50,27,ff54fd89 +1268165000,50,28,0014023f +1268175000,50,29,ff23fdbc +1268185000,50,30,01b80267 +1268195000,50,31,fe5bfd0a +1272475000,51,0,fed8fe97 +1272485000,51,1,01440011 +1272495000,51,2,fe8d00d5 +1272505000,51,3,0269011b +1272515000,51,4,fce5fe92 +1272525000,51,5,04110101 +1272535000,51,6,fe15ffa3 +1272545000,51,7,ff6bff85 +1272555000,51,8,000100f3 +1272565000,51,9,0011fe48 +1272575000,51,10,ffe40147 +1272585000,51,11,0128ff30 +1272595000,51,12,feb8014f +1272605000,51,13,006bfe8b +1272615000,51,14,0111ff3a +1272625000,51,15,fe810226 +1272635000,51,16,00c0fe73 +1272645000,51,17,ff4602ef +1272655000,51,18,00effd3f +1272665000,51,19,fea30085 +1272675000,51,20,00490072 +1272685000,51,21,0031fef3 +1272695000,51,22,016d0095 +1272705000,51,23,fdbbfe5f +1272715000,51,24,02530437 +1272725000,51,25,fe5dfdd8 +1272735000,51,26,009cff61 +1272745000,51,27,ffe00174 +1272755000,51,28,000eff21 +1272765000,51,29,0093fed1 +1272775000,51,30,0031016a +1272785000,51,31,ff6d0002 +1277065000,52,0,ffed00ca +1277075000,52,1,00940125 +1277085000,52,2,ffc1fe17 +1277095000,52,3,0069018a +1277105000,52,4,fe340024 +1277115000,52,5,0481ffeb +1277125000,52,6,fce2ff3e +1277135000,52,7,ffa4013b +1277145000,52,8,00bafdb6 +1277155000,52,9,fff6022c +1277165000,52,10,ffa7fecf +1277175000,52,11,00be012c +1277185000,52,12,0091fe7c +1277195000,52,13,fe120089 +1277205000,52,14,015aff9b +1277215000,52,15,ffe1ffda +1277225000,52,16,ff9f014a +1277235000,52,17,01b6008f +1277245000,52,18,fc81fe11 +1277255000,52,19,028b0016 +1277265000,52,20,fef80148 +1277275000,52,21,ff6bfe25 +1277285000,52,22,01f0013a +1277295000,52,23,fd54ff89 +1277305000,52,24,03720192 +1277315000,52,25,fdd0ff28 +1277325000,52,26,fffb007d +1277335000,52,27,00c6fdf8 +1277345000,52,28,ff6b01bc +1277355000,52,29,00bafff7 +1277365000,52,30,0050ffe9 +1277375000,52,31,fea7fe96 +1281655000,53,0,ff2b02a3 +1281665000,53,1,ff08fe28 +1281675000,53,2,013d004b +1281685000,53,3,001b0138 +1281695000,53,4,ff000116 +1281705000,53,5,016dfdfb +1281715000,53,6,ff55001e +1281725000,53,7,00340092 +1281735000,53,8,ff1efec7 +1281745000,53,9,0108016f +1281755000,53,10,fedcfec8 +1281765000,53,11,00f30365 +1281775000,53,12,0024fb5b +1281785000,53,13,ff94022f +1281795000,53,14,00adffd7 +1281805000,53,15,ffedff75 +1281815000,53,16,ffbdffd9 +1281825000,53,17,ff3a0116 +1281835000,53,18,013d00f1 +1281845000,53,19,ff21fdba +1281855000,53,20,ff900042 +1281865000,53,21,0045ffab +1281875000,53,22,0045015a +1281885000,53,23,0024ffe2 +1281895000,53,24,003aff41 +1281905000,53,25,ff4a00cf +1281915000,53,26,016effa8 +1281925000,53,27,ff750045 +1281935000,53,28,ff6400b1 +1281945000,53,29,0056fccf +1281955000,53,30,febd036d +1281965000,53,31,01c7fd0b +1286245000,54,0,ff89fec5 +1286255000,54,1,01d7fff2 +1286265000,54,2,ffe8ffaa +1286275000,54,3,fed4004c +1286285000,54,4,00a000ef +1286295000,54,5,0051ff5f +1286305000,54,6,ffb3ff8d +1286315000,54,7,ffce0074 +1286325000,54,8,009c0086 +1286335000,54,9,ffb8feef +1286345000,54,10,ff5f0117 +1286355000,54,11,ff48ff63 +1286365000,54,12,016aff75 +1286375000,54,13,ffd700c9 +1286385000,54,14,0000fffa +1286395000,54,15,0197ff41 +1286405000,54,16,fc9f0139 +1286415000,54,17,0283fe88 +1286425000,54,18,fe1202b4 +1286435000,54,19,013efdce +1286445000,54,20,ffa00051 +1286455000,54,21,005b0097 +1286465000,54,22,00bffe09 +1286475000,54,23,fe220282 +1286485000,54,24,01f4ffa0 +1286495000,54,25,fe02fef3 +1286505000,54,26,026700eb +1286515000,54,27,fed6ff83 +1286525000,54,28,00a60077 +1286535000,54,29,fee1ff65 +1286545000,54,30,0246fe50 +1286555000,54,31,fd5102b9 +1290835000,55,0,ff86002a +1290845000,55,1,ffda01a1 +1290855000,55,2,ffbefe1c +1290865000,55,3,00780295 +1290875000,55,4,ffadfe11 +1290885000,55,5,01ec00f7 +1290895000,55,6,fe73ff64 +1290905000,55,7,ffb50117 +1290915000,55,8,0030fe58 +1290925000,55,9,ffaa0064 +1290935000,55,10,0030ff64 +1290945000,55,11,01ee022f +1290955000,55,12,fca7fd89 +1290965000,55,13,03c6014a +1290975000,55,14,fd07fe84 +1290985000,55,15,012e021e +1290995000,55,16,ff66ff7c +1291005000,55,17,0008fe73 +1291015000,55,18,003e0278 +1291025000,55,19,ff38fe73 +1291035000,55,20,0109ff77 +1291045000,55,21,ff54ff95 +1291055000,55,22,ffe702a4 +1291065000,55,23,000bfdc9 +1291075000,55,24,0184010a +1291085000,55,25,fd500118 +1291095000,55,26,01a8ffd8 +1291105000,55,27,00f2fdb1 +1291115000,55,28,fea3017f +1291125000,55,29,00feff22 +1291135000,55,30,fe9b024c +1291145000,55,31,0132fd52 +1295425000,56,0,fef900cc +1295435000,56,1,028cffd3 +1295445000,56,2,fe47ff9e +1295455000,56,3,00ffffc7 +1295465000,56,4,fd1a00c9 +1295475000,56,5,0614008c +1295485000,56,6,fb07ff4a +1295495000,56,7,014e00a1 +1295505000,56,8,ffe4fea9 +1295515000,56,9,ff5b0133 +1295525000,56,10,00b6fe93 +1295535000,56,11,fff9046c +1295545000,56,12,007efb01 +1295555000,56,13,ffb5016a +1295565000,56,14,00f10000 +1295575000,56,15,ff94ff3f +1295585000,56,16,ff3101ba +1295595000,56,17,00a8ff6f +1295605000,56,18,fefbffdc +1295615000,56,19,004900c7 +1295625000,56,20,0068fe51 +1295635000,56,21,fffc00ee +1295645000,56,22,006b0030 +1295655000,56,23,fe2efe07 +1295665000,56,24,03b602f9 +1295675000,56,25,fdf5ff1b +1295685000,56,26,ff74ff7f +1295695000,56,27,0023ff0e +1295705000,56,28,0084012d +1295715000,56,29,ff970004 +1295725000,56,30,00d9ff7a +1295735000,56,31,febcffa9 +1300015000,57,0,02d800fb +1300025000,57,1,fe79feb6 +1300035000,57,2,ff9cfe92 +1300045000,57,3,01a101fe +1300055000,57,4,fe20ff27 +1300065000,57,5,023b01ba +1300075000,57,6,fc81ff0d +1300085000,57,7,0419ffd2 +1300095000,57,8,fccbffd0 +1300105000,57,9,029701cd +1300115000,57,10,fe08fc9c +1300125000,57,11,ff5a033d +1300135000,57,12,01acfdb6 +1300145000,57,13,ffac00f3 +1300155000,57,14,003f0090 +1300165000,57,15,0043ff4b +1300175000,57,16,ffae0099 +1300185000,57,17,0007ffa8 +1300195000,57,18,ff5400d0 +1300205000,57,19,00d7ff36 +1300215000,57,20,ff28fedb +1300225000,57,21,005f00dc +1300235000,57,22,007f013f +1300245000,57,23,feb1fe3e +1300255000,57,24,02df01b0 +1300265000,57,25,fdf5fff9 +1300275000,57,26,00b8fe5e +1300285000,57,27,ffcaffab +1300295000,57,28,0064020c +1300305000,57,29,fef6fe0b +1300315000,57,30,01a90040 +1300325000,57,31,fcef0081 +1304605000,58,0,005d0006 +1304615000,58,1,003500df +1304625000,58,2,feb5fe91 +1304635000,58,3,02530066 +1304645000,58,4,fcbbfffc +1304655000,58,5,037500a2 +1304665000,58,6,fe1b0056 +1304675000,58,7,008aff5d +1304685000,58,8,00410088 +1304695000,58,9,ff2a0075 +1304705000,58,10,00c5fcaa +1304715000,58,11,fe2f0505 +1304725000,58,12,0232fcab +1304735000,58,13,00c30008 +1304745000,58,14,ff47010c +1304755000,58,15,fff4ffe2 +1304765000,58,16,fecdffd0 +1304775000,58,17,0149ff0f +1304785000,58,18,fe79012d +1304795000,58,19,00db0016 +1304805000,58,20,ff43fefc +1304815000,58,21,00ed014c +1304825000,58,22,01cbff80 +1304835000,58,23,fcccfeb9 +1304845000,58,24,024d018a +1304855000,58,25,fe5cff21 +1304865000,58,26,01bd00c0 +1304875000,58,27,fe9ffeef +1304885000,58,28,005801dd +1304895000,58,29,feb7fdce +1304905000,58,30,0273008e +1304915000,58,31,fe4a0050 +1309195000,59,0,013e0009 +1309205000,59,1,0057ffd7 +1309215000,59,2,0007ff49 +1309225000,59,3,ffc30252 +1309235000,59,4,fd9cfe29 +1309245000,59,5,0426014b +1309255000,59,6,fd4bff65 +1309265000,59,7,00d4ff88 +1309275000,59,8,ff71ffcd +1309285000,59,9,00df0217 +1309295000,59,10,ffeafdee +1309305000,59,11,fff301e9 +1309315000,59,12,ff71fe90 +1309325000,59,13,0069ff99 +1309335000,59,14,ff0900c4 +1309345000,59,15,01e7ff3b +1309355000,59,16,fe9e0123 +1309365000,59,17,0075fe6d +1309375000,59,18,ff1f012d +1309385000,59,19,01630124 +1309395000,59,20,ff42fdb3 +1309405000,59,21,ffbe021f +1309415000,59,22,008d0057 +1309425000,59,23,0012fd24 +1309435000,59,24,ffdb02fb +1309445000,59,25,ffe9fd25 +1309455000,59,26,011c0150 +1309465000,59,27,fe43ff01 +1309475000,59,28,00a10258 +1309485000,59,29,004ffe35 +1309495000,59,30,017b0194 +1309505000,59,31,fd07fe81 +1313785000,60,0,01c70137 +1313795000,60,1,fec60090 +1313805000,60,2,ffd0fe79 +1313815000,60,3,01760086 +1313825000,60,4,fd9001a3 +1313835000,60,5,0463fd15 +1313845000,60,6,fcad018f +1313855000,60,7,015b002f +1313865000,60,8,fef4ffde +1313875000,60,9,002d0089 +1313885000,60,10,ff4ffe28 +1313895000,60,11,0269043b +1313905000,60,12,fe9ffa86 +1313915000,60,13,00880273 +1313925000,60,14,ff130085 +1313935000,60,15,012ffe54 +1313945000,60,16,ff65008d +1313955000,60,17,ffae0120 +1313965000,60,18,fef6fdeb +1313975000,60,19,01b60172 +1313985000,60,20,ffd0000d +1313995000,60,21,ff29ffa5 +1314005000,60,22,005301bb +1314015000,60,23,fed7fde3 +1314025000,60,24,0280009a +1314035000,60,25,fe1bff9b +1314045000,60,26,00930024 +1314055000,60,27,ffef0011 +1314065000,60,28,01310076 +1314075000,60,29,fe50ff7f +1314085000,60,30,01050119 +1314095000,60,31,fe6bfe56 +1318375000,61,0,fe27ff5b +1318385000,61,1,02d50151 +1318395000,61,2,fd49ff88 +1318405000,61,3,00ffffc7 +1318415000,61,4,ff000121 +1318425000,61,5,02ebff48 +1318435000,61,6,feb9ff83 +1318445000,61,7,00190059 +1318455000,61,8,fe8800d1 +1318465000,61,9,012bfec0 +1318475000,61,10,ff0e0004 +1318485000,61,11,00120179 +1318495000,61,12,0183fdaf +1318505000,61,13,feff00a0 +1318515000,61,14,002800fe +1318525000,61,15,0072ffbb +1318535000,61,16,ff31000f +1318545000,61,17,011fff2d +1318555000,61,18,fd9701b2 +1318565000,61,19,00f5fe73 +1318575000,61,20,02120001 +1318585000,61,21,fcc50194 +1318595000,61,22,0223fda3 +1318605000,61,23,fe1f0247 +1318615000,61,24,0350ff5d +1318625000,61,25,fe41ff16 +1318635000,61,26,ffa201a2 +1318645000,61,27,fff6fefd +1318655000,61,28,0133ffd7 +1318665000,61,29,fed90120 +1318675000,61,30,00a4fedc +1318685000,61,31,0042ffe5 +1322965000,62,0,fefe018c +1322975000,62,1,038a0105 +1322985000,62,2,fc42fd55 +1322995000,62,3,0267030e +1323005000,62,4,fd17fe95 +1323015000,62,5,03d90166 +1323025000,62,6,fe38fdfe +1323035000,62,7,ff45003a +1323045000,62,8,0181ff93 +1323055000,62,9,ff4401c6 +1323065000,62,10,ff1afebd +1323075000,62,11,006100cc +1323085000,62,12,ff86fe4c +1323095000,62,13,02020214 +1323105000,62,14,fea1ff50 +1323115000,62,15,007cff64 +1323125000,62,16,000cffac +1323135000,62,17,ffbc01a9 +1323145000,62,18,ff0cff0b +1323155000,62,19,00affff6 +1323165000,62,20,ff8100d1 +1323175000,62,21,001bfe40 +1323185000,62,22,00f80170 +1323195000,62,23,ff6bffb6 +1323205000,62,24,ffcd00b1 +1323215000,62,25,00b2ff88 +1323225000,62,26,00a8ffb7 +1323235000,62,27,fef900e0 +1323245000,62,28,00a2ff2a +1323255000,62,29,fe7eff9a +1323265000,62,30,01e70166 +1323275000,62,31,fed4fd5c +1327555000,63,0,001cff08 +1327565000,63,1,0035ff34 +1327575000,63,2,00270061 +1327585000,63,3,ffa00199 +1327595000,63,4,0061ff5e +1327605000,63,5,feb20049 +1327615000,63,6,01a5ff73 +1327625000,63,7,fec1ff63 +1327635000,63,8,013d0140 +1327645000,63,9,ffa3ff63 +1327655000,63,10,ffa8ffa2 +1327665000,63,11,ff06011d +1327675000,63,12,005eff2e +1327685000,63,13,0110ff97 +1327695000,63,14,003b0082 +1327705000,63,15,ffa1ffa3 +1327715000,63,16,fddc0060 +1327725000,63,17,02e7fffe +1327735000,63,18,fead029b +1327745000,63,19,000cfc77 +1327755000,63,20,ff63022c +1327765000,63,21,01defe65 +1327775000,63,22,fe71fff5 +1327785000,63,23,009b0051 +1327795000,63,24,ff930130 +1327805000,63,25,0121ff2b +1327815000,63,26,ffa8ff9e +1327825000,63,27,ff2e013b +1327835000,63,28,02eeffa8 +1327845000,63,29,fb80ff6b +1327855000,63,30,03a3ff22 +1327865000,63,31,fe330151 diff --git a/9_Firmware/9_2_FPGA/tb/golden/golden_doppler.mem b/9_Firmware/9_2_FPGA/tb/golden/golden_doppler.mem index 6e8ce7b..d096de0 100644 --- a/9_Firmware/9_2_FPGA/tb/golden/golden_doppler.mem +++ b/9_Firmware/9_2_FPGA/tb/golden/golden_doppler.mem @@ -1,2176 +1,2176 @@ // 0x00000000 -00ccff51 -ff7b0135 -00d6fe35 -0024016a -fd7fff63 -04e300fb -fcc80088 -0076fe24 -ff2300e0 -02200041 -fdd4fe03 -0179047e -ff3bfc49 -00c500b7 -0012ff3e -ffa7018f +004cff69 +fff401dc +00a2fdd0 +ff5401a2 +fe51ff23 +049300b2 +fcb80120 +00f7fd99 +fea4010b +025700cb +fddefd1c +014b0507 +ffb3fc77 +00320047 +0006ffcb +000f010f // 0x00000010 -0086ff0b -fed1012d -00a8fef3 -003e008a -ffddffad -ff93ff2d -00c4ffbc -fe4e00a8 -02af0250 -fe54fdad -001a002d -0079001a -ffb5ffdb -ffcd0001 -01a6ff56 -fd5900f9 +ffd8febf +ffb0019a +00b6feb8 +ffaa0112 +0057ffbb +fef7fec8 +006e000e +ff19ffc7 +0288027d +fec9fe6f +fffaffb0 +ffe700b5 +0005ffdb +ff30ff17 +0204ffc3 +fdf100a9 // 0x00000020 -feb0011a -01980055 -001fff35 -ff8b010f -ffa9ff13 -01a2ff82 -fe60008e -003e00d4 -ff31ff67 -00b90055 -fff8fec5 -0082025f -ffe7fe41 -ff5dfe81 -0114031a -001efe2f +ffff0123 +00b8ff6a +008b0051 +ff8800ad +ff4bff8a +0183ff94 +fed1ffb3 +ffdd0106 +ff0ffefb +014801b3 +00c4fdca +ff4102cb +ff68fdb5 +0007ffb8 +018f0201 +ff80fdbd // 0x00000030 -fe300076 -012a005d -ffb1ff5d -ffeb0125 -ff11ff75 -01d2ff76 -0040015c -fd42fcb4 -04b303f9 -fc4dfea1 -01c4ff9d -feb80039 -002bffef -00e7ff8f -00800070 -fee2febd +fe51011f +01aa00a6 +fee1ff79 +00c20079 +fe41fffa +0289ff16 +ff13014f +fe91fd50 +046d03b3 +fc0efdc1 +015c0060 +ff4100c3 +00e0ff8f +ffb5feca +00b10161 +fe76fe79 // 0x00000040 -0015ff8d -ff52ffba -01630169 -ffc5ff4c -fdf3ff66 -02e4027f -fe87fdec -0112011a -fe46ff9f -0181ffc1 -0012ff14 -fec1010b -010d005a -fef2fdeb -02100112 -fe690125 +00ffff95 +fedc002a +01e5001f +fe7c000b +fea7ff68 +0304027c +feadfd80 +012501bd +fd6cfeed +01ed0132 +008afe01 +fe8b00c3 +00760066 +fffdfe58 +00fb0110 +ffaa0139 // 0x00000050 -ffa3004d -0220fe62 -fd55013f -0123feb8 -ffd7ff94 -ff2a0189 -0201ff52 -fe46ffc6 -014e0173 -ff01feaf -00ea0100 -ff97fd6d -ffed0370 -feecfe31 -02840084 -fe3fff8f +feb5ffc1 +01c2fe88 +fd9d0235 +020cfd87 +ff0b005a +ff9a00c4 +0165ffea +fe91fff1 +01f40131 +fe31fdcc +0118022f +ff09fcfb +00dc03fc +fe81fd70 +02a7009a +fdbcffe1 // 0x00000060 -0110fffe -ffbeffa0 -00370120 -003a0003 -fde1feaa -025502d3 -ff30fd68 -0044017c -ffdfffe8 -003bff9b -ff95ff7b -00800182 -0005fe67 -ff3bfed0 -007f0167 -ffe40181 +0080fff9 +ffb5ff57 +00d600b3 +ffe900c3 +fd92fde5 +039a0330 +fea4fd9c +ffb20171 +ffc7ff5d +00fa0003 +feb8ff83 +00fc00ed +fffbff2a +ff77fefa +00140122 +004b0115 // 0x00000070 -017afec0 -fde0006c -0085ffd0 -00f40003 -fe87ff9e -00a3fe79 -ff6e031c -00bcfd42 -012b0302 -fe6bfdad -01530059 -fe920160 -009ffe51 -ff89ffb8 -012f0249 -fe4cfe11 +0154ff5d +fdefffc5 +00b4003d +0087ffa5 +fe7afff9 +00b4fe30 +ffa40362 +004efcf3 +0209037d +fdc6fdf5 +016effcd +fe7c0117 +00fdfea0 +feffffc2 +01dc0168 +fe15ff4b // 0x00000080 -ff3300d6 -0140ff59 -00b2ffad -fe3c01c9 -004fff66 -0318ff62 -fd750031 -ff160061 -019fffd7 -fee80012 -fffeff25 -0091022a -0011fd75 -ff4b00f2 -010bffda -00110052 +feed00e2 +0189ffeb +00a9fef7 +fdcb01d7 +0093ff6d +0292ff98 +fdba008d +ffbf0014 +0125ff8b +ff2a0064 +ffe7fec2 +004702a1 +002ffd1a +ff0300bc +00f800bb +00b30011 // 0x00000090 -ff47fff4 -004c0173 -ff4efe15 -010800ff -fed7ff48 -0070ffe4 -00990121 -fe10fdef -049703e3 -fba8fc46 -01f201b9 -0037ffbe -fe69ffb1 -0279ff84 -ff47012c -feb5fe7e +ff2fffa6 +00af017b +fecffdb7 +00990163 +ff41ff8b +001aff5e +00b6018b +fe8dfdbc +04570439 +fbfefc12 +01e90120 +ff690025 +feb5fffa +0259ff42 +ffa00195 +fee5fdff // 0x000000a0 -016301fc -fea1000d -00a7ff52 -004b0145 -ff510068 -0165ff0d -fe81fe93 -005a0229 -ff92fe8f -00d30104 -ff32ff37 -014d0226 -fecdfd29 -00a20124 -00f3ff03 -fdaa00e6 +012d014d +fea70090 +0037fed9 +0129015a +feacffd0 +01bdffc4 +fe71feca +012d01c9 +fe1afeb8 +012100ea +ff66ff8a +01f80154 +fdecfdae +00e300e1 +0158ffa9 +fd6c002b // 0x000000b0 -02bbffa4 -fe8500ed -fe93ff90 -01bfff31 -fef3011a -00a3fee9 -ff4100cf -008400c7 -01c8fe39 -fe1700d6 -003800eb -00f5fe68 -ff47016d -000efe72 -ff270297 -0014fc46 +02a10075 +fe650044 +fec5ffaf +013bfef8 +ffe601be +000bfe5a +ff9d008a +ffd90165 +02c4fe92 +fd67006e +002e0036 +009cff6a +000e00c0 +fff1fead +ff220233 +0016fd3f // 0x000000c0 -00bd0135 -0044001d -ff78fe6c -0199009d -fd0500fc -03f3fff8 -fc670028 -0117fddc -01450299 -fed9fe4c -00170024 -00aa00bc -fe84ff16 -019c00ee -ff7fff71 -ff46ffb1 +ff64fffd +0210ff66 +fda90089 +0140ff0f +ff1a0141 +018f0078 +fe900041 +00abfd04 +fff702fd +00f9feaa +fea3ffc1 +ff1bfffa +01c400ae +ff2b00b8 +0083fe1c +0032010e // 0x000000d0 -017300ad -ffd2ff21 -ff2a01dc -ff29fe57 -00a10090 -00d3ff80 -fe79ff4e -008301da -0217fe95 -fd85028e -01abfd18 -ffa801ec -0062ff0e -fe02ffea -01f5ff75 -fe64fff5 +0006ffc1 +00b8ff4c +fdeb0229 +fff6fe37 +01380065 +fe9b0058 +00e0fe33 +01450296 +fe9bfe09 +00d702b8 +001dfd1d +fed301fc +0206ffa0 +fcf3fecc +0271ffc8 +ff0a0114 // 0x000000e0 -006e0292 -005bfeba -000cff3b -ff530197 -002dff2a -022e000f -fe63fffb -ffc30131 -ffa2fe9e -ff070153 -0201fe27 -018a015b -fc5efea0 -035000c2 -fdb6ffb0 -00ebffdf +ff5b02fa +01cdfee8 +fedafeb3 +0072027a +ffbcfe44 +02250067 +fe8400b0 +001effd4 +ff00ffd0 +001b004e +00b4fe62 +01e10173 +fc81fea8 +025a0091 +ff0c00cc +0088fead // 0x000000f0 -fece0014 -00d3ffe4 -ffba011d -ffabffd1 -0049fede -0082017d -ff11fedb -00830073 -009efef8 -fea701f3 -0205ff59 -fda4fe7d -01a0031c -ff44fd06 -018a02b2 -fe13fcf5 +ff190144 +00e9feda +ff5a010f +ff28006a +016cfdfa +ff3d01eb +0072ff00 +ff5a001e +00b8ff82 +fef70258 +0190fe48 +fe29ffe1 +022b018a +feacfded +01f60228 +fdbcfce1 // 0x00000100 -00580199 -00fafea3 -ff4d016f -ff1aff40 -ff3a0116 -03b8fe95 -fc98016f -01cffed4 -009c0027 -fe0f001c -00b5ff7d -ff070355 -014bfc04 -febf0092 -02800128 -fe41fed1 +00f20141 +ffe0feb3 +006b0077 +fecd0038 +ffe60046 +0345003e +fc2f003a +01c6ff6d +0095ff03 +feae0136 +ffd8fe72 +00970408 +003efc42 +fee80117 +011f001f +002afe47 // 0x00000110 -003e00f9 -01040007 -fe13ffb5 -00660062 -00b8ffb6 -ff68005f -00a8ff5b -fd9fffd2 -0416007f -fe43012a -ff4bfe67 -01c5001d -fe1b0090 -0171fffa -ff30001e -ff75fe55 +ff80021d +0180ff7d +fd350023 +018dffb6 +ffc8011e +ff25feda +012dffd0 +fe08ff21 +0431024f +fd12ffe2 +0020fec4 +013fff92 +fefc0122 +0056ff99 +00bd002f +fe20fef3 // 0x00000120 -01dffffb -ff12ffe4 -00b0010a -fffbfed4 -fe3affce -020f01b2 -fe9cff68 -01810069 -fe23ff00 -033f00b5 -fd38ff00 -febd012a -032cfea5 -fe2f0123 -0073fea7 -008801fa +00e8ff9a +0013fffe +008500c3 +ff45fed8 +ff3affa1 +02250242 +fdcaffaa +01d6ff7d +fdedff7c +03500100 +fd79fde5 +feef01e3 +02f0ff55 +fdbb0035 +00f4ff0d +007101d8 // 0x00000130 -ffd3fffb -00a2fea8 -fd3200ec -0249ff16 -000800a8 -fec5ffa8 -01c2ffd6 -fe6d0039 -00db0122 -0049fe3b -ffb2022a -ffcffd90 -006a00fd -0019000f -004b001b -fdf2ff68 +ff2effb2 +01d5fed8 +fd0f0135 +012bff1a +00e00061 +fe9dffb8 +016cfffc +fef6ff73 +00f101f8 +ffe8fec2 +ffab00e7 +ffc1fe2b +008a0139 +fff3ff41 +01060089 +fda3ffe0 // 0x00000140 -01c4fe02 -ff330121 -ff7d0033 -0090ff1a -feebffa7 -01980375 -feccfd52 -018600d4 -fe30ffab -01670050 -ff77fe8b -feea0247 -024efdfe -fe260076 -0229ff97 -fea400f8 +00fafeba +00b0010f +febbff3d +001fff95 +ff49004f +022102b7 +fe4afd98 +016b007a +fe3b0076 +01c9ff9f +ff05fea3 +feec0293 +031cfde5 +fd02ffcf +029c00ae +ff060083 // 0x00000150 -feccfff6 -021bff43 -fd0b0193 -01b4fd84 -007d02ad -0040fe2b -000200dc -fe56feb0 -01a00245 -ff9ffde0 -ff7d013f -ffd6feaf -01d20196 -fe3effbe -00a5ffbb -feec00a8 +fec6ff88 +014eff79 +fd8301f7 +01d9fdb3 +00d50199 +ff1ffec3 +00cc0152 +fea3fe48 +00f901dc +ffd9fedd +ff910059 +ffb4ff11 +01b2016f +feae0013 +009aff48 +fec4008f // 0x00000160 -017f0007 -00f2021d -fe46fded -016b00e4 -fda6004c -03750171 -fe77fe94 -ff14ff6f -011200ba -ff7800b7 -0033fd9f -ff900334 -0105fcf9 -ff9701b6 -fff4ff27 -0061fff2 +0303fff4 +ff2901fa +ff46fe76 +010a0003 +fd480092 +049a0181 +fd86fe4b +ffde0041 +005f002f +ff7700d5 +006ffd93 +ff3d02d3 +01defd61 +fed20186 +0081ffac +ffbdff79 // 0x00000170 -ff9d0139 -fe8a0049 -019efee9 -007bff1a -ff9e028e -ffa7fcbd -ffd302f0 -ffd6fdc5 -006601d2 -0068ff03 -ffad001f -ffde004a -0163ff49 -fe2100f4 -020e0099 -fce1fda6 +ffcb0174 +fed50008 +011afe98 +0156001f +ff080170 +ff7efe05 +005401d1 +ff16fdff +011f025d +008ffddd +fecd01b3 +0113ff37 +ffceff89 +ff3a0130 +0211ffc4 +fc27fe6b // 0x00000180 -011100ff -ffaafef9 -ffcb008c -00880041 -fe1e004c -03df005d -fe0cffea -ffcfff7e -feeaffe2 -009b0126 -0121fbe7 -ff7f05fa -ffb2fba6 -019e00d7 -fe3f01c1 -0041fe53 +00b000e8 +ff6cffc3 +002f0006 +006700a9 +fdae008e +0447ff38 +fdb10044 +00510064 +ff1eff07 +00360103 +0094fd1c +0006052e +fff8fafd +011a0143 +fe500282 +0108fd98 // 0x00000190 -004d00ff -0050ff6f -fe91000a -00a4ffc1 -0176ff82 -fdc100a9 -019e00e2 -fe93fe34 -01e80178 -ff5bffca -ffabff6f -ff050078 -013a0034 -001aff13 -006f00d7 -fe35feef +ffba0132 +ff92ffaf +ff71ff86 +0095ffcd +0182fffe +fda1fff2 +0179017c +fe7ffeda +024c000b +fee4ffd3 +ffd40084 +ff760044 +0154ff63 +ff36fff3 +005e00ca +ff30fe4a // 0x000001a0 -fd7b0008 -033bffae -fd51ffa5 -01630130 -fe2800b4 -04c5fd5a -fd000282 -ff6dfe01 -00f40242 -ff9cfdef -005cff82 -fec0031b -0101fdca -ffc3ffcb -00b20040 -ffa5ff56 +fe260064 +01d7ffec +fdecfe7e +0232019d +fddd01b2 +0395fc8b +fdf90234 +ffccfe4c +004b02aa +fffdfd6d +ffd60058 +fec001ff +016dfda9 +00970098 +ff1500f3 +0035fdc7 // 0x000001b0 -00450104 -ffd9ffd2 -ff55ffc1 -ffed00a2 -ffceff24 -ffb100fc -012cff0a -feb90085 -02a800d2 -fd5cffb9 -0146fe8c -fff400d3 -ffcd00d6 -ff9bfe47 -010a0208 -0001fef4 +00900178 +fffb0062 +fe70ff6e +00d8007b +ff47ff32 +ffd300bf +01d9ff48 +fe18018e +01e3ff7e +fe19ff69 +022aff40 +feb20189 +003bff87 +ff69fefa +015d01d5 +ffcbfedf // 0x000001c0 -fef10080 -01ce0054 -ffa7ffb8 -ff2100ee -fefcff94 -0345ff9e -fe0cffd6 -fe94009e -01a1ff9f -010a012f -fea9fdd2 -0042029f -00f6fe3f -fe8dfe9a -018c0126 -ffb0ffc3 +fe0b0048 +02a0ff70 +ffa800fa +fe5bff52 +008400d8 +01d0ffb3 +ff15fefe +fdda01c2 +015ffeb7 +018600fa +ff0afe54 +ffcb026a +01bffe7a +fd00ff4f +0241ff78 +003b013a // 0x000001d0 -fe51011c -01a40006 -fe27fea2 -01570100 -ff2cffe8 -0041ff1a -01900210 -fe38fcc8 -01c90281 -fd10febb -02cd0100 -fe66004b -00660001 -ffc9fefa -005400a0 -000cff1f +fd65ffc2 +02ea00d6 +fd24ff26 +01830030 +ff680034 +ffdaff6d +016500e4 +ff62fde4 +00950247 +fe58fe54 +015a0248 +fea3fe9c +012900e2 +ff4efe85 +00cd00ca +ffedffc0 // 0x000001e0 -fe29014e -0220fe40 -ff6d0124 -0057fd78 -fdff02de -0239fed3 -fefb004c -ff7afffb -01000097 -00150013 -fef8fe2a -ffab0239 -0299fe0a -fcce016d -027bff0e -ff220022 +ff7b0038 +0108ff9e +0002ffb4 +ffd6fe66 +ff370249 +01de007d +fe35feb3 +005d00b0 +004cff76 +0098019a +fdd1fd00 +00e60299 +01ddfdf7 +fe3d0196 +00a8ff72 +0095ff77 // 0x000001f0 -ff9d0040 -00f8ff04 -fed701de -ff5d002a -00edff4e -ff1d0055 -0149fe28 -002201a1 -001200c3 -007ffdf9 -ff500170 -0035ffa9 -ff430062 -fee8fed3 -02c50082 -ff46ffe6 +fe7d00ec +01d2feca +fdb60246 +0028fe22 +017100f9 +fee4ff75 +00bdffc9 +00090044 +00b00202 +ff56fd0e +0087017e +ff34feb7 +0127013b +fd71ff28 +036600aa +fe05ffdd // 0x00000200 -0011ff74 -00b30137 -fff9fed4 -ff1200a1 -fe17000f -048b011c -fd30fe9b -00110000 -000500c3 -003e0018 -00fefe26 -fe59043b -0141fb8f -ffba00d7 -ff4d0140 -0222feaf +000bfffa +011700d4 +0003ff74 +fe8200a0 +fed9ff9a +04780186 +fcd2fea6 +ffccffa9 +010a0002 +ff3f00b5 +00ddfeae +ff76040b +00c6fb78 +ff4401b9 +ff8effbb +0235fed0 // 0x00000210 -fd8501dc -0191ff6b -ff19ff3c -fed20087 -01fffeb7 -ff2b00f0 -0076019b -fea5fd7e -03a502c9 -fcdafdf2 -0144ffda -ff4bfff1 -008100a7 -ff3cff69 -00510172 -ffe8feb7 +fd870268 +01f1ff02 +fe7fff2e +ff22019a +019bfeb6 +ff9e0018 +00260140 +fef2fdd7 +03ac02ec +fc99fd89 +015100dc +ff9eff63 +ff8e00b8 +ffc6ff85 +016a0133 +fea5fe48 // 0x00000220 -0152ffa7 -0116ffe7 -fdddffc7 -028d007a -fc8eff8f -04850073 -fca501e1 -0166fda5 -fee60012 -004f01e8 -0093fd29 -fee802d9 -016dfde6 -ffc100d5 -003dff73 -feefff3d +015dff4e +0051ffdc +fe38ffe5 +0308012a +fc40fec7 +03c10115 +fce1012b +0171fdbb +0040ffc0 +ff570255 +fff6fe0e +ffdf021c +0122fd6e +ff58010d +ffb40042 +00a2feb8 // 0x00000230 -01140285 -ff6cfe25 -fee300af -008f010e -00f4feaf -ff79ffbb -005500d1 -fef6fe97 -02c0024a -fd4ffe84 -01790061 -fec4ff8b -00950064 -0039ffbd -01cd00db -fc75ff53 +0019013c +ff31ff30 +ff9e01f1 +00e80022 +ff58fda9 +ffdf00d1 +01a10103 +fde1fdbd +02ea029a +fd47fe1f +021c0128 +fe8dff20 +0036013e +ffe0fec5 +01b20094 +fd580000 // 0x00000240 -025c00de -fea8ffb5 -013bff8e -fe0d0025 -000e0077 -03890069 -fd30ffac -01cfffc0 -fd4fffeb -019c0136 -fefdfd85 -01a5024e -fe99fee6 -009bff70 -016d0163 -fe47ff55 +02b2006e +feaeffb3 +01af0008 +fdd0002f +ffaa0096 +0378003f +fd0aff4f +0219ffd1 +fdc4ffda +0173019b +fee8fdb1 +0150020e +fe81feeb +00e6ff14 +01680149 +fe8effef // 0x00000250 -001e0024 -017c0047 -fd35fee0 -01b301a3 -ff90fe2b -000b0081 -005a0200 -fecdfd4c -0337018f -fda0ffc6 -00b30031 -fed7ff36 -0069002c -00490116 -0229fe2d -fc29005b +00060008 +011c005d +fd63fed0 +019a0119 +ff96fe74 +00a0009b +ffe40213 +fea1fd9f +03440128 +fd63ff9d +012a0043 +ff1efeea +002700cb +0042013a +01befde1 +fc200061 // 0x00000260 -fedc00ce -011eff58 -ff39fff7 -01c6025e -fd87fd00 -02da0299 -fe2afe6e -00e00014 -fec1015e -005ffe0f -006300ee -005f010a -fee1fe63 -00b9ff7e -0168ffee -fed501ad +ff8affea +003afff9 +0055ff8a +007701d0 +fdf1fdf9 +030e0259 +fe54fe88 +00ccfff1 +fe840180 +0059fe0a +00b50131 +00fc002e +fd95fe62 +0194002e +00a2ff6d +ff5502d3 // 0x00000270 -ff20ff76 -00d2012a -0045fe6f -feee0044 -ffa9ffa8 -0188ffed -002200fc -fdb6fde0 -02e70312 -fde5fecb -020fff60 -fdd1008c -021bfff9 -fee1ffc8 -ffdc005c -0031fedf +ff5cfdf6 +ffcc01e5 +0149fec0 +feabffba +0011002f +015eff05 +ff8c018e +fe08fdd5 +03260334 +fda9fe08 +01a50029 +fe320050 +01a9008a +0028ff9c +ff06ff51 +00070027 // 0x00000280 -00b901e7 -00d3feb2 -fef0ffe5 -012101b9 -fd9aff37 -047700be -fc74fec5 -01ae00de -feecff32 -ff80008e -012dff4d -ff2900f9 -0062ff50 -0067ffa4 -fff3004a -005200c4 +ff4f01e8 +0127ffb8 +ff5bff10 +00720195 +fdffffc9 +048f0063 +fc89fed1 +00f400b1 +ff78ffc7 +0029002b +fffcfe9d +ff76027e +0181fe7d +fea3ff34 +00950168 +0139ffa4 // 0x00000290 -ff45003f -013dffce -fd42ff01 -01490077 -011eff6b -fe990054 -00ee0137 -fe44fe20 -04420224 -fc4cff2e -0165ffdd -ff5dfecf -0022012a -00ed0126 -003ffe22 -fdccff1e +fe09000a +01f9015c +fdb5fdee +00680095 +00f7ffc9 +fef10013 +011d00f7 +fe06fdd5 +046c02fb +fd13ff05 +ffd8ff65 +ffecffd0 +0105003d +ff69007a +00e9ffe0 +fee9fde6 // 0x000002a0 -ffd9ff08 -011effc5 -fe620006 -01c30206 -fe0aff73 -01f2ff49 -ff040085 -003f001a -ff38fece -015e0168 -ff5efd2a -fff1041c -ffcffd52 -ffcc005d -012fffbb -ff340122 +ff330075 +00cdff0c +feb3ffff +0255002f +fcdd023b +0268fdba +ffa200d2 +ffe6ffc9 +ffafff41 +fff30117 +00f4fe77 +fe750253 +0121fd98 +ff3d012c +00ddff34 +fec60189 // 0x000002b0 -ffc3ffc8 -015afeab -fd90022e -0223fe1c -ff40ffbd -fe940099 -0170010d -ff27ff50 -0180fffe -fea20060 -016cfff2 -ff6dfeaa -013b026a -fd86fd79 -008901bb -0042ffbc +0209fe89 +ff790034 +fdfd0191 +01b1fee9 +ff13fee5 +ff96008a +00e4ffb8 +ff4c023d +0121fe45 +ffc700b1 +00a40015 +ff11fea5 +fffb0294 +0075fd00 +fecd0136 +013c0009 // 0x000002c0 -fe4dfe8d -02dcfea2 -fd63028f -01c0fea6 -fe94ff9b -00dc0102 -011200a9 -ffb9ff0f -fe660004 -0178ff8e -ff1a004c -0020003b -ff0cff3e -017b01a4 -ff7afd26 -00a80302 +ff72fdd0 +0179ffae +fe4501e3 +0118ff77 +ff0aff75 +00fb0123 +00e6ff8c +ffa0ffe5 +fe2afefe +01a3011b +ff5cffaf +00b30088 +fe07fefe +0224014a +fe4ffd1b +01a6037a // 0x000002d0 -009dfea3 -fdc8ff34 -0199022b -fd9efe7a -03a40087 -fc6affd0 -01e2ff73 -ffbd00a1 -009c00bc -ff98ff7c -ff2eff9e -01a200b5 -fff8ff50 -ff23ffca -0076ffba -ffda01de +0028fe32 +fec3ffa6 +00fb027d +fe22fd4f +029e01dd +fc97fe4f +01c000ca +0014001b +016c00c0 +fef5ff31 +ff60fff1 +00db0036 +00410098 +ff06febc +013f0027 +fefe01aa // 0x000002e0 -007e0147 -fefffe5d -fff601ac -0045ff70 -ff92ff4c -0134016b -ff82ffa2 -006900e7 -fdfcfd5f -021a0295 -fe61fd65 -010d03e8 -00ccfd2b -fef30048 -01b0ff65 -fe500155 +01a10171 +ff29fe32 +ff1b019a +0032fefe +ffe50045 +01da0152 +fed7fe81 +000c016e +febbfe53 +01d001e7 +fe6dfd01 +00ec03c6 +008ffe2a +ff8dfffb +01befe7e +fda00220 // 0x000002f0 -ffcaff0d -0185ff5f -fdc20278 -0089fe84 -0190fed0 -fdf40229 -010cff94 -0109febf -ff640019 -00260103 -ff570117 -002dfc68 -0002036d -ff69fcd0 -00ca0385 -ffdefd81 +0021ff63 +0161fec4 +fe310260 +0044feb6 +0125ff11 +feba020a +00edfefb +0050ffb8 +ffdbffb5 +007a008f +ff1b0181 +ffcafc6e +ffff0364 +008bfce5 +ffca030a +ff48fdea // 0x00000300 -fed5001f -02bd00bd -fd3d00f4 -0179fe5f -fcde0399 -04e8fce3 -fdc0011a -fffeffe1 -0065fe7c -ffdf021d -ff61fd96 -00ea03f5 -0000fcc4 -fe6b0075 -02d2ffc7 -fe2700c3 +ff37ffc7 +02810083 +fe2100ea +0057fe62 +fe420288 +03e9fea2 +fd77ffcc +00580118 +000dfe07 +003b0231 +ffcafcb9 +011b0533 +ff01fb6e +ff990161 +0108ffc8 +ff39003e // 0x00000310 -004dfffd -0195ff7f -fd8f00d8 -fff1fef3 -01c8ffe7 -fe9e0067 -009effc4 -feceffc1 -01d901a0 -006bfef3 -fd93ffe2 -029cffc5 -fdd2001c -006b008d -00b8009f -ffa5fdd7 +000d00a1 +023fff6f +fcff0094 +0115fec6 +00120092 +ff55fec4 +00b50186 +fe30feca +028b0255 +008dfebd +fd3a0075 +0291fe1d +fea70144 +feb9ffd1 +025000ca +fe8ffed0 // 0x00000320 -02bf00eb -ff90ff24 -fed8fff8 -00f40010 -ff790169 -0095ff1d -ff5fff16 -011f01c7 -fe41fe2e -004201ca -00fafeab -fd93020a -0358fcd2 -fe7a0261 -00e9fe55 -00250086 +0270ff18 +ffa200c7 +004cff40 +feb4fffb +017701d4 +ff92fec1 +ff41ffec +012f0028 +fef90006 +ff7ffff5 +00fdfffc +fe690154 +02b2fe5a +fe2dffa5 +010c00fd +013cfecf // 0x00000330 -feab017b -005cfe5a -fe9401ca -0176fed2 -005bffe5 -ff210041 -01110036 -fef3ff95 -021500cc -ff3afecc -ff4a0223 -ff4ffc08 -01cc0340 -fec00045 -018ffe3f -fcd5ffe2 +fc860220 +02bafe29 +fd66022c +0134fe77 +005ffff4 +005000c1 +ff63ff1c +0021008c +01cd0016 +ff0d004b +ff3dff80 +ff9bfed6 +02040132 +fd690169 +037cfd9b +fbc800f1 // 0x00000340 -007bfe19 -ffc7037b -0093fdb5 -ff5a0029 -ff590087 -027e00e8 -fe3eff26 -0052ffbd -004bffac -ff1302ad -0154fca4 -fe400272 -01b6fcc1 -00a00290 -fdc2fed6 -023801c9 +00cdfea4 +00140286 +fffdfe6d +0060007e +fedd0009 +01b5017d +fedcfead +ffaaff3b +0133005a +ff6b01e1 +00a6fd7c +fe970312 +012dfbd7 +003c02f5 +feb0fe05 +019001aa // 0x00000350 -fe55fe33 -0153015f -fe5dfef1 -007600db -012ffe49 -fea60136 -015e00d8 -feacfd3f -00e90334 -fee3fd4d -01cc01ee -fefcff26 -fede023b -0224fcae -ff8200ac -feb600bf +ff29ff2a +01900106 +fd4bff3f +00e40104 +00adfd4d +feb90203 +025c0037 +fe08fd3f +00eb0420 +ff25fca3 +00fe0228 +fffdff2c +fe55017b +0212fdab +001c0087 +fde6003c // 0x00000360 -01d201ce -ff8cff8a -000b0004 -ff6201d7 -ffb5febb -030c008e -fbecffcc -01d5ff28 -0098ff17 -ffc202de -ffa5fcdd -00710194 -ff21ffd2 -01b70013 -fd460060 -01edff46 +01870215 +ffc6ff7c +ffb00060 +ffea0170 +ff27fec4 +0321008f +fc32ffe5 +01d2fef8 +0078ff69 +ffc6026c +ff8ffd6c +00a4011d +fefefff1 +01a1000e +fd9d00b0 +0162fecb // 0x00000370 -fe6600f6 -025cfed0 -fe59ffa2 -ff6801df -00d9fd63 -ff980236 -01140026 -ff13ff9a -ffcc0035 -0002ffa4 -01ab0035 -fe1dff46 -012d0180 -fea9feb5 -02de0206 -fcd3fc70 +fef50155 +01ccfe8a +fedcffc4 +ff2e01f6 +0111fd20 +ff0902d9 +01b2ff63 +fea40016 +fff0ffad +002c001e +01810004 +fe88ff9d +006600f3 +ff21ff42 +02a301bc +fd34fc2f // 0x00000380 -013b0085 -ffae001b -ff8dff4e -016d0126 -fd67ff8a -03c7006f -fe9d008f -fe64fea1 -00900131 -0056ff45 -ff71fe7e -023f0519 -fda6fa76 -01f201f8 -feb60026 -00300028 +01c5ff69 +fde5000a +015b00cd +00b30037 +fd66ff9d +0477ffd8 +fd300155 +ff35ff30 +00b0ff97 +00a70080 +feb7fd6e +01fd060d +fee3fad6 +00f800f4 +ff19004d +000e0001 // 0x00000390 -0123ff1d -fef200a9 -feef0056 -010dff50 -ffe3ffb4 -fffb00df -ff630049 -00e2ff45 -016a001d -fdce0053 -0147fe66 -fde70251 -02b0fe5c -fe080056 -01de018a -fdaafe0a +005d0083 +0093ff4a +fde9fff5 +0195008f +fef2feb7 +00850206 +005affbb +fefffe3a +02d60175 +fd19ff8c +012dffa4 +ff630089 +0115fed6 +fe4c01c6 +01fdffe7 +fddeff31 // 0x000003a0 -00a6fec6 -005d0209 -feadfe45 -00f801bf -feb6012b -0279fd41 -feaa01aa -ff69feb6 -01570175 -fe7efe1f -017800bb -fe170248 -01c9fd55 -ff2effab -00c70242 -fff7fd39 +013dfe98 +ff2e01dc +ffcbfe32 +007d01f1 +feb8006c +0298fe70 +ff0e00d0 +fe8dffbf +01ed0074 +fe36feca +01520043 +fea90209 +0115fd8f +0040003e +ffb30180 +00c3fdf3 // 0x000003b0 -ffb40276 -00a3ff33 -fd7b002f -0258ffb5 -fed8ff0d -ffe50119 -0092002c -ffe9ffd8 -0177ff3f -ff0e011d -ff08ff49 -00a1018c -0091fd1b -fee00283 -0115fee8 -fee7ffe1 +fef3026a +013cfe90 +fced0082 +0313ff65 +fdfcff6e +00de00b8 +001000c8 +ff8dff8d +023fff9e +fe540026 +ff4a007d +009b0021 +00ebfe0b +fe660246 +018bfefc +fe7f0029 // 0x000003c0 -000700e2 -ffe1fe96 -000a0195 -0071ffde -ff2dffb1 -0249006d -fea1fff2 -fee2ff88 -01d70006 -ffcb00a8 -ff05fd6c -000e0371 -ffeefe16 -019fffaf -fdf300d2 -0174fefe +0108004c +fec9ff46 +00af00da +ffffffc8 +ff7c0125 +0183ff08 +ffceffec +fe37ffc1 +01c10051 +002f0079 +fed4fdbf +0078030b +feb7fdcc +02bf00b8 +fd4fffbe +01f7ff8a // 0x000003d0 -ffdd012a -00d7feee -fdd6009d -000d0084 -0003febd -fee700e7 -0413fff8 -fcd0feca -00e901b6 -ff39ff7c -013fffc2 -ffe400cd -ff4600ac -001dfddd -008d00fc -ff62ff78 +006c00c4 +feefffb0 +ff69ffe6 +ffeb00c0 +ffaaff39 +fe89ffca +047c00cc +fd45fec7 +000f01eb +0009fdf9 +00940191 +003e0035 +fef70062 +0105fe9e +ff2fffb2 +ffcd0086 // 0x000003e0 -fe05ff1e -03b2ff97 -fb7c00f4 -037cfeae -ffb900ae -ffc2ffa7 -00190204 -ff4bfe43 -fffd0053 -00a3ffe8 -fe760006 -010b00c7 -018ffe86 -ff1300cd -0054ff36 -fec400e8 +fdcaff82 +03acff4a +fb8a00fb +03c0ff52 +ff6e0083 +ff83ffee +007d0136 +ffb9fed9 +ff22fff0 +0202ff80 +fd52011f +00e9fff4 +01adfe90 +ff1100f3 +0052ff77 +feec0057 // 0x000003f0 -017bfeb4 -fe4600a5 -00de01d6 -ff9efe12 -ffc5ffbe -004e013d -00fbff16 -ff23001b -ff67ffbf -00b9018c -0090feac -ffc70075 -ffd7ff9a -fec9ff5f -01d00094 -ff42012e +0202ffbe +fd9e0054 +00dc0157 +0018fe12 +ff7effd1 +001700ca +01b3ffa4 +fe35002f +ff82fff8 +009000fa +015cff03 +ff0700d4 +00c7fe64 +feb90105 +00faff9b +ffbe00dd // 0x00000400 -00850156 -0021fdec -01460171 -fde400f1 -0031fe5d -01a60238 -fe38fdc6 -00fe010a -fefcfece -019601dc -fe7efd0f -fffa04cf -0080fd3c -ff8dfed6 -018d0272 -ff88fd88 +004e00d5 +002bfe5c +01000073 +feab00c7 +000bff04 +01630228 +fe4efe26 +00cc012b +fea5fef5 +01d8007f +ff11fdf8 +ffc00411 +0062fdc5 +ffe5feea +00d002f4 +ff65fd30 // 0x00000410 -ff4501d0 -fe8f0042 -029eff5f -ffac008b -fe6bff49 -00bc002e -00d6ffc6 -fe14ff7e -03da02dc -fcc6fdce -01c2ffe9 -ff0e0015 -00f400a6 -fefdfdec -01210232 -fe46fe40 +00080181 +fe0f00b4 +0318fea7 +ff7d00af +feb9ff88 +ffcf0044 +019cff72 +fdbe0051 +03e90289 +fcbefd75 +0207000a +fee0ffe9 +009e002b +0009fe9e +fffe0258 +fec9fe9c // 0x00000420 -0106024a -ff6b0039 -0068fed2 -0049006e -fe150071 -02e5ffc2 -feb2fe82 -005a02e8 -feb2fdc8 -00a40092 -0063feae -006102ba -ff48fde6 -ff9afff0 -00a70182 -004fff83 +00010179 +00d3005f +0008fed1 +ffb2011c +feb10055 +02d3ff93 +fdb4feb5 +010101a9 +fec6fec2 +014000e1 +0019fdd2 +fffa0371 +ff62fea4 +feeffe72 +017d0204 +0065ff55 // 0x00000430 -ff42ffdc -0015ffc9 -ffa0fffe -011d0054 -fdc30069 -02c5fef0 -ff2e00c8 -fec6fea6 -026e0322 -fdd0fda8 -01810132 -fec10014 -00a0fe60 -009000f2 -00e5ff84 -fdc1fe5f +fec5ffe9 +00b3fffd +ffa0003b +00000084 +ff0dff7f +01f3ff1d +ff12019b +ff8ffdf1 +025002f8 +fd32fe67 +01830032 +ff68011b +00dcfe14 +ff93006a +01210024 +fe37fe85 // 0x00000440 -01bafea7 -fea8028a -00ecfdf1 -ff0b0185 -ff24fdf4 -0296026a -fed8ff87 -0061ffbd -ff720072 -ff5dff2b -0163ff86 -fe5b004f -00fd009a -00adfda6 -fe4d03a2 -01c7fe77 +0296feb5 +feb101a2 +00c6fe54 +ff290228 +ff4cfdd0 +022f028e +fec0fec9 +fffd0008 +00710093 +ff83fedd +00b1ffb8 +fe8d00f6 +00ac0019 +00e5fd95 +fe580310 +01b4ff03 // 0x00000450 -fde8003d -01e2ffdc -fee20027 -0069003f -ffd6fed0 -ffc8011a -00180081 -ffbbfd97 -01c8034a -ff81ff13 -ff1bff42 -007dffb5 -ffbd0042 -ff35009a -03470016 -fcc9ff25 +fe4e00a3 +0201ff58 +fde20066 +00e50046 +ffcafe7e +003b0120 +fff00087 +ff5dfddc +021f03cd +ff5bfdf9 +fea7ff82 +0111ffd8 +fffa0069 +ff09009d +03280004 +fbfeff4d // 0x00000460 -014601d3 -febaff5d -017d00aa -fe6000dc -0096fdc2 -00740214 -006dff1e -ff53fff7 -ff4d0082 -013effa1 -fe29ffe7 -02b200f3 -fdc3fe2b -017aff33 -ff4202a7 -004cff02 +ffd602af +ff21fed6 +011a007b +000800e8 +ff12fe1f +014c023b +ff66fe7a +0059008f +fe8d001b +01e40017 +fd74fec9 +0333021b +fe01fded +00e8ff94 +ff65013b +00280025 // 0x00000470 -ffce0017 -ff4e0027 -ff85011a -0220fe62 -fdd6ff72 -02700160 -fe170016 -ffdbfedf -01c70094 -fef601e7 -0019fca1 -ffca028f -00f9ff51 -fec6ffb5 -01b60109 -fe1afd20 +00c00035 +fdef0008 +0086006b +014cfee6 +fee0ffaf +012600db +ff740066 +ff15fe8b +0251015d +fdcc014f +00d0fd11 +001d014f +00e10071 +fe6eff6a +01a5017d +ff2efc51 // 0x00000480 -007801e9 -0086ff40 -ffbeff5c -ffd50279 -ff49fe54 -036300b5 -fd64ff56 -004100d0 -ffe6fee9 -ffc10056 -0098ff8a -ff7d01ab -001dfe0d -000900b8 -003bfff6 -001b004d +004d01dc +010cff80 +ff31ff98 +00310243 +feb3fe73 +03a1004c +fd13ff92 +00ab0055 +0008ff6f +ffb50010 +00840037 +ff490133 +0069fe52 +ffcd0020 +00770028 +ff78002f // 0x00000490 -ff960065 -01c2ff9c -fce2fff2 -01490037 -0025ff80 -ffebff65 -00360222 -fe3dfd12 -050003c1 -fb8bfdce -00fc00c0 -00a1ff19 -ff310037 -018d0086 -0067002a -fd93fdc5 +00230096 +017effa8 +fd910018 +00d10059 +005dff2d +ff6fff8c +0053018c +fdfffd91 +0540036f +fbcdfe70 +013e0051 +00b9ff89 +fe7fffd6 +018700b8 +000fffaa +fe4afdfb // 0x000004a0 -01fd02a1 -ff40ff2d -00d0ffc6 -ff04ffc6 -fee20245 -0294fde9 -fe37ff69 -00960156 -ff9eff98 -ffd6ffdb -00daff01 -ff300373 -00b5fcaf -ff520074 -0188006e -fefeffda +01c7028d +ff6cff28 +012fffd7 +feabffb9 +fed4023e +02aafe08 +fe40ff6f +00a80134 +ff80ff7e +ffa20022 +011afecd +ff65036f +0085fccf +ff180072 +01970061 +ff47ffee // 0x000004b0 -ff3fff8f -00e8010b -fde0ff8a -02c800ca -fdcaff2b -0186ff8f -ffaf00a1 -fed2ff88 -025e01dc -fe96fe2d -00b200ab -00040079 -fefffeb5 -01100054 -ff0e0164 -ff3afcfc +ff09ff5b +00e80122 +fde7ffa7 +02c100b1 +fde2ff28 +01a0ff9c +ff5c00c3 +fee6ff4e +028001e2 +fe9afe54 +00ac008d +ffeb005f +ff05fefb +011e002a +ff31016d +ff0ffd08 // 0x000004c0 -ff62027c -0190fddc -fe3b015c -006b0058 -ff58fe24 -00a5019e -00ed0119 -ff08fd8c -00ca0252 -fff8fe99 -fed4ffbd -0025003f -002affc1 -0098005f -ff00ff74 -016401cf +008501b2 +004bfdef +fed2026c +0124007e +fee9fdf3 +013e010e +fec500c5 +00e3fe42 +ffcb0194 +01a2ffce +fd74fea8 +00770180 +0054fee7 +fffd0015 +ff9aff6e +008a0177 // 0x000004d0 -0094fe6c -fdf600b2 -005bff60 -00330132 -0194fe30 -fd490182 -00fbff4f -ffdeffaa -01d4005e -fec601ad -ffe6fd3b -00d50243 -fec6ff9b -01c6fdfd -fdf80238 -00eefd8f +01d10094 +fd81fec7 +00d6008e +ff34fef2 +0151006d +fde0004e +01810087 +ffdffedc +013b0026 +fe620248 +00ecfc42 +ffb5034c +0046fe81 +ffe5ff93 +000801aa +ff40fd4f // 0x000004e0 -006f0178 -fe1afeea -02410061 -fdfd008f -ffd0ffda -02a1ff85 -fca00051 -0298013b -ff77fddb -feaf020d -0189fd55 -ffff034d -ffd8fdca -ff52ff4b -015000db -fedd00c3 +0070011d +fd42ff9f +025b003a +fea1000b +ff600081 +02b1ffde +fd4fff92 +0202016a +ff49fe24 +ff7f0122 +0137fd6e +ff69043c +003dfd51 +ff0dff2b +00c70180 +ff91002e // 0x000004f0 -001fffac -ff9effec -ffe1ff2f -ffef00e5 -0058ff2c -009dffdf -ff640263 -0108fe99 -ff77ffdd -ff0d003d -0065ffb7 -0139ff2f -fd74008c -025cfff9 -feec024d -00bffd01 +00b0ff53 +ff3600cb +0013ff38 +00210035 +ff6aff79 +007bffd6 +0035018a +00baff0c +ff3700c0 +ffbdffc8 +ffe3ffe8 +00cdffac +fe39ff99 +027bff9d +fe7d0314 +0123fcb4 // 0x00000500 -00830251 -fff6fea9 -01000119 -ffc3ff46 -fd0d01c8 -0566fd73 -fd20019f -0029ff04 -003400e2 -fead008b -021bfd92 -fe6a040b -015dfc27 -fef90023 -01a50118 -ff160035 +fffa0254 +001afee6 +013100ba +ffa9ff72 +fd8101e3 +04bffd6f +fd0201ee +0068fe8e +0015008d +ff1100bb +025efd8d +fe1404d9 +016afc22 +fe5dff93 +017d010d +ffa6ffd1 // 0x00000510 -ff910017 -001eff1d -ffc200fb -ffd7ff6a -0101ff0c -fea40191 -0120fea1 -fe090072 -02a001ea -fed3fecf -ffb7fe2e -01880211 -fdbdff11 -01c100a1 -ff970044 -feb4fdf1 +ffbc0012 +00b4ffbc +ff6100f6 +ff2bffd4 +0111fee5 +fe8500e1 +0154fe9e +feac0046 +02450275 +ff0dff43 +ff78fdc7 +0110020d +fe04feee +01cb0055 +ffd500d3 +fed6fda7 // 0x00000520 -02e1ffe9 -fe9dffcf -0095ffe3 -ff1dff8e -ffdc0132 -0213008b -fec4005d -ff9cfd72 -01990168 -fe4a0167 -0161fd42 -fd260207 -02cbfe9c -ff3cfff1 -ffc70110 -0113ff1b +025a00bf +febaff53 +0096002a +000fff07 +ff0e01ea +027e0095 +fd770039 +011bfdc5 +0077004e +fef60241 +0103fc2c +fe1d0367 +0262fe08 +ff1800c9 +fef2ffcc +01810028 // 0x00000530 -fee5016b -01dfff27 -fcdbffd3 -020900d8 -feb8fde6 -00bd00d3 -00100117 -ffa8ffaa -003d0008 -00b2008b -ffa7fe00 -fff80157 -ffbd0050 -ffecff79 -01a5fffc -fc850015 +ff4a003f +0182ffff +fda2feee +0139019f +ff9efe6c +ffa20067 +00a700e9 +fefbff27 +012500d0 +ffd60001 +00ddfe84 +ff0b0033 +0042021e +ff70fe3f +01b800f2 +fcd9fed4 // 0x00000540 -02a1004d -fe0affd1 -0099005d -00e3ffba -fe7fffe0 -01d40117 -fe51fee0 -01d20025 -fdd10017 -01c20091 -febdff2b -0078011e -0082fdfc -ff9a0068 -013f0167 -fe73ffc5 -// 0x00000550 -0057fec5 -014600c1 -fcad0087 -0219fe98 -ff47005e -ffaa00a7 -02df00aa -fd62fef7 -008b0103 -0052ff11 -00650065 -ff4cfe74 -002c027a -ff24ff0e -0241ff8b -fd190003 -// 0x00000560 -0245013c -ff15007d -0062ff2d -0047ff51 -fddf01e1 -03a20045 -fd8fff2a -feebff95 -02de00f3 -fe64ff95 -0172ff4e -fe0e00a1 -00f0fe6c -00af0155 -fe6c0113 -01b3ff08 -// 0x00000570 -febd0006 -011300d9 -fe7cfdad -01ef0267 -fd9bfd6d -016e025b -00bdfef8 -fe9d00bb -0090fff7 -0044fe4d -fff401cc -ff80ff93 -00fe0032 -fee1ffd3 -01ac002f -fd11fe4c -// 0x00000580 -02f0ff4a -fd6c0080 -0171ffaa -ffd80018 -fef50055 -0361fed7 -fe080211 -ff02fe1e -006c01d8 -0080fefa -0048ff14 -ffc00371 -ffb7fc44 -027a00f6 -fc26fff7 -0200ff18 -// 0x00000590 -00140180 -002cffe6 -fe4ffeda -019000ae -ff91ffcf -ff470019 -017601ff -feb4fc62 -00580276 -ff84ffac -0174fea8 -fe6c014d -013bfeb8 -ff5a0106 -01700061 -fcce000c -// 0x000005a0 -00300031 -010f0051 -fe6afec9 -01dc00cf -fd040057 -03ddfffa -fe390184 -ffb8fc5e -00f7030c -0036ff3b -fe34fed8 -00b90154 -ff7afe23 -0196022c -ffdafe4d -fe6b0197 -// 0x000005b0 -030efeab -fdb1004f -ff8200f9 -ffa0ff5f -00f0fef7 -002100aa -008b00b8 -feb8feb0 -01030180 -ff760019 -00a4fdfa -ff8b026e -001aff67 -0030febc -006e0053 -fea5003b -// 0x000005c0 -00e5ff14 -001bfff7 -008a0015 -ff41ffeb -ff700011 -01e900d7 -fec4005c -ffb1fdf4 -00db00f1 -00ca007c -fe81feb9 -ffcd00da -009dfff4 -ffdfff51 -0028011e -fff1fee3 -// 0x000005d0 -008d0148 -0173fdf7 -fb9401f1 -0335ffbb -fd96fed9 -0193fff9 -ffe6017c -ff8bfeee -0157010b -fe2cff9e -02ddff91 -fd4d0120 -00c9feca -0039008f -0062fe5a -fe6b0243 -// 0x000005e0 -fd830002 -03ea0056 -fd44001a -0187ffdb -fe6eff06 -002300ac -012800da -ff1dff12 -006600e4 -ffc3ff53 -0026ff9b -fe8f011d -0209fe83 -fe960019 -01ce0078 -fefc0202 -// 0x000005f0 -0093fd70 -fe7a0010 -ff580140 -01850019 -0022fed6 -feb10186 -00eafe0e -0191023a -fdd0ff7a -0195ff8b -ff6a001f -0065feff -000301d1 -feaafdf9 -010c01ac -0086fefa -// 0x00000600 -002700a4 -0039ff63 -01020041 -fed60071 -fe0cfef8 -04a80230 -fd18fe36 -ff51003d -01590022 -fef1ffd2 -012bff00 -ffc1049f -001efb49 -ff7000ef -0082000d -0122ffec -// 0x00000610 -fdcd0040 -013b00cf -febefec3 -011a0151 -ff6effd4 -004cfe68 -00760182 -fe3dfe8b -0407026a -fc3ffdbc -01850184 -000bff13 -ff9c00b3 -ffd0feb9 -006800db -ff4cff78 -// 0x00000620 -011600f2 -00a4004f -fec5fe95 -01ac0301 -fca9fe4d -04a0ff58 -fca400f0 -014fff8c -ffdcff50 -fee00059 -020f000d -ff310188 -ff23fe33 -0099001c -ffb00036 -00df0017 -// 0x00000630 -fe9200b0 -01bafe6d -fe4f0185 -00480075 -008bfe5d -ff52004e -0120009e -fe23fe7c -0338035e -fd56fe1b -013500b1 -ff5ffe7e -0015015b -0081ff7e -012cff7c -fd6bff55 -// 0x00000640 -00740231 -ffd1ffeb -00cffed8 -fedbffa5 -007a007a -015a00c1 -fdb8ff1d -01f901bd -fe94fe35 -0050020e -ff56fd7f -015c0193 -0000fe26 -ff0700a1 -018101d5 -fee6fe14 -// 0x00000650 -ff1aff9d -014f01cd -febbff6a -00cf017b -fea4fd92 -02b0011b -ff120053 -fe3bfde1 -02c202c5 -fe70fe52 -005c021f -ffd2fd55 -0036023e -ff8ffdd3 -01d10233 -fdfefd4e -// 0x00000660 -007affa0 -00baffa0 -ff4300ef -01b50145 -fca4fdff -04890269 -fe09fdb9 -ffdc0133 -ff40ff12 -003000cc -0002ff43 -015d0059 -fe79ffed -007dff48 -00fdfff7 -ff480193 -// 0x00000670 -ff78ff10 -0050015e -ff4dfec7 -00ddff37 -ff0a0181 -0161fe13 -ffb101a5 -fe72fe01 -02660452 -fe0efd06 -018aff87 -fe6d01b3 -0219000f -fe91fdd4 -01f501db -fd2eff09 -// 0x00000680 -0064005c -00b201e3 -ff23fe28 -00de0148 -fd6c0047 -04f6ff85 -fcf3fef3 -003a01d4 -0024fe17 -ffd5017f -ffaaff6d -00c3007c -007dfeab -fea0005b -01260019 -ff85ff9d -// 0x00000690 -003a0192 -00cc0069 -fcd1fddc -02d4ff8c -ff720217 -febefe75 -02110093 -fceefff4 -03e6010f -fda5ff35 -008600ab -0057fe50 -ff35013b -0124008b -ffbaff5d -fed7feab -// 0x000006a0 -01010313 -ff45fd18 -00340173 -007d0148 -fec7fff8 -0118feb5 -00bbffe6 -ff1900a2 -ff04ff44 -017000b0 -fee2feb3 -00e30468 -ffd9fade -fff301e9 -0092ff14 -ff9000e9 -// 0x000006b0 -00d30039 -fea7ff84 -ffb6013d -011ffe5c -ff75ffde -ffa6003d -003f0090 -ffdbffa0 -00ac00b0 -000cffe4 -0048ff65 -ff490060 -ffe7012c -0137fcd5 -fe0002de -0044fd39 -// 0x000006c0 -ffb4fef6 -0179ffdc -ff2400bd -ffd5fed5 -00870338 -0057fce2 -ffa00102 -ffd6feda -ffaa01d4 -00e4fec3 -ff6100e3 -fed00091 -0276fe0c -fde100f8 -01790002 -ffa3ff3d -// 0x000006d0 -ff520100 -0141ffbe -fed601d1 -00a7fdbf -ff31009e -ffc90050 -0140fde4 -ff90031e -005cfeee -0012ffdb -002dff43 -ff8401cf -ffe6febe -ffc7000e -027ffeac -fd2f01c7 -// 0x000006e0 -ff210057 -00c30114 -fe8bfed7 -016d02b4 -fef2fd6b -01da0138 -ff45ffa1 -ff07ffc2 -0067006e -0068ff4c -fefbff30 -01d902e8 -fdd1fd1f -02b500c7 -fdebff0a -00a50233 -// 0x000006f0 -ffb5ffc1 -ffc9fde2 -fff90287 -ff8dfef4 -0146fe4d -feb800ee -00f9022f -fecdfd4e -01b301de -fe6800c6 -0069feba -017dff7c -fef7009d -0075ff3b -fe6f0236 -01affd51 -// 0x00000700 -ff810086 -0186ffed -fed3fff2 -00dbff3e -fd5e00aa -05cc00d9 -fbb7ff5a -00aa0058 -ff8aff1a -ffdb0116 -007cfddd -fff8050f -00dcfafb -ffe10197 -003effbe -ffd8ffcb -// 0x00000710 -ff4700c2 -0066ffab -ff4d0022 -00a100a0 -ffc4fe72 -ffe60127 -00a50038 -fe40fd3c -035e03ba -fee1fede -fee4ff7f -fff8ff2b -00aa014d -ff9dff5d -008effb0 -fefa0019 -// 0x00000720 -02fd013e -feb2fef3 -ff71fe7c -017f01e2 -fe06ff42 -023001b9 -fcaffef9 -0447ff8e -fcb30002 -027c0215 -fdfffca1 -ff6002f5 -01cdfd96 -ff80011c -003f00b4 -0068ff2a -// 0x00000730 -ffc50090 -ffcaffbb -ff3900b2 -010dff58 -ff6cfed8 -001800e1 -003f013d -fec3fe34 -030f01a0 -fe20fff9 -008ffe4d -ffb4ffe1 -007d0228 -fee8fe06 -017b0002 -fd06003c -// 0x00000740 -0071ff71 -00a70120 -ff6cfecc -013000b1 -fd5aff88 -03310094 -fdaf0056 -00a1ff2d -00ba0029 -ff7701f7 -0060fc06 -fde204e6 -027cfc76 -00b00001 -fec900c2 -011c0003 -// 0x00000750 -fe1b004d -013dffa4 -fe4c0066 -0150ffcf -ff2aff64 -00e70082 -01a70028 -fd51fecd -015e01e9 -fe5dfe95 -029400b8 -fe5eff06 -00940236 -fe50fce9 -028d0168 -fdd20047 -// 0x00000760 -01dcffff -fffd0029 -ff91ff04 -003e028e -fdcafeb6 -03c800e1 -fd7cff0c -012c0010 -ff1effa8 -010f0162 -fffbfe55 -ff4d0236 -ffa7fe1c -00c7ffc7 -fe86012c -01e3ff0d -// 0x00000770 -ff50011f -004ffeab -feb100bc -01e000f6 -ff66fe2e -ff1e01af -00aa0020 -0024fdea -ff8602d6 -0025fcb2 -015f01af -fe05ff62 -00e901d4 -00b3fe21 -00c801e4 -fcddfe0d -// 0x00000780 -01ca019f -feb9fec9 -0076005d -008bff74 -fe6c011e -0489fee3 -fbf2008c -00fe0010 -fff2fff1 -ffcc0027 -ff5bff0d -02af03ae -fe2afae6 -ffe2026d -008aff53 -0000000a -// 0x00000790 -001cff03 -004b01fb -fdb2febf -021300bc -fefeff3a -00b70027 -ffc601d6 -fe74fda2 -03c8013d -fcc0ffb5 -0029ffa7 -0137fff2 -ffd40042 -fff6ff89 -00aa019b -fdc2fe64 -// 0x000007a0 -fd200007 -03460041 -fde800c5 -0036ff2d -ffce0203 -018efddb -ffc100a5 +021b0076 +fea500c2 +008cffb1 +0036ff92 +ff11000e +01df00ff +fe34fedc +0220ffa8 +fcf800a5 +021c0127 +fefdfe4f +004d0160 +00e5fe29 ff51ffd9 -ffb80111 -0087fea1 -0001ff52 -fdf702ae -02e4fd48 -fe6c00c2 -0100ffd1 -ffca00dd +01130215 +feb4ff70 +// 0x00000550 +ffeffe72 +018d0124 +fca60085 +020afeea +002d003c +febd0017 +025c0124 +fe36fe92 +006e00ff +003eff8b +00850013 +feffff10 +009d0251 +febffe59 +0259ffd3 +fd52ffba +// 0x00000560 +0165022c +ff6a00e9 +ff90fedf +00e5ff97 +fe8700fb +03180040 +fec2feec +fda7fff6 +02f20151 +fdebff8d +014bff6c +fed000db +00a7fd85 +01f40226 +fd4f0024 +0219ffa4 +// 0x00000570 +fe51ffc2 +00ec00ef +fe78fe33 +02110163 +fd87feff +01be00be +0096ffc2 +ff110062 +0040ffdd +fff3ff1b +009d0152 +fe2a0017 +0243ff7d +fe5aff6c +020900a6 +fd67fda8 +// 0x00000580 +02c9fed0 +fe750066 +014fffd2 +ff35ffb8 +ff3a009f +0399ffab +fdbe0167 +ff21fd66 +0040024a +005cff8e +00d9fe94 +003b0362 +fe7efca1 +02650096 +fcfb0063 +01d9fefa +// 0x00000590 +ffd700e8 +004f0012 +fe41ffbc +01650044 +001aff51 +ff210059 +00b0021f +ff45fc42 +00f402e2 +feb4ff2e +017bfe2e +fe9b021a +0152fef3 +ff6d006a +018b002f +fc2100de +// 0x000005a0 +ffcdff08 +017a0132 +fe31ff29 +01990109 +fd6cff78 +03b7ff68 +fde9032a +00a0fc3d +ffa201e7 +00c5ff34 +febfff1e +00cb025d +ff33fdda +009900ef +0027ff2c +ffe70185 +// 0x000005b0 +023ffe6a +fd0200b4 +ffff0081 +ffcbffd5 +01baff10 +fe590022 +00a10140 +0018fe0d +011a014f +fe930142 +0079fda8 +ff5d022d +0177fed6 +ff63fed3 +ffdf01ca +ff65ff71 +// 0x000005c0 +0172fef0 +001b004f +003ffff5 +ffdcffe3 +ff0500a2 +0193007a +fef5000e +ffd4fe23 +00b70105 +00ec0013 +fed6ff35 +ff5800eb +0089ffa6 +003eff62 +fff9016a +ff92fe67 +// 0x000005d0 +01380164 +0109fe47 +fb81019b +039cffa1 +fd89ff42 +01350004 +00290118 +ff76ff5f +010700c3 +fe64ff4f +033effcb +fd30017d +0089fe6a +009e00e8 +ffcdfe70 +fe4c01cb +// 0x000005e0 +fe68ffe1 +03710013 +fdaf0024 +0103ff91 +fedb0028 +006eff6c +ff590164 +00f5ffb3 +ffe4fef3 +ff3c00f2 +01c1ff63 +fd6900ed +01faff2c +fe53ff53 +01fa00c4 +ff4f00d6 +// 0x000005f0 +fff8fe81 +00270065 +fe010076 +010f0193 +011dfddc +fda200f4 +0199fe82 +01e301fd +fe0cffcf +00ccff46 +ff6b0127 +0115fde3 +fe9601a4 +ffd5ff25 +0160005a +ff71ffde +// 0x00000600 +febd0091 +014bffb2 +ff68ff70 +008c0046 +fd1dffab +05ce0151 +fbf7ff6e +0051ff99 +00300117 +fefbfe0d +01a60056 +ffd40348 +004ffcae +fef8ffde +01860153 +ff70ff0b +// 0x00000610 +feed00a7 +006b0034 +001cfef8 +ff5c01b6 +011dff3f +ff30feff +011d00ee +fd83ff7f +04ea00e9 +fb9fff89 +01760032 +0040ffdc +ff53ff60 +009a005e +ff96ff91 +00700055 +// 0x00000620 +00f5017f +012400a3 +fd71fea6 +02ba0152 +fcccffed +0465fecc +fc5e01ce +025efe18 +fe230033 +ffb500f3 +02befee8 +fd9201b0 +00dffe0c +ff980078 +007e0144 +ffbdfe65 +// 0x00000630 +ffab0107 +00ceff7d +fe790100 +0068ff92 +0158fea5 +fe37012a +014a0048 +ff60fe78 +0161028f +fe69000d +00fcfe86 +fedcfff4 +00d90012 +00c40042 +0056003a +fdcdfe13 +// 0x00000640 +005301d0 +001e00cb +00e8feea +febcffbd +00a10032 +010b0036 +fd73ff2f +02bc01bd +fe45fe3e +0030024c +ff21fd83 +011401eb +0074fe2f +ff4bffe8 +01660247 +ff0bfe00 +// 0x00000650 +fee9ff90 +017001d7 +fea4ff02 +0044016b +ff17fe34 +0293010e +feff0077 +fe66fd9d +028f02b6 +feb6fe9a +010301a5 +ff54fd89 +0014023f +ff23fdbc +01b80267 +fe5bfd0a +// 0x00000660 +fed8fe97 +01440011 +fe8d00d5 +0269011b +fce5fe92 +04110101 +fe15ffa3 +ff6bff85 +000100f3 +0011fe48 +ffe40147 +0128ff30 +feb8014f +006bfe8b +0111ff3a +fe810226 +// 0x00000670 +00c0fe73 +ff4602ef +00effd3f +fea30085 +00490072 +0031fef3 +016d0095 +fdbbfe5f +02530437 +fe5dfdd8 +009cff61 +ffe00174 +000eff21 +0093fed1 +0031016a +ff6d0002 +// 0x00000680 +ffed00ca +00940125 +ffc1fe17 +0069018a +fe340024 +0481ffeb +fce2ff3e +ffa4013b +00bafdb6 +fff6022c +ffa7fecf +00be012c +0091fe7c +fe120089 +015aff9b +ffe1ffda +// 0x00000690 +ff9f014a +01b6008f +fc81fe11 +028b0016 +fef80148 +ff6bfe25 +01f0013a +fd54ff89 +03720192 +fdd0ff28 +fffb007d +00c6fdf8 +ff6b01bc +00bafff7 +0050ffe9 +fea7fe96 +// 0x000006a0 +ff2b02a3 +ff08fe28 +013d004b +001b0138 +ff000116 +016dfdfb +ff55001e +00340092 +ff1efec7 +0108016f +fedcfec8 +00f30365 +0024fb5b +ff94022f +00adffd7 +ffedff75 +// 0x000006b0 +ffbdffd9 +ff3a0116 +013d00f1 +ff21fdba +ff900042 +0045ffab +0045015a +0024ffe2 +003aff41 +ff4a00cf +016effa8 +ff750045 +ff6400b1 +0056fccf +febd036d +01c7fd0b +// 0x000006c0 +ff89fec5 +01d7fff2 +ffe8ffaa +fed4004c +00a000ef +0051ff5f +ffb3ff8d +ffce0074 +009c0086 +ffb8feef +ff5f0117 +ff48ff63 +016aff75 +ffd700c9 +0000fffa +0197ff41 +// 0x000006d0 +fc9f0139 +0283fe88 +fe1202b4 +013efdce +ffa00051 +005b0097 +00bffe09 +fe220282 +01f4ffa0 +fe02fef3 +026700eb +fed6ff83 +00a60077 +fee1ff65 +0246fe50 +fd5102b9 +// 0x000006e0 +ff86002a +ffda01a1 +ffbefe1c +00780295 +ffadfe11 +01ec00f7 +fe73ff64 +ffb50117 +0030fe58 +ffaa0064 +0030ff64 +01ee022f +fca7fd89 +03c6014a +fd07fe84 +012e021e +// 0x000006f0 +ff66ff7c +0008fe73 +003e0278 +ff38fe73 +0109ff77 +ff54ff95 +ffe702a4 +000bfdc9 +0184010a +fd500118 +01a8ffd8 +00f2fdb1 +fea3017f +00feff22 +fe9b024c +0132fd52 +// 0x00000700 +fef900cc +028cffd3 +fe47ff9e +00ffffc7 +fd1a00c9 +0614008c +fb07ff4a +014e00a1 +ffe4fea9 +ff5b0133 +00b6fe93 +fff9046c +007efb01 +ffb5016a +00f10000 +ff94ff3f +// 0x00000710 +ff3101ba +00a8ff6f +fefbffdc +004900c7 +0068fe51 +fffc00ee +006b0030 +fe2efe07 +03b602f9 +fdf5ff1b +ff74ff7f +0023ff0e +0084012d +ff970004 +00d9ff7a +febcffa9 +// 0x00000720 +02d800fb +fe79feb6 +ff9cfe92 +01a101fe +fe20ff27 +023b01ba +fc81ff0d +0419ffd2 +fccbffd0 +029701cd +fe08fc9c +ff5a033d +01acfdb6 +ffac00f3 +003f0090 +0043ff4b +// 0x00000730 +ffae0099 +0007ffa8 +ff5400d0 +00d7ff36 +ff28fedb +005f00dc +007f013f +feb1fe3e +02df01b0 +fdf5fff9 +00b8fe5e +ffcaffab +0064020c +fef6fe0b +01a90040 +fcef0081 +// 0x00000740 +005d0006 +003500df +feb5fe91 +02530066 +fcbbfffc +037500a2 +fe1b0056 +008aff5d +00410088 +ff2a0075 +00c5fcaa +fe2f0505 +0232fcab +00c30008 +ff47010c +fff4ffe2 +// 0x00000750 +fecdffd0 +0149ff0f +fe79012d +00db0016 +ff43fefc +00ed014c +01cbff80 +fcccfeb9 +024d018a +fe5cff21 +01bd00c0 +fe9ffeef +005801dd +feb7fdce +0273008e +fe4a0050 +// 0x00000760 +013e0009 +0057ffd7 +0007ff49 +ffc30252 +fd9cfe29 +0426014b +fd4bff65 +00d4ff88 +ff71ffcd +00df0217 +ffeafdee +fff301e9 +ff71fe90 +0069ff99 +ff0900c4 +01e7ff3b +// 0x00000770 +fe9e0123 +0075fe6d +ff1f012d +01630124 +ff42fdb3 +ffbe021f +008d0057 +0012fd24 +ffdb02fb +ffe9fd25 +011c0150 +fe43ff01 +00a10258 +004ffe35 +017b0194 +fd07fe81 +// 0x00000780 +01c70137 +fec60090 +ffd0fe79 +01760086 +fd9001a3 +0463fd15 +fcad018f +015b002f +fef4ffde +002d0089 +ff4ffe28 +0269043b +fe9ffa86 +00880273 +ff130085 +012ffe54 +// 0x00000790 +ff65008d +ffae0120 +fef6fdeb +01b60172 +ffd0000d +ff29ffa5 +005301bb +fed7fde3 +0280009a +fe1bff9b +00930024 +ffef0011 +01310076 +fe50ff7f +01050119 +fe6bfe56 +// 0x000007a0 +fe27ff5b +02d50151 +fd49ff88 +00ffffc7 +ff000121 +02ebff48 +feb9ff83 +00190059 +fe8800d1 +012bfec0 +ff0e0004 +00120179 +0183fdaf +feff00a0 +002800fe +0072ffbb // 0x000007b0 -ff18ff9d -020400cb -fd4aff53 -003eff81 -0182ff63 -fe4402b1 -01b5fd11 -feef0229 -00fcff5f -002bffb3 -ff150136 -0091fe40 -fff80086 -ff9e009a -006a00b1 -00e2fe1d +ff31000f +011fff2d +fd9701b2 +00f5fe73 +02120001 +fcc50194 +0223fda3 +fe1f0247 +0350ff5d +fe41ff16 +ffa201a2 +fff6fefd +0133ffd7 +fed90120 +00a4fedc +0042ffe5 // 0x000007c0 -fd9701e7 -03e0ff6b -fc7ffeb0 -027a020b -fd4a0012 -03d4ffb7 -fe0dff99 -fea3ff2a -020c00a3 -fee6ffc8 -007bfff9 -fef100b2 -0072feee -010001bb -ff72febd -ffd4ffd3 +fefe018c +038a0105 +fc42fd55 +0267030e +fd17fe95 +03d90166 +fe38fdfe +ff45003a +0181ff93 +ff4401c6 +ff1afebd +006100cc +ff86fe4c +02020214 +fea1ff50 +007cff64 // 0x000007d0 -0055ff0f -ffa20291 -002ffe20 -ff920165 -ff0aff44 -009cffa1 -00ffffb9 -0037016e -fe98ff5f -01580098 -0023ff1b -ffbb0186 -ffb2fe2c -ff78ffc9 -011e01f5 -0002fd65 +000cffac +ffbc01a9 +ff0cff0b +00affff6 +ff8100d1 +001bfe40 +00f80170 +ff6bffb6 +ffcd00b1 +00b2ff88 +00a8ffb7 +fef900e0 +00a2ff2a +fe7eff9a +01e70166 +fed4fd5c // 0x000007e0 -ff7afe91 -012c0032 -ff45ffd6 -007701a5 -0022ff69 -fed2ff97 -01130036 -ff4dff02 -00c90171 -ffc0ff32 -ff3efff1 -ff8600b6 -00b90022 -009cfe90 -00ca0150 -fefefef8 +001cff08 +0035ff34 +00270061 +ffa00199 +0061ff5e +feb20049 +01a5ff73 +fec1ff63 +013d0140 +ffa3ff63 +ffa8ffa2 +ff06011d +005eff2e +0110ff97 +003b0082 +ffa1ffa3 // 0x000007f0 -fe0c00af -02dcffbc -ff010228 -ff4dfcef -001a02a7 -012afe25 -ff2dfffa -fff7009e -fff1003f -01480028 -ffd4fec5 -ff0a01be -02abff1e -fb50ffe4 -03aeff0c -fe820168 +fddc0060 +02e7fffe +fead029b +000cfc77 +ff63022c +01defe65 +fe71fff5 +009b0051 +ff930130 +0121ff2b +ffa8ff9e +ff2e013b +02eeffa8 +fb80ff6b +03a3ff22 +fe330151 diff --git a/9_Firmware/9_2_FPGA/tb/tb_ddc_400m.v b/9_Firmware/9_2_FPGA/tb/tb_ddc_400m.v index 7618b28..b974e34 100644 --- a/9_Firmware/9_2_FPGA/tb/tb_ddc_400m.v +++ b/9_Firmware/9_2_FPGA/tb/tb_ddc_400m.v @@ -22,7 +22,6 @@ module tb_ddc_400m; wire [7:0] ddc_diagnostics; wire mixer_saturation; wire filter_overflow; - reg bypass_mode; reg [1:0] test_mode; reg [15:0] test_phase_inc; reg force_saturation; @@ -62,7 +61,6 @@ module tb_ddc_400m; .ddc_diagnostics (ddc_diagnostics), .mixer_saturation (mixer_saturation), .filter_overflow (filter_overflow), - .bypass_mode (bypass_mode), .test_mode (test_mode), .test_phase_inc (test_phase_inc), .force_saturation (force_saturation), @@ -101,7 +99,6 @@ module tb_ddc_400m; adc_data = 0; adc_data_valid_i = 0; adc_data_valid_q = 0; - bypass_mode = 0; test_mode = 2'b00; test_phase_inc = 0; force_saturation = 0; diff --git a/9_Firmware/9_2_FPGA/tb/tb_ddc_cosim.v b/9_Firmware/9_2_FPGA/tb/tb_ddc_cosim.v index e721cf8..f1258e0 100644 --- a/9_Firmware/9_2_FPGA/tb/tb_ddc_cosim.v +++ b/9_Firmware/9_2_FPGA/tb/tb_ddc_cosim.v @@ -94,7 +94,6 @@ module tb_ddc_cosim; .ddc_diagnostics (ddc_diagnostics), .mixer_saturation (mixer_saturation), .filter_overflow (filter_overflow), - .bypass_mode (1'b0), .test_mode (2'b00), .test_phase_inc (16'h0000), .force_saturation (1'b0), diff --git a/9_Firmware/9_2_FPGA/tb/tb_fullchain_realdata.v b/9_Firmware/9_2_FPGA/tb/tb_fullchain_realdata.v index ca10caf..3c279b7 100644 --- a/9_Firmware/9_2_FPGA/tb/tb_fullchain_realdata.v +++ b/9_Firmware/9_2_FPGA/tb/tb_fullchain_realdata.v @@ -115,7 +115,8 @@ range_bin_decimator #( .range_valid_out(decim_valid_out), .range_bin_index(decim_bin_index), .decimation_mode(2'b01), // Peak detection mode - .start_bin(10'd0) + .start_bin(10'd0), + .watchdog_timeout() ); // ============================================================================ diff --git a/9_Firmware/9_2_FPGA/tb/tb_radar_receiver_final.v b/9_Firmware/9_2_FPGA/tb/tb_radar_receiver_final.v index 2b4c938..43b16a9 100644 --- a/9_Firmware/9_2_FPGA/tb/tb_radar_receiver_final.v +++ b/9_Firmware/9_2_FPGA/tb/tb_radar_receiver_final.v @@ -149,7 +149,10 @@ radar_receiver_final dut ( .host_guard_cycles(16'd500), .host_short_chirp_cycles(16'd50), .host_short_listen_cycles(16'd1000), - .host_chirps_per_elev(6'd32) + .host_chirps_per_elev(6'd32), + + // Fix 3: digital gain control — pass-through for golden reference + .host_gain_shift(4'd0) ); // ============================================================================ diff --git a/9_Firmware/9_2_FPGA/tb/tb_range_bin_decimator.v b/9_Firmware/9_2_FPGA/tb/tb_range_bin_decimator.v index 250fafd..8a496e2 100644 --- a/9_Firmware/9_2_FPGA/tb/tb_range_bin_decimator.v +++ b/9_Firmware/9_2_FPGA/tb/tb_range_bin_decimator.v @@ -20,6 +20,7 @@ module tb_range_bin_decimator; wire [5:0] range_bin_index; reg [1:0] decimation_mode; reg [9:0] start_bin; + wire watchdog_timeout; // ── Test bookkeeping ─────────────────────────────────────── integer pass_count; @@ -55,9 +56,18 @@ module tb_range_bin_decimator; .range_valid_out(range_valid_out), .range_bin_index(range_bin_index), .decimation_mode(decimation_mode), - .start_bin (start_bin) + .start_bin (start_bin), + .watchdog_timeout(watchdog_timeout) ); + // ── Watchdog timeout pulse counter ─────────────────────────── + integer wd_pulse_count; + always @(posedge clk) begin + #1; + if (watchdog_timeout) + wd_pulse_count = wd_pulse_count + 1; + end + // ── Concurrent output capture block ──────────────────────── // Runs alongside the initial block, captures every valid output always @(posedge clk) begin @@ -186,6 +196,7 @@ module tb_range_bin_decimator; test_num = 0; cap_enable = 0; cap_count = 0; + wd_pulse_count = 0; // Init cap arrays for (i = 0; i < OUTPUT_BINS; i = i + 1) begin @@ -716,6 +727,113 @@ module tb_range_bin_decimator; check(cap_count >= 1 && cap_i[0] == 16'sd8, "14c: Bin 0 = 8 (original behavior preserved)"); + // ════════════════════════════════════════════════════════ + // TEST GROUP 15: Watchdog Timeout (Fix 5) + // ════════════════════════════════════════════════════════ + $display("\n--- Test Group 15: Watchdog Timeout (Fix 5) ---"); + + // 15a: Stall in ST_PROCESS — feed 8 samples (half a group) then stop. + // After 256 clocks of no valid, watchdog should fire and return to IDLE. + // After that, a fresh full frame should still produce 64 outputs. + $display(" 15a: Stall mid-group in ST_PROCESS"); + apply_reset; + wd_pulse_count = 0; + decimation_mode = 2'b01; // Peak mode + + // Feed only 8 samples (partial group) + for (i = 0; i < 8; i = i + 1) begin + range_i_in = (i + 1) * 100; + range_q_in = 16'd0; + range_valid_in = 1'b1; + @(posedge clk); #1; + end + range_valid_in = 1'b0; + + // Wait for watchdog to fire (256 + margin) + repeat (280) @(posedge clk); #1; + check(wd_pulse_count == 1, "15a: watchdog_timeout pulsed once"); + + // Verify DUT returned to idle — feed a complete frame and check output + // Mode 01 (peak) with ramp: group 0 has values 0..15, peak = 15 + start_capture; + feed_ramp; + stop_capture; + + $display(" 15a: Output count after recovery: %0d", cap_count); + check(cap_count == OUTPUT_BINS, "15a: 64 outputs after watchdog recovery"); + check(cap_count >= 1 && cap_i[0] == 16'sd15, "15a: Bin 0 = 15 (peak of 0..15) after recovery"); + + // 15b: Stall in ST_SKIP — set start_bin=100, feed 50 samples then stop. + // DUT should be in ST_SKIP, watchdog fires after 256 idle clocks. + $display(" 15b: Stall in ST_SKIP"); + apply_reset; + wd_pulse_count = 0; + decimation_mode = 2'b00; + start_bin = 10'd100; + + // Feed only 50 samples (not enough to finish skipping) + for (i = 0; i < 50; i = i + 1) begin + range_i_in = i[15:0]; + range_q_in = 16'd0; + range_valid_in = 1'b1; + @(posedge clk); #1; + end + range_valid_in = 1'b0; + + // Wait for watchdog + repeat (280) @(posedge clk); #1; + check(wd_pulse_count == 1, "15b: watchdog_timeout pulsed once in ST_SKIP"); + + // Recovery: feed full frame with start_bin=0 + start_bin = 10'd0; + start_capture; + feed_ramp; + stop_capture; + check(cap_count == OUTPUT_BINS, "15b: 64 outputs after ST_SKIP watchdog recovery"); + + // 15c: Normal operation should NOT trigger watchdog. + // Short gaps (20 clocks) are well under the 256 limit. + $display(" 15c: Normal gaps do NOT trigger watchdog"); + apply_reset; + wd_pulse_count = 0; + decimation_mode = 2'b01; + start_bin = 10'd0; + + start_capture; + // Reuse the gap-feed pattern from Test Group 10: gaps of 20 cycles every 50 samples + begin : wd_gap_feed + integer sample_idx, samples_since_gap; + sample_idx = 0; + samples_since_gap = 0; + while (sample_idx < INPUT_BINS) begin + range_i_in = sample_idx[15:0]; + range_q_in = 16'd0; + range_valid_in = 1'b1; + @(posedge clk); #1; + sample_idx = sample_idx + 1; + samples_since_gap = samples_since_gap + 1; + if (samples_since_gap == 50 && sample_idx < INPUT_BINS) begin + range_valid_in = 1'b0; + repeat (20) @(posedge clk); + #1; + samples_since_gap = 0; + end + end + range_valid_in = 1'b0; + end + stop_capture; + + check(wd_pulse_count == 0, "15c: No watchdog timeout with 20-cycle gaps"); + check(cap_count == OUTPUT_BINS, "15c: Still outputs 64 bins with gaps"); + + // 15d: Watchdog does NOT fire in ST_IDLE (no false trigger when idle). + $display(" 15d: No false watchdog in ST_IDLE"); + apply_reset; + wd_pulse_count = 0; + // Just wait 512 clocks doing nothing — should NOT trigger watchdog + repeat (512) @(posedge clk); #1; + check(wd_pulse_count == 0, "15d: No watchdog timeout while idle"); + // ════════════════════════════════════════════════════════ // Summary // ════════════════════════════════════════════════════════ diff --git a/9_Firmware/9_2_FPGA/tb/tb_rx_gain_control.v b/9_Firmware/9_2_FPGA/tb/tb_rx_gain_control.v new file mode 100644 index 0000000..a44abfd --- /dev/null +++ b/9_Firmware/9_2_FPGA/tb/tb_rx_gain_control.v @@ -0,0 +1,361 @@ +`timescale 1ns / 1ps + +/** + * tb_rx_gain_control.v + * + * Unit test for rx_gain_control — host-configurable digital gain + * between DDC output and matched filter input. + * + * Tests: + * 1. Pass-through (shift=0): output == input + * 2. Left shift (amplify): correct gain, saturation on overflow + * 3. Right shift (attenuate): correct arithmetic shift + * 4. Saturation counter: counts clipped samples + * 5. Negative inputs: sign-correct shifting + * 6. Max shift amounts (7 bits each direction) + * 7. Valid signal pipeline: 1-cycle latency + * 8. Dynamic gain change: gain_shift can change between samples + * 9. Counter stops at 255 (no wrap) + * 10. Reset clears everything + */ + +module tb_rx_gain_control; + +// --------------------------------------------------------------- +// Clock and reset +// --------------------------------------------------------------- +reg clk; +reg reset_n; + +initial clk = 0; +always #5 clk = ~clk; // 100 MHz + +// --------------------------------------------------------------- +// DUT signals +// --------------------------------------------------------------- +reg signed [15:0] data_i_in; +reg signed [15:0] data_q_in; +reg valid_in; +reg [3:0] gain_shift; + +wire signed [15:0] data_i_out; +wire signed [15:0] data_q_out; +wire valid_out; +wire [7:0] saturation_count; + +rx_gain_control dut ( + .clk(clk), + .reset_n(reset_n), + .data_i_in(data_i_in), + .data_q_in(data_q_in), + .valid_in(valid_in), + .gain_shift(gain_shift), + .data_i_out(data_i_out), + .data_q_out(data_q_out), + .valid_out(valid_out), + .saturation_count(saturation_count) +); + +// --------------------------------------------------------------- +// Test infrastructure +// --------------------------------------------------------------- +integer pass_count = 0; +integer fail_count = 0; + +task check; + input cond; + input [1023:0] msg; + begin + if (cond) begin + $display("[PASS] %0s", msg); + pass_count = pass_count + 1; + end else begin + $display("[FAIL] %0s", msg); + fail_count = fail_count + 1; + end + end +endtask + +// Send one sample and wait for output (1-cycle latency) +task send_sample; + input signed [15:0] i_val; + input signed [15:0] q_val; + begin + @(negedge clk); + data_i_in = i_val; + data_q_in = q_val; + valid_in = 1'b1; + @(posedge clk); // DUT registers input + @(negedge clk); + valid_in = 1'b0; + @(posedge clk); // output available after this edge + #1; // let NBA settle + end +endtask + +// --------------------------------------------------------------- +// Test sequence +// --------------------------------------------------------------- +initial begin + $display("=== RX Gain Control Unit Test ==="); + + // Init + reset_n = 0; + data_i_in = 0; + data_q_in = 0; + valid_in = 0; + gain_shift = 4'd0; + + repeat (4) @(posedge clk); + reset_n = 1; + repeat (2) @(posedge clk); + + // --------------------------------------------------------------- + // TEST 1: Pass-through (gain_shift = 0) + // --------------------------------------------------------------- + $display(""); + $display("--- Test 1: Pass-through (shift=0) ---"); + + gain_shift = 4'b0_000; // left shift 0 = pass-through + send_sample(16'sd1000, 16'sd2000); + check(data_i_out == 16'sd1000, + "T1.1: I pass-through (1000)"); + check(data_q_out == 16'sd2000, + "T1.2: Q pass-through (2000)"); + check(saturation_count == 8'd0, + "T1.3: No saturation on pass-through"); + + // --------------------------------------------------------------- + // TEST 2: Left shift (amplify) without overflow + // --------------------------------------------------------------- + $display(""); + $display("--- Test 2: Left shift (amplify) ---"); + + gain_shift = 4'b0_010; // left shift 2 = x4 + send_sample(16'sd500, -16'sd300); + check(data_i_out == 16'sd2000, + "T2.1: I amplified 500<<2 = 2000"); + check(data_q_out == -16'sd1200, + "T2.2: Q amplified -300<<2 = -1200"); + + // --------------------------------------------------------------- + // TEST 3: Left shift with overflow → saturation + // --------------------------------------------------------------- + $display(""); + $display("--- Test 3: Left shift with saturation ---"); + + gain_shift = 4'b0_011; // left shift 3 = x8 + send_sample(16'sd10000, -16'sd10000); + // 10000 << 3 = 80000 > 32767 → clamp to 32767 + // -10000 << 3 = -80000 < -32768 → clamp to -32768 + check(data_i_out == 16'sd32767, + "T3.1: I saturated to +32767"); + check(data_q_out == -16'sd32768, + "T3.2: Q saturated to -32768"); + check(saturation_count == 8'd1, + "T3.3: Saturation counter = 1 (both channels clipped counts as 1)"); + + // --------------------------------------------------------------- + // TEST 4: Right shift (attenuate) + // --------------------------------------------------------------- + $display(""); + $display("--- Test 4: Right shift (attenuate) ---"); + + // Reset to clear saturation counter + reset_n = 0; + repeat (2) @(posedge clk); + reset_n = 1; + repeat (2) @(posedge clk); + + gain_shift = 4'b1_010; // right shift 2 = /4 + send_sample(16'sd4000, -16'sd2000); + check(data_i_out == 16'sd1000, + "T4.1: I attenuated 4000>>2 = 1000"); + check(data_q_out == -16'sd500, + "T4.2: Q attenuated -2000>>2 = -500"); + check(saturation_count == 8'd0, + "T4.3: No saturation on right shift"); + + // --------------------------------------------------------------- + // TEST 5: Right shift preserves sign (arithmetic shift) + // --------------------------------------------------------------- + $display(""); + $display("--- Test 5: Arithmetic right shift (sign preservation) ---"); + + gain_shift = 4'b1_001; // right shift 1 + send_sample(-16'sd1, -16'sd3); + // -1 >>> 1 = -1 (sign extension) + // -3 >>> 1 = -2 (floor division) + check(data_i_out == -16'sd1, + "T5.1: -1 >>> 1 = -1 (sign preserved)"); + check(data_q_out == -16'sd2, + "T5.2: -3 >>> 1 = -2 (arithmetic floor)"); + + // --------------------------------------------------------------- + // TEST 6: Max left shift (7 bits) + // --------------------------------------------------------------- + $display(""); + $display("--- Test 6: Max left shift (x128) ---"); + + gain_shift = 4'b0_111; // left shift 7 = x128 + send_sample(16'sd100, -16'sd50); + // 100 << 7 = 12800 (no overflow) + // -50 << 7 = -6400 (no overflow) + check(data_i_out == 16'sd12800, + "T6.1: 100 << 7 = 12800"); + check(data_q_out == -16'sd6400, + "T6.2: -50 << 7 = -6400"); + + // Now with values that overflow at max shift + send_sample(16'sd300, 16'sd300); + // 300 << 7 = 38400 > 32767 → saturate + check(data_i_out == 16'sd32767, + "T6.3: 300 << 7 saturates to +32767"); + + // --------------------------------------------------------------- + // TEST 7: Max right shift (7 bits) + // --------------------------------------------------------------- + $display(""); + $display("--- Test 7: Max right shift (/128) ---"); + + gain_shift = 4'b1_111; // right shift 7 = /128 + send_sample(16'sd32767, -16'sd32768); + // 32767 >>> 7 = 255 + // -32768 >>> 7 = -256 + check(data_i_out == 16'sd255, + "T7.1: 32767 >>> 7 = 255"); + check(data_q_out == -16'sd256, + "T7.2: -32768 >>> 7 = -256"); + + // --------------------------------------------------------------- + // TEST 8: Valid pipeline (1-cycle latency) + // --------------------------------------------------------------- + $display(""); + $display("--- Test 8: Valid pipeline ---"); + + gain_shift = 4'b0_000; // pass-through + + // Check that valid_out is low when we haven't sent anything + @(posedge clk); #1; + check(valid_out == 1'b0, + "T8.1: valid_out low when no input"); + + // Send a sample and check valid_out appears 1 cycle later + @(negedge clk); + data_i_in = 16'sd42; + data_q_in = 16'sd43; + valid_in = 1'b1; + @(posedge clk); #1; + // This posedge just registered the input; valid_out should now be 1 + check(valid_out == 1'b1, + "T8.2: valid_out asserts 1 cycle after valid_in"); + check(data_i_out == 16'sd42, + "T8.3: data passes through with valid"); + + @(negedge clk); + valid_in = 1'b0; + @(posedge clk); #1; + check(valid_out == 1'b0, + "T8.4: valid_out deasserts after valid_in drops"); + + // --------------------------------------------------------------- + // TEST 9: Dynamic gain change + // --------------------------------------------------------------- + $display(""); + $display("--- Test 9: Dynamic gain change ---"); + + gain_shift = 4'b0_001; // x2 + send_sample(16'sd1000, 16'sd1000); + check(data_i_out == 16'sd2000, + "T9.1: x2 gain applied"); + + gain_shift = 4'b1_001; // /2 + send_sample(16'sd1000, 16'sd1000); + check(data_i_out == 16'sd500, + "T9.2: /2 gain applied after change"); + + // --------------------------------------------------------------- + // TEST 10: Zero input + // --------------------------------------------------------------- + $display(""); + $display("--- Test 10: Zero input ---"); + + gain_shift = 4'b0_111; // max amplify + send_sample(16'sd0, 16'sd0); + check(data_i_out == 16'sd0, + "T10.1: Zero stays zero at max gain"); + check(data_q_out == 16'sd0, + "T10.2: Zero Q stays zero at max gain"); + + // --------------------------------------------------------------- + // TEST 11: Saturation counter stops at 255 + // --------------------------------------------------------------- + $display(""); + $display("--- Test 11: Saturation counter caps at 255 ---"); + + // Reset first + reset_n = 0; + repeat (2) @(posedge clk); + reset_n = 1; + repeat (2) @(posedge clk); + + gain_shift = 4'b0_111; // x128 — will saturate most inputs + // Send 256 saturating samples to overflow the counter + begin : sat_loop + integer j; + for (j = 0; j < 256; j = j + 1) begin + @(negedge clk); + data_i_in = 16'sd20000; + data_q_in = 16'sd20000; + valid_in = 1'b1; + @(posedge clk); + end + end + @(negedge clk); + valid_in = 1'b0; + @(posedge clk); #1; + + check(saturation_count == 8'd255, + "T11.1: Counter capped at 255 after 256 saturating samples"); + + // One more sample — should stay at 255 + send_sample(16'sd20000, 16'sd20000); + check(saturation_count == 8'd255, + "T11.2: Counter stays at 255 (no wrap)"); + + // --------------------------------------------------------------- + // TEST 12: Reset clears everything + // --------------------------------------------------------------- + $display(""); + $display("--- Test 12: Reset clears all ---"); + + reset_n = 0; + repeat (2) @(posedge clk); + reset_n = 1; + @(posedge clk); #1; + + check(data_i_out == 16'sd0, + "T12.1: I output cleared on reset"); + check(data_q_out == 16'sd0, + "T12.2: Q output cleared on reset"); + check(valid_out == 1'b0, + "T12.3: valid_out cleared on reset"); + check(saturation_count == 8'd0, + "T12.4: Saturation counter cleared on reset"); + + // --------------------------------------------------------------- + // SUMMARY + // --------------------------------------------------------------- + $display(""); + $display("=== RX Gain Control: %0d passed, %0d failed ===", + pass_count, fail_count); + + if (fail_count > 0) + $display("[FAIL] RX gain control test FAILED"); + else + $display("[PASS] All RX gain control tests passed"); + + $finish; +end + +endmodule diff --git a/9_Firmware/9_2_FPGA/tb/tb_system_e2e.v b/9_Firmware/9_2_FPGA/tb/tb_system_e2e.v index 89efa41..04b71f1 100644 --- a/9_Firmware/9_2_FPGA/tb/tb_system_e2e.v +++ b/9_Firmware/9_2_FPGA/tb/tb_system_e2e.v @@ -22,6 +22,7 @@ * G10: Stream Control (3 checks) * G11: Processing Latency Budgets (2 checks) * G12: Watchdog / Liveness (2 checks) + * G13: Doppler/Chirps Mismatch Protection (8 checks) [Fix 4] * * Compile: * iverilog -g2001 -DSIMULATION -o tb/tb_system_e2e.vvp \ @@ -745,13 +746,13 @@ initial begin check(dut.host_radar_mode == 2'b10, "G6.1: Opcode 0x01 -> host_radar_mode = 2'b10 (single chirp)"); - // G6.2: Set CFAR threshold via USB command + // G6.2: Set detection threshold via USB command bfm_send_cmd(8'h03, 8'h00, 16'h1234); - check(dut.host_cfar_threshold == 16'h1234, - "G6.2: Opcode 0x03 -> host_cfar_threshold = 0x1234"); + check(dut.host_detect_threshold == 16'h1234, + "G6.2: Opcode 0x03 -> host_detect_threshold = 0x1234"); // G6.3: Set stream control via USB command - bfm_send_cmd(8'h04, 8'h00, 16'h0005); // enable range + cfar, disable doppler + bfm_send_cmd(8'h04, 8'h00, 16'h0005); // enable range + detect, disable doppler check(dut.host_stream_control == 3'b101, "G6.3: Opcode 0x04 -> host_stream_control = 3'b101"); @@ -808,8 +809,8 @@ initial begin bfm_send_cmd(8'h03, 8'h00, 16'hAAAA); bfm_send_cmd(8'h03, 8'h00, 16'hBBBB); bfm_send_cmd(8'h03, 8'h00, 16'hCCCC); - check(dut.host_cfar_threshold == 16'hCCCC, - "G7.2: Last of 3 rapid USB commands applied (CFAR=0xCCCC)"); + check(dut.host_detect_threshold == 16'hCCCC, + "G7.2: Last of 3 rapid USB commands applied (threshold=0xCCCC)"); // G7.3: Verify CDC path for TX chirp counter (120MHz→100MHz) // In the AERIS-10 architecture, STM32 toggles drive the TX chirp @@ -822,10 +823,10 @@ initial begin "G7.3: TX chirp CDC path delivered data (DAC or counter active)"); // G7.4: Command CDC didn't corrupt data — verify threshold is exact - check(dut.host_cfar_threshold == 16'hCCCC, - "G7.4: CDC-transferred CFAR threshold is bit-exact (0xCCCC)"); + check(dut.host_detect_threshold == 16'hCCCC, + "G7.4: CDC-transferred detect threshold is bit-exact (0xCCCC)"); - // Restore CFAR threshold + // Restore detection threshold bfm_send_cmd(8'h03, 8'h00, 16'd10000); $display(""); @@ -996,6 +997,48 @@ initial begin $display(""); + // ================================================================ + // GROUP 13: DOPPLER/CHIRPS MISMATCH PROTECTION (Fix 4) + // ================================================================ + $display("--- Group 13: Doppler/Chirps Mismatch Protection ---"); + + // G13.1: Setting chirps_per_elev = 32 (matching DOPPLER_FFT_SIZE) clears error + bfm_send_cmd(8'h15, 8'h00, 16'd32); + check(dut.host_chirps_per_elev == 6'd32, + "G13.1: chirps_per_elev=32 accepted (matches FFT size)"); + + // G13.2: Error flag is clear when value matches + check(dut.chirps_mismatch_error == 1'b0, + "G13.2: Mismatch error clear when chirps==DOPPLER_FFT_SIZE"); + + // G13.3: Setting chirps_per_elev > 32 gets clamped to 32 + bfm_send_cmd(8'h15, 8'h00, 16'd48); + check(dut.host_chirps_per_elev == 6'd32, + "G13.3: chirps_per_elev=48 clamped to 32"); + + // G13.4: Mismatch error flag set after clamping + check(dut.chirps_mismatch_error == 1'b1, + "G13.4: Mismatch error set when chirps>DOPPLER_FFT_SIZE"); + + // G13.5: Setting chirps_per_elev = 0 gets clamped to 32 + bfm_send_cmd(8'h15, 8'h00, 16'd0); + check(dut.host_chirps_per_elev == 6'd32, + "G13.5: chirps_per_elev=0 clamped to 32"); + + // G13.6: Value < 32 is accepted but flagged as mismatch + bfm_send_cmd(8'h15, 8'h00, 16'd16); + check(dut.host_chirps_per_elev == 6'd16, + "G13.6: chirps_per_elev=16 accepted (not clamped)"); + check(dut.chirps_mismatch_error == 1'b1, + "G13.7: Mismatch error set when chirps {1'b0, host_threshold}) begin + detect_flag <= 1'b1; + detect_valid <= 1'b1; + detect_counter <= detect_counter + 1; + end + end + end +end + +// --------------------------------------------------------------- +// Test infrastructure +// --------------------------------------------------------------- +integer pass_count = 0; +integer fail_count = 0; + +task check; + input cond; + input [1023:0] msg; + begin + if (cond) begin + $display("[PASS] %0s", msg); + pass_count = pass_count + 1; + end else begin + $display("[FAIL] %0s", msg); + fail_count = fail_count + 1; + end + end +endtask + +task pulse_sample; + input signed [15:0] i_val; + input signed [15:0] q_val; + begin + // Setup inputs before clock edge + @(negedge clk); + doppler_real = i_val; + doppler_imag = q_val; + doppler_valid = 1'b1; + // Rising edge: always block samples valid=1, schedules detect_flag<=result + @(posedge clk); + #1; // Let NBA resolve — detect_flag now reflects this cycle's decision + // Deassert valid for next cycle + @(negedge clk); + doppler_valid = 1'b0; + end +endtask + +// --------------------------------------------------------------- +// Test sequence +// --------------------------------------------------------------- +initial begin + $display("=== Threshold Detector Unit Test ==="); + + // Init + reset_n = 0; + doppler_real = 0; + doppler_imag = 0; + doppler_valid = 0; + host_threshold = 16'd1000; + + repeat (4) @(posedge clk); + reset_n = 1; + repeat (2) @(posedge clk); + + // --------------------------------------------------------------- + // TEST 1: No-lag detection — magnitude computed same cycle + // --------------------------------------------------------------- + $display(""); + $display("--- Test 1: Same-cycle magnitude (no lag) ---"); + + // Feed sample with |I|+|Q| = 600+500 = 1100 > threshold=1000 + pulse_sample(16'sd600, 16'sd500); + check(detect_flag == 1'b1, + "T1.1: Detection fires on first sample above threshold"); + check(detect_valid == 1'b1, + "T1.2: detect_valid asserted with detect_flag"); + check(detect_counter == 8'd1, + "T1.3: Counter incremented to 1"); + + // --------------------------------------------------------------- + // TEST 2: Sticky detection fix — flag clears on next valid=0 cycle + // --------------------------------------------------------------- + $display(""); + $display("--- Test 2: Detection clears on next cycle ---"); + + // pulse_sample left valid=0 on negedge. Wait for next posedge where + // the always block runs with valid=0 and clears detect_flag. + @(posedge clk); + #1; + check(detect_flag == 1'b0, + "T2.1: detect_flag cleared after valid deasserted"); + check(detect_valid == 1'b0, + "T2.2: detect_valid cleared after valid deasserted"); + + // --------------------------------------------------------------- + // TEST 3: Below-threshold sample should NOT detect + // --------------------------------------------------------------- + $display(""); + $display("--- Test 3: Below-threshold ---"); + + // |I|+|Q| = 300+200 = 500 < 1000 + pulse_sample(16'sd300, 16'sd200); + check(detect_flag == 1'b0, + "T3.1: No detection for below-threshold sample"); + check(detect_counter == 8'd1, + "T3.2: Counter unchanged at 1"); + + // --------------------------------------------------------------- + // TEST 4: Exactly-at-threshold should NOT detect (> not >=) + // --------------------------------------------------------------- + $display(""); + $display("--- Test 4: Exactly at threshold ---"); + + // |I|+|Q| = 600+400 = 1000 == threshold (not >) + pulse_sample(16'sd600, 16'sd400); + check(detect_flag == 1'b0, + "T4.1: No detection at exact threshold (> not >=)"); + + // --------------------------------------------------------------- + // TEST 5: Negative inputs (absolute value should still work) + // --------------------------------------------------------------- + $display(""); + $display("--- Test 5: Negative inputs ---"); + + // |-800| + |-300| = 1100 > 1000 + pulse_sample(-16'sd800, -16'sd300); + check(detect_flag == 1'b1, + "T5.1: Detection works with negative I and Q"); + check(detect_counter == 8'd2, + "T5.2: Counter incremented to 2"); + + // --------------------------------------------------------------- + // TEST 6: Mixed positive/negative + // --------------------------------------------------------------- + $display(""); + $display("--- Test 6: Mixed sign inputs ---"); + + // |700| + |-400| = 1100 > 1000 + pulse_sample(16'sd700, -16'sd400); + check(detect_flag == 1'b1, + "T6.1: Detection with mixed-sign inputs"); + + // |-200| + |500| = 700 < 1000 + pulse_sample(-16'sd200, 16'sd500); + check(detect_flag == 1'b0, + "T6.2: No detection with mixed-sign below threshold"); + + // --------------------------------------------------------------- + // TEST 7: Consecutive above-threshold samples + // --------------------------------------------------------------- + $display(""); + $display("--- Test 7: Consecutive detections ---"); + + // Three consecutive above-threshold samples + @(negedge clk); + doppler_real = 16'sd2000; + doppler_imag = 16'sd3000; + doppler_valid = 1'b1; + @(posedge clk); + #1; + check(detect_flag == 1'b1, + "T7.1: First consecutive detection"); + + @(negedge clk); + doppler_real = 16'sd1500; + doppler_imag = 16'sd2000; + // doppler_valid still high + @(posedge clk); + #1; + check(detect_flag == 1'b1, + "T7.2: Second consecutive detection"); + + @(negedge clk); + doppler_real = 16'sd100; + doppler_imag = 16'sd100; + @(posedge clk); + #1; + check(detect_flag == 1'b0, + "T7.3: Third sample below threshold - flag clears immediately"); + + @(negedge clk); + doppler_valid = 1'b0; + @(posedge clk); + + // --------------------------------------------------------------- + // TEST 8: Host-configurable threshold change + // --------------------------------------------------------------- + $display(""); + $display("--- Test 8: Threshold reconfiguration ---"); + + host_threshold = 16'd500; // Lower threshold + + // |300|+|300| = 600 > 500 (was below old threshold of 1000) + pulse_sample(16'sd300, 16'sd300); + check(detect_flag == 1'b1, + "T8.1: Detection after lowering threshold"); + + host_threshold = 16'd2000; // Raise threshold + + // |300|+|300| = 600 < 2000 + pulse_sample(16'sd300, 16'sd300); + check(detect_flag == 1'b0, + "T8.2: No detection after raising threshold"); + + // --------------------------------------------------------------- + // TEST 9: Zero input + // --------------------------------------------------------------- + $display(""); + $display("--- Test 9: Zero input ---"); + + host_threshold = 16'd0; // Even zero threshold + + // |0|+|0| = 0 — not > 0 + pulse_sample(16'sd0, 16'sd0); + check(detect_flag == 1'b0, + "T9.1: Zero magnitude does not trigger even with threshold=0"); + + // --------------------------------------------------------------- + // TEST 10: Maximum input (near overflow) + // --------------------------------------------------------------- + $display(""); + $display("--- Test 10: Maximum input ---"); + + host_threshold = 16'hFFFE; // Near-max threshold = 65534 + + // |32767| + |32767| = 65534 — not > 65534 + pulse_sample(16'sd32767, 16'sd32767); + check(detect_flag == 1'b0, + "T10.1: Max positive at max threshold — equal, no detect"); + + host_threshold = 16'hFFFD; // 65533 + pulse_sample(16'sd32767, 16'sd32767); + check(detect_flag == 1'b1, + "T10.2: Max positive at threshold-1 — detects"); + + // Most-negative: -32768 + pulse_sample(-16'sd32768, -16'sd32768); + // |-32768| = 32768 (17-bit), so |I|+|Q| = 65536 > 65533 + check(detect_flag == 1'b1, + "T10.3: Most-negative input detects (|I|+|Q|=65536)"); + + // --------------------------------------------------------------- + // TEST 11: Detection counter wraps at 255 + // --------------------------------------------------------------- + $display(""); + $display("--- Test 11: Counter behavior ---"); + + // Reset to get fresh counter + reset_n = 0; + repeat (2) @(posedge clk); + reset_n = 1; + repeat (2) @(posedge clk); + + host_threshold = 16'd100; + check(detect_counter == 8'd0, + "T11.1: Counter resets to 0"); + + // --------------------------------------------------------------- + // SUMMARY + // --------------------------------------------------------------- + $display(""); + $display("=== Threshold Detector: %0d passed, %0d failed ===", + pass_count, fail_count); + + if (fail_count > 0) + $display("[FAIL] Threshold detector test FAILED"); + else + $display("[PASS] All threshold detector tests passed"); + + $finish; +end + +endmodule diff --git a/9_Firmware/9_2_FPGA/tb/tb_usb_data_interface.v b/9_Firmware/9_2_FPGA/tb/tb_usb_data_interface.v index 4123def..c423b2a 100644 --- a/9_Firmware/9_2_FPGA/tb/tb_usb_data_interface.v +++ b/9_Firmware/9_2_FPGA/tb/tb_usb_data_interface.v @@ -72,6 +72,7 @@ module tb_usb_data_interface; reg [15:0] status_short_chirp; reg [15:0] status_short_listen; reg [5:0] status_chirps_per_elev; + reg [1:0] status_range_mode; // ── Clock generators (asynchronous) ──────────────────────── always #(CLK_PERIOD / 2) clk = ~clk; @@ -122,7 +123,8 @@ module tb_usb_data_interface; .status_guard (status_guard), .status_short_chirp (status_short_chirp), .status_short_listen (status_short_listen), - .status_chirps_per_elev(status_chirps_per_elev) + .status_chirps_per_elev(status_chirps_per_elev), + .status_range_mode (status_range_mode) ); // ── Test bookkeeping ─────────────────────────────────────── @@ -178,6 +180,7 @@ module tb_usb_data_interface; status_short_chirp = 16'd50; status_short_listen = 16'd17450; status_chirps_per_elev = 6'd32; + status_range_mode = 2'b00; repeat (6) @(posedge ft601_clk_in); reset_n = 1; // Wait enough cycles for stream_control CDC to propagate @@ -881,6 +884,7 @@ module tb_usb_data_interface; status_short_chirp = 16'd50; status_short_listen = 16'd17450; status_chirps_per_elev = 6'd32; + status_range_mode = 2'b10; // Long-range for status test // Pulse status_request (1 cycle in clk domain — toggles status_req_toggle_100m) @(posedge clk); @@ -937,8 +941,8 @@ module tb_usb_data_interface; "Status readback: word 2 = {guard, short_chirp}"); check(uut.status_words[3] === {16'd17450, 10'd0, 6'd32}, "Status readback: word 3 = {short_listen, 0, chirps_per_elev}"); - check(uut.status_words[4] === 32'h0000_0000, - "Status readback: word 4 = placeholder 0x00000000"); + check(uut.status_words[4] === {30'd0, 2'b10}, + "Status readback: word 4 = range_mode=2'b10"); // ════════════════════════════════════════════════════════ // TEST GROUP 17: New Chirp Timing Opcodes (Gap 2) diff --git a/9_Firmware/9_2_FPGA/usb_data_interface.v b/9_Firmware/9_2_FPGA/usb_data_interface.v index 6f744f5..b0c6849 100644 --- a/9_Firmware/9_2_FPGA/usb_data_interface.v +++ b/9_Firmware/9_2_FPGA/usb_data_interface.v @@ -71,7 +71,8 @@ module usb_data_interface ( input wire [15:0] status_guard, // Current guard cycles input wire [15:0] status_short_chirp, // Current short chirp cycles input wire [15:0] status_short_listen, // Current short listen cycles - input wire [5:0] status_chirps_per_elev // Current chirps per elevation + input wire [5:0] status_chirps_per_elev, // Current chirps per elevation + input wire [1:0] status_range_mode // Fix 7: Current range mode (0x20) ); // USB packet structure (same as before) @@ -262,8 +263,8 @@ always @(posedge ft601_clk_in or negedge ft601_reset_n) begin status_words[2] <= {status_guard, status_short_chirp}; // Word 3: {short_listen_cycles[15:0], chirps_per_elev[5:0], 10'b0} status_words[3] <= {status_short_listen, 10'd0, status_chirps_per_elev}; - // Word 4: {system_status placeholder — 32'h00000000} - status_words[4] <= 32'h0000_0000; + // Word 4: Fix 7 — range_mode in bits [1:0], rest reserved + status_words[4] <= {30'd0, status_range_mode}; end // Delayed version of sync[1] for edge detection