ソースを参照

update

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 3 年 前
コミット
d0d9ab2240

+ 1 - 0
Applications/app/app.c

@@ -90,6 +90,7 @@ void app_start(void){
 static u32 _app_report_task(void *p) {
 	can_report_power(0x45, (s16)PMSM_FOC_GetSpeed(), PMSM_FOC_GetVbusVoltage(), PMSM_FOC_GetVbusCurrent());
 	can_report_dq_current(0x45, PMSM_FOC_GetDQCurrent()->d, PMSM_FOC_GetDQCurrent()->q);
+	can_report_pid_value(0x45, PID_Q_id);
 	return 500;
 }
 

+ 1 - 1
Applications/app/nv_storage.c

@@ -31,7 +31,7 @@ static void nv_default_motor_params(void) {
 	m_params.r = MOTOR_R;
 	m_params.ld = MOTOR_Ld;
 	m_params.lq = MOTOR_Lq;
-	m_params.offset = (69.0f);
+	m_params.offset = 180;//(69.0f);
 	//m_params.offset = (360-128);
 	m_params.est_pll_band = 100;
 	m_params.pos_lock_pll_band = 100;

+ 4 - 4
Applications/bsp/adc.c

@@ -68,8 +68,8 @@ static void adc0_init(void){
 #endif
 
 #ifdef HIGH_SIDE_CURRENT_SENSOR
-	adc_oversample_mode_config(ADC0, ADC_OVERSAMPLING_ALL_CONVERT, ADC_OVERSAMPLING_SHIFT_3B, ADC_OVERSAMPLING_RATIO_MUL8);
-	adc_oversample_mode_enable(ADC0);
+	//adc_oversample_mode_config(ADC0, ADC_OVERSAMPLING_ALL_CONVERT, ADC_OVERSAMPLING_SHIFT_3B, ADC_OVERSAMPLING_RATIO_MUL8);
+	//adc_oversample_mode_enable(ADC0);
 #endif
     /* configure ADC inserted channel trigger */
     adc_external_trigger_source_config(ADC0, ADC_INSERTED_CHANNEL, ADC_TRIGGER_PHASE);
@@ -130,8 +130,8 @@ static void adc1_init(void){
 #endif
 
 #ifdef HIGH_SIDE_CURRENT_SENSOR
-	adc_oversample_mode_config(ADC1, ADC_OVERSAMPLING_ALL_CONVERT, ADC_OVERSAMPLING_SHIFT_3B, ADC_OVERSAMPLING_RATIO_MUL8);
-	adc_oversample_mode_enable(ADC1);
+	//adc_oversample_mode_config(ADC1, ADC_OVERSAMPLING_ALL_CONVERT, ADC_OVERSAMPLING_SHIFT_3B, ADC_OVERSAMPLING_RATIO_MUL8);
+	//adc_oversample_mode_enable(ADC1);
 #endif
     /* ADC external trigger enable */
 	adc_external_trigger_source_config(ADC1, ADC_INSERTED_CHANNEL, ADC_TRIGGER_NONE);

+ 0 - 2
Applications/bsp/adc.h

@@ -18,8 +18,6 @@ inserted ADC 由timer0 ch3触发,
 #define ADC_TRIGGER_NONE  ADC0_1_2_EXTTRIG_INSERTED_NONE
 #define ADC_TRIGGER_VBUS ADC0_1_EXTTRIG_INSERTED_T1_CH0
 
-#define ADC_REGCHAN_SAMPLE_TIME ADC_SAMPLETIME_7POINT5
-
 #define PHASE_AB 0
 #define PHASE_AC 1
 #define PHASE_BC 2

+ 4 - 4
Applications/bsp/board_mc_v1.h

@@ -11,7 +11,7 @@
 #define SCHED_TIMER_IRQ TIMER5_IRQn
 #define SCHED_TIMER_IRQHandler TIMER5_IRQHandler
 
-#define PWM_DEAD_TIME_NS 200u
+#define PWM_DEAD_TIME_NS 300u
 #define HW_DEAD_TIME_NS  200u
 #define HW_RISE_TIME_NS  500u
 #define HW_NOISE_TIME_NS 300u
@@ -19,7 +19,7 @@
 #define TDead NS_2_TCLK(HW_DEAD_TIME_NS + PWM_DEAD_TIME_NS)/* ����ʱ�� */ 
 #define TRise NS_2_TCLK(HW_RISE_TIME_NS)/* MOS ����ʱ��*/
 #define TNoise NS_2_TCLK(HW_NOISE_TIME_NS)/* MOS��������Ŀ�������ʱ�� */
-#define TADC  ((uint16_t)((ADC_TRIG_CONV_LATENCY_CYCLES + ADC_SAMPLING_CYCLES*8) * TIM_CLOCK_MHz) / ADC_CLOCK_MHz + 1u)/* ADC ����ʱ�� */
+#define TADC  ((uint16_t)((ADC_TRIG_CONV_LATENCY_CYCLES + ADC_SAMPLING_CYCLES) * TIM_CLOCK_MHz) / ADC_CLOCK_MHz + 1u)/* ADC ����ʱ�� */
 #define TSampleMIN (TDead + TRise + TADC) //采样需要的总时间
 #define TSampleBefore (TDead + TRise) //采样开始前需要等待的时间
 
@@ -32,7 +32,7 @@
 #define CONFIG_MAX_PHASE_VOL    140.0F
 #define CONFIG_MAX_VBUS_VOLTAGE 100.0F
 #define CONFIG_MAX_TORQUE       50.0F
-#define CONFIG_CURRENT_BANDWITH 500.0f /* 电流环带宽 */
+#define CONFIG_CURRENT_BANDWITH 1000.0f /* 电流环带宽 */
 
 /* MOS驱动 */
 #define pwm_timer TIMER0
@@ -92,7 +92,7 @@
 #define W_PHASE_ADC_MODE 	GPIO_MODE_AIN
 
 #define ADC_TO_CURR_ceof1 (0.3362f/1.0f)
-#define ADC_TO_CURR_ceof2 ADC_TO_CURR_ceof1//(0.3404f)
+#define ADC_TO_CURR_ceof2 (0.3404f)
 
 
 /* 温度,母线,油门等采集*/

+ 2 - 1
Applications/bsp/bsp.h

@@ -27,8 +27,9 @@
 
 #define FOC_CTRL_US (1.0f/(float)FOC_PWM_FS)
 
+#define ADC_REGCHAN_SAMPLE_TIME ADC_SAMPLETIME_13POINT5
 #define ADC_TRIG_CONV_LATENCY_CYCLES 12.5f
-#define ADC_SAMPLING_CYCLES 7.5f
+#define ADC_SAMPLING_CYCLES 13.5f
 
 #define TIMER_UP_IRQ_PRIORITY 0
 #define ADC_IRQ_PRIORITY 1

+ 1 - 1
Applications/bsp/uart.c

@@ -4,7 +4,7 @@
 #include "libs/logger.h"
 #include "libs/utils.h"
 
-#define SHARK_UART_BAUDRATE				500000
+#define SHARK_UART_BAUDRATE				230400
 
 #ifdef DEBUG_PORT_UART1
 #define SHARK_UART0_com					USART1

+ 7 - 2
Applications/foc/commands.c

@@ -42,9 +42,11 @@ static u32 foc_command_task(void *args) {
 	return 0;
 }
 
+#if 0
 static void conf_foc_pid(u8 id, pid_conf_t *pid) {
 	nv_set_pid(id, pid);
 }
+#endif
 
 static void process_foc_command(foc_cmd_body_t *command) {
 	u8 erroCode = 0;
@@ -96,7 +98,7 @@ static void process_foc_command(foc_cmd_body_t *command) {
 		{
 			u8 mode = decode_u8(command->data);
 			sys_debug("mode = %d\n", mode);
-			if (!PMSM_FOC_SetCtrlMode(mode)) {
+			if (!mc_set_foc_mode(mode)) {
 				erroCode = PMSM_FOC_GetErrCode();
 			}
 			response[len++] = PMSM_FOC_GetCtrlMode();
@@ -147,6 +149,7 @@ static void process_foc_command(foc_cmd_body_t *command) {
 		case Foc_Cali_Hall_Phase:
 		{
 			s16 vd = decode_s16((u8 *)command->data);
+			sys_debug("cali encoder %d\n", vd);
 			mc_encoder_off_calibrate((vd));
 			break;
 		}
@@ -163,7 +166,9 @@ static void process_foc_command(foc_cmd_body_t *command) {
 			pid_conf_t pid;
 			u8 id =   decode_u8((u8 *)command->data);
 			memcpy((char *)&pid, (char *)command->data + 1, sizeof(pid_conf_t));
-			conf_foc_pid(id, &pid);
+			sys_debug("id = %d, kp = %f, ki = %f, kb = %f\n", id, pid.kp, pid.ki, pid.kb);
+			PMSM_FOC_SetPid(id, pid.kp, pid.ki, pid.kb);
+			//conf_foc_pid(id, &pid);
 			break;
 		}
 		case Foc_Set_EPM_Mode:

+ 1 - 0
Applications/foc/commands.h

@@ -29,6 +29,7 @@ typedef enum {
 	Foc_Report_Phase_Vol,		//u32,u32,u32
 	Foc_Report_Dq_Vol,			//u32, u32
 	Foc_Report_Power,
+	Foc_Report_Pid,
 	Foc_Cmd_Max
 }foc_cmd_t;
 #define CMD_2_CAN_KEY(cmd) ((u16)(((u16)cmd) | (CAN_MY_ADDRESS<<8)))

+ 35 - 4
Applications/foc/core/PMSM_FOC_Core.c

@@ -116,7 +116,7 @@ static __INLINE void FOC_Set_iDqRamp(dq_Rctrl *c, float target) {
 }
 
 static __INLINE void FOC_Set_vDqRamp(dq_Rctrl *c, float target) {
-	FOC_Set_DqRamp(c, target, (VDQ_RAMP_FINAL_TIME/VDQ_RAMP_TS));
+	FOC_Set_DqRamp(c, target, (VDQ_RAMP_FINAL_TIME/1000*((IDQ_CTRL_TS/VDQ_RAMP_TS))));
 }
 
 
@@ -297,11 +297,12 @@ static __INLINE void PMSM_FOC_Update_PI_Idq(void) {
 
 static u32 PMSM_FOC_Debug_Task(void *p) {
 	if (_gFOC_Ctrl.in.b_motEnable) {
+		//plot_3data16(FtoS16x10(_gFOC_Ctrl.in.s_iABCFilter[0]), FtoS16x10(_gFOC_Ctrl.in.s_iABCFilter[1]), FtoS16x10(_gFOC_Ctrl.in.s_iABCFilter[2]));
 		//plot_3data16(FtoS16x10(_gFOC_Ctrl.in.s_iABCFilter[0]), FtoS16x10(_gFOC_Ctrl.in.s_iABCFilter[1]), _gFOC_Ctrl.in.s_motRPM);
 		//plot_3data16(FtoS16x10(_gFOC_Ctrl.out.s_RealIdq.d), FtoS16x10(_gFOC_Ctrl.out.s_RealIdq.q), FtoS16x10(_gFOC_Ctrl.idq_ctl[1].s_FinalTgt));
 		//plot_3data16( _gFOC_Ctrl.in.s_motRPM, speed_td.target, speed_td.diff);
 	}
-	return 1;
+	return 0;
 }
 
 void PMSM_FOC_Schedule(void) {
@@ -341,7 +342,8 @@ void PMSM_FOC_Schedule(void) {
 	pwm_update_sample(_gFOC_Ctrl.out.n_Sample1, _gFOC_Ctrl.out.n_Sample2, _gFOC_Ctrl.out.n_CPhases);
 
 	if (_gFOC_Ctrl.ctrl_count % 5 == 0) {
-		plot_3data16(FtoS16x10(_gFOC_Ctrl.in.s_iABCFilter[0]), FtoS16x10(_gFOC_Ctrl.in.s_iABCFilter[1]), FtoS16x10(_gFOC_Ctrl.in.s_iABCFilter[2]));
+		//plot_3data16(FtoS16x10(_gFOC_Ctrl.in.s_iABCFilter[0]), FtoS16x10(_gFOC_Ctrl.in.s_iABCFilter[1]), FtoS16x10(_gFOC_Ctrl.in.s_iABCFilter[2]));
+		//plot_3data16((s16)_gFOC_Ctrl.out.s_RealIdq.d, (s16)_gFOC_Ctrl.out.s_RealIdq.q, (s16)_gFOC_Ctrl.idq_ctl[1].s_Cp);
 	}
 }
 
@@ -692,9 +694,38 @@ void PMSM_FOC_LockMotor(bool lock) {
 }
 
 void PMSM_FOC_SetPid(u8 id, float kp, float ki, float kb) {
-
+	if (id > PID_Max_id) {
+		return;
+	}
+	PI_Controller *pi = NULL;
+	if (id == PID_D_id) {
+		pi = _gFOC_Ctrl.pi_ctl_id;
+	}else if (id == PID_Q_id) {
+		pi = _gFOC_Ctrl.pi_ctl_iq;
+	}
+	if (pi != NULL) {
+		pi->kp = kp;
+		pi->ki = ki;
+		pi->kb = kb;
+	}
 }
 
+void PMSM_FOC_GetPid(u8 id, float *kp, float *ki, float *kb) {
+	if (id > PID_Max_id) {
+		return;
+	}
+	PI_Controller *pi = NULL;
+	if (id == PID_D_id) {
+		pi = _gFOC_Ctrl.pi_ctl_id;
+	}else if (id == PID_Q_id) {
+		pi = _gFOC_Ctrl.pi_ctl_iq;
+	}
+	if (pi != NULL) {
+		*kp = pi->kp;
+		*ki = pi->ki;
+		*kb = pi->kb;
+	}
+}
 
 void PMSM_FOC_SetErrCode(u8 error) {
 	if (_gFOC_Ctrl.out.n_Error != error) {

+ 4 - 1
Applications/foc/core/PMSM_FOC_Core.h

@@ -176,8 +176,8 @@ typedef enum {
 #endif
 
 typedef enum {
-	PID_Q_id,
 	PID_D_id,
+	PID_Q_id,
 	PID_Spd_id,
 	PID_TRQ_id,
 	PID_Pow_id,
@@ -233,6 +233,9 @@ void PMSM_FOC_PhaseCurrLim(float lim);
 float PMSM_FOC_GetPhaseCurrLim(void);
 float PMSM_FOC_GetiBusLimit(void);
 void PMSM_FOC_GetCurrentMode(u8 *data);
+bool PMSM_FOC_Is_CruiseEnabled(void);
+void PMSM_FOC_SetPid(u8 id, float kp, float ki, float kb);
+void PMSM_FOC_GetPid(u8 id, float *kp, float *ki, float *kb);
 
 #endif /* _PMSM_FOC_Core_H__ */
 

+ 28 - 22
Applications/foc/motor/encoder.c

@@ -8,6 +8,9 @@
 #include "math/fast_math.h"
 #include "encoder_off2.h"
 
+static void encoder_do_offset_calibrate(void) ;
+static void _detect_off_finished(void);
+
 /* 磁编码器使用一对极的磁铁,所以编码器获取的角度和机械角度相同需要转为电角度*/
 
 encoder_t g_encoder;
@@ -37,6 +40,7 @@ void encoder_init(void) {
 
 void encoder_set_direction(s8 direction) {
 	g_encoder.direction = direction;
+	g_encoder.cali_angle = INVALID_ANGLE;
 }
 
 void encoder_set_bandwidth(float bandwidth) {
@@ -55,6 +59,7 @@ void encoder_init_clear(s8 diretcion) {
 	g_encoder.est_angle_counts = 0;
 	g_encoder.est_vel_counts = 0;
 	g_encoder.interpolation = 0.0f;
+	g_encoder.cali_angle = INVALID_ANGLE;
 }
 
 void encoder_lock_position(bool enable) {
@@ -107,7 +112,7 @@ static __INLINE u32 _abi_count(void) {
 /* 偏心补偿 */
 static __INLINE float _eccentricity_compensation(int cnt) {
 #ifdef FIR_PHASE_SHIFT
-	int cnt_off = (cnt + FIR_PHASE_SHIFT) % g_encoder.cpr;
+	int cnt_off = (cnt + FIR_PHASE_SHIFT);//g_encoder.cpr;
 	if (g_encoder.encoder_off_map != NULL) { //do offset calibrate, can not do encentricity compensation
 		return 0.0f;
 	}
@@ -145,12 +150,19 @@ float encoder_get_theta(void) {
 			g_encoder.interpolation = 0.0f;
 		}
 	}
+	if (g_encoder.cali_angle != INVALID_ANGLE) {
+		g_encoder.interpolation = 0.0f;
+	}
 	g_encoder.abi_angle = ENC_Pluse_Nr_2_angle((float)cnt + g_encoder.interpolation) * g_encoder.motor_poles + g_encoder.enc_offset;
 	g_encoder.abi_angle += _eccentricity_compensation(cnt);
 	rand_angle(g_encoder.abi_angle);
-
 	g_encoder.last_cnt = cnt;
 	g_encoder.last_us = timer_count32_get();
+
+	if (g_encoder.cali_angle != INVALID_ANGLE) {
+		encoder_do_offset_calibrate();
+	}
+	
 	return g_encoder.abi_angle;
 }
 
@@ -158,11 +170,11 @@ float encoder_get_speed(void) {
 	return (g_encoder.est_vel_counts/g_encoder.cpr) * 60.0f;
 }
 
-
 void _encoder_caliberate_init(void) {
 	if (g_encoder.encoder_off_map != NULL) {
 		return;
 	}
+	u32 mask = cpu_enter_critical();
 	g_encoder.encoder_off_map = (s16 *)os_alloc(g_encoder.cpr * sizeof(s16));
 	g_encoder.encoder_off_count = (u8 *)os_alloc(g_encoder.cpr);
 	
@@ -170,6 +182,7 @@ void _encoder_caliberate_init(void) {
 		g_encoder.encoder_off_map[i] = 0;
 		g_encoder.encoder_off_count[i] = 0;
 	}
+	cpu_exit_critical(mask);
 }
 
 void _encoder_caliberate_deinit(void) {
@@ -181,11 +194,18 @@ void _encoder_caliberate_deinit(void) {
 	g_encoder.encoder_off_count = NULL;
 }
 
-#define MIN_OFF_COUNT 2
+#define MIN_OFF_COUNT 10
 void encoder_detect_offset(float angle){
 #if 1
 	_encoder_caliberate_init();
-	float delta = (g_encoder.abi_angle - angle);
+	g_encoder.cali_angle = angle;
+#else
+	plot_2data16((s16)angle, (s16)g_encoder.abi_angle);
+#endif
+}
+
+static void encoder_do_offset_calibrate(void) {
+	float delta = (g_encoder.abi_angle - g_encoder.cali_angle);
 	if (delta > 200) {
 		delta = delta - 360;
 	}
@@ -203,11 +223,8 @@ void encoder_detect_offset(float angle){
 			g_encoder.encoder_off_count[g_encoder.last_cnt] += 0x10;
 		}
 	}
-#else
-	plot_2data16((s16)angle, (s16)g_encoder.abi_angle);
-#endif
 }
-static void _detect_off_finished(void);
+
 bool encoder_detect_finish(void) {
 	u8 off_count = 0;
 	for (int i = 0; i < 1024; i++) {
@@ -221,6 +238,7 @@ bool encoder_detect_finish(void) {
 		}
 	}
 	if (g_encoder.direction == NEGATIVE) {
+		g_encoder.cali_angle = INVALID_ANGLE;
 		_detect_off_finished();//output data to PC tools, and use Matlab do FIR filter
 		_encoder_caliberate_deinit();
 	}
@@ -232,19 +250,7 @@ static void _detect_off_finished(void) {
 	for (int i = 0; i < 1024; i++) {
 		float angle_off = g_encoder.encoder_off_map[i] / (((g_encoder.encoder_off_count[i] >> 4)&0xF) + (g_encoder.encoder_off_count[i]&0xF));
 		plot_1data16((s16)angle_off);
-		delay_ms(10);
-		wdog_reload();
-	}
-	for (int i = 0; i < 1024; i++) {
-		float angle_off =  g_encoder.encoder_off_map[i] / (((g_encoder.encoder_off_count[i] >> 4)&0xF) + (g_encoder.encoder_off_count[i]&0xF));
-		plot_1data16((s16)angle_off);
-		delay_ms(10);
-		wdog_reload();
-	}
-	for (int i = 0; i < 1024; i++) {
-		float angle_off =  g_encoder.encoder_off_map[i] / (((g_encoder.encoder_off_count[i] >> 4)&0xF) + (g_encoder.encoder_off_count[i]&0xF));
-		plot_1data16((s16)angle_off);
-		delay_ms(10);
+		delay_ms(2);
 		wdog_reload();
 	}	
 }

+ 1 - 1
Applications/foc/motor/encoder.h

@@ -9,6 +9,7 @@ typedef struct {
 	float pwm_angle;
 	u32   pwm_count;
 	float abi_angle;
+	float cali_angle;
 	float interpolation;
 	float pll_bandwidth_shadow;
 	float pll_bandwidth;
@@ -40,6 +41,5 @@ bool encoder_detect_finish(void);
 float encoder_get_pwm_angle(void);
 float encoder_zero_phase_detect(void);
 bool ENC_Check_error(void);
-
 #endif /* _Encoder_H__ */
 

+ 104 - 104
Applications/foc/motor/encoder_off2.h

@@ -5,109 +5,109 @@
 /* angle_in is the data, by plot MC_tools */
 /* Use angle_out=single(angle_off) convert double to float */
 
-#define FIR_PHASE_SHIFT 477
+#define FIR_PHASE_SHIFT 277
 const static s16q10_t _encoder_off_map[] = {
-22285,22288,22291,22294,22297,22300,22303,22305,22307,22309,22311,22313,22314,22315,22316,22317,
-22318,22319,22319,22319,22319,22319,22319,22318,22317,22316,22315,22314,22312,22310,22308,22306,22303,22301,22298,22294,
-22291,22288,22284,22280,22275,22271,22266,22261,22256,22251,22245,22239,22233,22227,22221,22214,22207,22200,22193,22185,
-22177,22169,22161,22152,22144,22135,22126,22116,22107,22097,22087,22076,22066,22055,22044,22033,22022,22010,21998,21986,
-21974,21961,21948,21935,21922,21909,21895,21882,21868,21853,21839,21824,21810,21795,21779,21764,21748,21733,21717,21701,
-21684,21668,21651,21634,21617,21600,21582,21565,21547,21529,21511,21493,21474,21456,21437,21418,21399,21380,21361,21341,
-21322,21302,21282,21262,21242,21222,21202,21181,21161,21140,21119,21098,21077,21056,21035,21014,20993,20971,20950,20928,
-20907,20885,20864,20842,20820,20798,20776,20754,20732,20710,20688,20666,20644,20622,20600,20577,20555,20533,20511,20489,
-20467,20445,20423,20400,20378,20356,20334,20312,20291,20269,20247,20225,20203,20182,20160,20138,20117,20096,20074,20053,
-20032,20011,19990,19969,19948,19927,19907,19886,19866,19846,19826,19806,19786,19766,19747,19727,19708,19689,19670,19651,
-19633,19614,19596,19578,19560,19542,19525,19507,19490,19473,19456,19439,19423,19407,19391,19375,19359,19344,19328,19313,
-19299,19284,19270,19256,19242,19228,19215,19202,19189,19176,19164,19152,19140,19128,19117,19106,19095,19084,19074,19064,
-19054,19045,19035,19026,19018,19009,19001,18993,18986,18978,18971,18965,18958,18952,18946,18941,18936,18931,18926,18922,
-18918,18914,18911,18908,18905,18902,18900,18898,18897,18896,18895,18894,18894,18894,18894,18895,18896,18897,18899,18901,
-18903,18906,18909,18912,18915,18919,18923,18928,18933,18938,18943,18949,18955,18962,18968,18975,18983,18991,18999,19007,
-19016,19025,19034,19044,19054,19064,19075,19086,19097,19109,19120,19133,19145,19158,19171,19184,19198,19212,19227,19241,
-19256,19272,19287,19303,19319,19336,19353,19370,19387,19405,19423,19441,19460,19479,19498,19518,19537,19557,19578,19598,
-19619,19641,19662,19684,19706,19728,19751,19774,19797,19820,19844,19868,19892,19916,19941,19966,19991,20017,20042,20068,
-20095,20121,20148,20175,20202,20229,20257,20285,20313,20341,20370,20398,20427,20457,20486,20516,20545,20575,20606,20636,
-20667,20697,20729,20760,20791,20822,20854,20886,20918,20950,20983,21015,21048,21081,21114,21147,21180,21214,21247,21281,
-21315,21349,21383,21418,21452,21487,21521,21556,21591,21626,21661,21696,21732,21767,21802,21838,21874,21909,21945,21981,
-22017,22053,22089,22125,22161,22198,22234,22270,22307,22343,22380,22416,22453,22489,22526,22562,22599,22636,22672,22709,
-22745,22782,22819,22855,22892,22928,22965,23002,23038,23075,23111,23147,23184,23220,23256,23292,23328,23364,23400,23436,
-23472,23508,23544,23579,23615,23650,23686,23721,23756,23791,23826,23861,23896,23931,23965,23999,24034,24068,24102,24136,
-24169,24203,24236,24270,24303,24336,24369,24401,24434,24466,24498,24530,24562,24593,24625,24656,24687,24718,24748,24779,
-24809,24839,24869,24898,24927,24957,24986,25014,25043,25071,25099,25126,25154,25181,25208,25235,25261,25288,25314,25339,
-25365,25390,25415,25439,25464,25488,25511,25535,25558,25581,25604,25626,25648,25670,25692,25713,25734,25754,25775,25795,
-25814,25834,25853,25871,25890,25908,25926,25943,25960,25977,25994,26010,26026,26041,26056,26071,26085,26100,26113,26127,
-26140,26153,26165,26177,26189,26200,26211,26222,26232,26242,26252,26261,26270,26279,26287,26295,26302,26309,26316,26322,
-26328,26334,26339,26344,26349,26353,26357,26360,26363,26366,26368,26370,26372,26373,26374,26375,26375,26375,26374,26373,
-26372,26370,26368,26366,26363,26360,26357,26353,26349,26344,26339,26334,26329,26323,26316,26310,26303,26296,26288,26280,
-26271,26263,26254,26244,26234,26224,26214,26203,26192,26180,26169,26156,26144,26131,26118,26105,26091,26077,26063,26048,
-26033,26018,26002,25986,25970,25954,25937,25920,25903,25885,25867,25849,25830,25812,25793,25773,25754,25734,25714,25693,
-25673,25652,25631,25609,25588,25566,25544,25521,25499,25476,25453,25430,25406,25383,25359,25335,25311,25286,25262,25237,
-25212,25187,25161,25136,25110,25084,25058,25032,25006,24979,24953,24926,24899,24872,24845,24817,24790,24762,24735,24707,
-24679,24651,24623,24595,24567,24538,24510,24481,24453,24424,24396,24367,24338,24309,24280,24251,24222,24193,24164,24135,
-24106,24077,24048,24019,23990,23961,23931,23902,23873,23844,23815,23786,23757,23728,23699,23670,23641,23613,23584,23555,
-23527,23498,23470,23441,23413,23385,23357,23329,23301,23273,23245,23218,23190,23163,23135,23108,23081,23054,23027,23001,
-22974,22948,22921,22895,22869,22843,22818,22792,22767,22742,22717,22692,22667,22643,22618,22594,22570,22546,22523,22500,
-22476,22453,22431,22408,22386,22363,22341,22320,22298,22277,22256,22235,22214,22194,22173,22153,22133,22114,22094,22075,
-22056,22038,22019,22001,21983,21966,21948,21931,21914,21897,21881,21864,21848,21833,21817,21802,21787,21772,21758,21743,
-21729,21716,21702,21689,21676,21663,21651,21638,21626,21615,21603,21592,21581,21570,21560,21549,21539,21530,21520,21511,
-21502,21493,21485,21476,21468,21461,21453,21446,21439,21432,21426,21419,21413,21408,21402,21397,21391,21387,21382,21378,
-21373,21369,21366,21362,21359,21356,21353,21350,21348,21346,21344,21342,21341,21339,21338,21337,21337,21336,21336,21336,
-21336,21336,21337,21338,21339,21340,21341,21343,21344,21346,21348,21350,21353,21355,21358,21361,21364,21367,21370,21374,
-21378,21382,21386,21390,21394,21399,21403,21408,21413,21418,21423,21428,21434,21439,21445,21451,21457,21463,21469,21475,
-21482,21488,21495,21502,21508,21515,21522,21529,21537,21544,21551,21559,21566,21574,21581,21589,21597,21605,21613,21621,
-21629,21637,21646,21654,21662,21671,21679,21687,21696,21705,21713,21722,21730,21739,21748,21757,21765,21774,21783,21792,
-21801,21810,21818,21827,21836,21845,21854,21862,21871,21880,21889,21898,21906,21915,21924,21932,21941,21950,21958,21967,
-21975,21984,21992,22001,22009,22017,22025,22033,22042,22050,22057,22065,22073,22081,22089,22096,22104,22111,22118,22126,
-22133,22140,22147,22153,22160,22167,22173,22180,22186,22192,22198,22204,22210,22216,22221,22227,22232,22237,22242,22247,
-22252,22256,22261,22265,22269,22273,22277,22281,22285,22288,22291,22294,22297,22300,22303,22305,22307,22309,22311,22313,
-22314,22315,22316,22317,22318,22319,22319,22319,22319,22319,22319,22318,22317,22316,22315,22314,22312,22310,22308,22306,
-22303,22301,22298,22294,22291,22288,22284,22280,22275,22271,22266,22261,22256,22251,22245,22239,22233,22227,22221,22214,
-22207,22200,22193,22185,22177,22169,22161,22152,22144,22135,22126,22116,22107,22097,22087,22076,22066,22055,22044,22033,
-22022,22010,21998,21986,21974,21961,21948,21935,21922,21909,21895,21882,21868,21853,21839,21824,21810,21795,21779,21764,
-21748,21733,21717,21701,21684,21668,21651,21634,21617,21600,21582,21565,21547,21529,21511,21493,21474,21456,21437,21418,
-21399,21380,21361,21341,21322,21302,21282,21262,21242,21222,21202,21181,21161,21140,21119,21098,21077,21056,21035,21014,
-20993,20971,20950,20928,20907,20885,20864,20842,20820,20798,20776,20754,20732,20710,20688,20666,20644,20622,20600,20577,
-20555,20533,20511,20489,20467,20445,20423,20400,20378,20356,20334,20312,20291,20269,20247,20225,20203,20182,20160,20138,
-20117,20096,20074,20053,20032,20011,19990,19969,19948,19927,19907,19886,19866,19846,19826,19806,19786,19766,19747,19727,
-19708,19689,19670,19651,19633,19614,19596,19578,19560,19542,19525,19507,19490,19473,19456,19439,19423,19407,19391,19375,
-19359,19344,19328,19313,19299,19284,19270,19256,19242,19228,19215,19202,19189,19176,19164,19152,19140,19128,19117,19106,
-19095,19084,19074,19064,19054,19045,19035,19026,19018,19009,19001,18993,18986,18978,18971,18965,18958,18952,18946,18941,
-18936,18931,18926,18922,18918,18914,18911,18908,18905,18902,18900,18898,18897,18896,18895,18894,18894,18894,18894,18895,
-18896,18897,18899,18901,18903,18906,18909,18912,18915,18919,18923,18928,18933,18938,18943,18949,18955,18962,18968,18975,
-18983,18991,18999,19007,19016,19025,19034,19044,19054,19064,19075,19086,19097,19109,19120,19133,19145,19158,19171,19184,
-19198,19212,19227,19241,19256,19272,19287,19303,19319,19336,19353,19370,19387,19405,19423,19441,19460,19479,19498,19518,
-19537,19557,19578,19598,19619,19641,19662,19684,19706,19728,19751,19774,19797,19820,19844,19868,19892,19916,19941,19966,
-19991,20017,20042,20068,20095,20121,20148,20175,20202,20229,20257,20285,20313,20341,20370,20398,20427,20457,20486,20516,
-20545,20575,20606,20636,20667,20697,20729,20760,20791,20822,20854,20886,20918,20950,20983,21015,21048,21081,21114,21147,
-21180,21214,21247,21281,21315,21349,21383,21418,21452,21487,21521,21556,21591,21626,21661,21696,21732,21767,21802,21838,
-21874,21909,21945,21981,22017,22053,22089,22125,22161,22198,22234,22270,22307,22343,22380,22416,22453,22489,22526,22562,
-22599,22636,22672,22709,22745,22782,22819,22855,22892,22928,22965,23002,23038,23075,23111,23147,23184,23220,23256,23292,
-23328,23364,23400,23436,23472,23508,23544,23579,23615,23650,23686,23721,23756,23791,23826,23861,23896,23931,23965,23999,
-24034,24068,24102,24136,24169,24203,24236,24270,24303,24336,24369,24401,24434,24466,24498,24530,24562,24593,24625,24656,
-24687,24718,24748,24779,24809,24839,24869,24898,24927,24957,24986,25014,25043,25071,25099,25126,25154,25181,25208,25235,
-25261,25288,25314,25339,25365,25390,25415,25439,25464,25488,25511,25535,25558,25581,25604,25626,25648,25670,25692,25713,
-25734,25754,25775,25795,25814,25834,25853,25871,25890,25908,25926,25943,25960,25977,25994,26010,26026,26041,26056,26071,
-26085,26100,26113,26127,26140,26153,26165,26177,26189,26200,26211,26222,26232,26242,26252,26261,26270,26279,26287,26295,
-26302,26309,26316,26322,26328,26334,26339,26344,26349,26353,26357,26360,26363,26366,26368,26370,26372,26373,26374,26375,
-26375,26375,26374,26373,26372,26370,26368,26366,26363,26360,26357,26353,26349,26344,26339,26334,26329,26323,26316,26310,
-26303,26296,26288,26280,26271,26263,26254,26244,26234,26224,26214,26203,26192,26180,26169,26156,26144,26131,26118,26105,
-26091,26077,26063,26048,26033,26018,26002,25986,25970,25954,25937,25920,25903,25885,25867,25849,25830,25812,25793,25773,
-25754,25734,25714,25693,25673,25652,25631,25609,25588,25566,25544,25521,25499,25476,25453,25430,25406,25383,25359,25335,
-25311,25286,25262,25237,25212,25187,25161,25136,25110,25084,25058,25032,25006,24979,24953,24926,24899,24872,24845,24817,
-24790,24762,24735,24707,24679,24651,24623,24595,24567,24538,24510,24481,24453,24424,24396,24367,24338,24309,24280,24251,
-24222,24193,24164,24135,24106,24077,24048,24019,23990,23961,23931,23902,23873,23844,23815,23786,23757,23728,23699,23670,
-23641,23613,23584,23555,23527,23498,23470,23441,23413,23385,23357,23329,23301,23273,23245,23218,23190,23163,23135,23108,
-23081,23054,23027,23001,22974,22948,22921,22895,22869,22843,22818,22792,22767,22742,22717,22692,22667,22643,22618,22594,
-22570,22546,22523,22500,22476,22453,22431,22408,22386,22363,22341,22320,22298,22277,22256,22235,22214,22194,22173,22153,
-22133,22114,22094,22075,22056,22038,22019,22001,21983,21966,21948,21931,21914,21897,21881,21864,21848,21833,21817,21802,
-21787,21772,21758,21743,21729,21716,21702,21689,21676,21663,21651,21638,21626,21615,21603,21592,21581,21570,21560,21549,
-21539,21530,21520,21511,21502,21493,21485,21476,21468,21461,21453,21446,21439,21432,21426,21419,21413,21408,21402,21397,
-21391,21387,21382,21378,21373,21369,21366,21362,21359,21356,21353,21350,21348,21346,21344,21342,21341,21339,21338,21337,
-21337,21336,21336,21336,21336,21336,21337,21338,21339,21340,21341,21343,21344,21346,21348,21350,21353,21355,21358,21361,
-21364,21367,21370,21374,21378,21382,21386,21390,21394,21399,21403,21408,21413,21418,21423,21428,21434,21439,21445,21451,
-21457,21463,21469,21475,21482,21488,21495,21502,21508,21515,21522,21529,21537,21544,21551,21559,21566,21574,21581,21589,
-21597,21605,21613,21621,21629,21637,21646,21654,21662,21671,21679,21687,21696,21705,21713,21722,21730,21739,21748,21757,
-21765,21774,21783,21792,21801,21810,21818,21827,21836,21845,21854,21862,21871,21880,21889,21898,21906,21915,21924,21932,
-21941,21950,21958,21967,21975,21984,21992,22001,22009,22017,22025,22033,22042,22050,22057,22065,22073,22081,22089,22096,
-22104,22111,22118,22126,22133,22140,22147,22153,22160,22167,22173,22180,22186,22192,22198,22204,22210,22216,22221,22227,
-22232,22237,22242,22247,22252,22256,22261,22265,22269,22273,22277,22281,
+9062,9063,9064,9066,9067,9069,9070,9072,9074,9075,9077,9079,9081,9083,9084,9086,
+9088,9090,9092,9094,9096,9098,9100,9102,9104,9106,9108,9110,9112,9114,9116,9118,9120,9121,9123,9125,
+9127,9128,9130,9132,9133,9135,9136,9138,9139,9140,9142,9143,9144,9145,9146,9147,9148,9149,9150,9151,
+9151,9152,9153,9153,9154,9154,9155,9155,9156,9156,9156,9157,9157,9157,9157,9158,9158,9158,9158,9159,
+9159,9159,9159,9160,9160,9160,9161,9161,9161,9162,9162,9163,9164,9164,9165,9166,9167,9168,9169,9171,
+9172,9174,9175,9177,9179,9181,9184,9186,9189,9191,9194,9198,9201,9205,9208,9212,9217,9221,9226,9231,
+9236,9241,9247,9253,9259,9265,9272,9279,9286,9294,9301,9310,9318,9327,9336,9345,9355,9365,9375,9386,
+9397,9408,9420,9432,9444,9457,9470,9483,9497,9510,9525,9539,9554,9570,9586,9602,9618,9635,9652,9669,
+9687,9705,9723,9742,9761,9780,9800,9820,9840,9860,9881,9902,9924,9945,9967,9990,10012,10035,10058,10081,
+10104,10128,10152,10176,10200,10225,10250,10274,10300,10325,10350,10376,10401,10427,10453,10479,10506,10532,10558,10585,
+10611,10638,10665,10691,10718,10745,10772,10799,10826,10852,10879,10906,10933,10959,10986,11013,11039,11066,11092,11118,
+11145,11171,11197,11223,11248,11274,11299,11325,11350,11375,11399,11424,11448,11472,11496,11520,11544,11567,11590,11613,
+11636,11658,11680,11702,11724,11745,11766,11787,11807,11828,11848,11867,11887,11906,11925,11943,11961,11979,11997,12014,
+12031,12048,12064,12080,12096,12112,12127,12141,12156,12170,12184,12198,12211,12224,12236,12249,12261,12272,12284,12295,
+12306,12316,12327,12336,12346,12355,12365,12373,12382,12390,12398,12406,12413,12420,12427,12434,12440,12446,12452,12458,
+12463,12468,12473,12478,12482,12486,12490,12494,12497,12500,12504,12506,12509,12512,12514,12516,12518,12519,12521,12522,
+12523,12524,12525,12525,12526,12526,12526,12526,12526,12525,12525,12524,12523,12522,12521,12519,12518,12516,12514,12512,
+12510,12507,12505,12502,12499,12496,12493,12490,12487,12483,12479,12475,12471,12467,12463,12459,12454,12449,12445,12440,
+12434,12429,12424,12418,12412,12406,12400,12394,12388,12381,12375,12368,12361,12354,12347,12339,12331,12324,12316,12308,
+12300,12291,12283,12274,12265,12256,12247,12237,12228,12218,12208,12198,12188,12178,12167,12156,12146,12135,12123,12112,
+12101,12089,12077,12065,12053,12041,12028,12015,12003,11990,11977,11963,11950,11936,11923,11909,11895,11881,11867,11852,
+11838,11823,11809,11794,11779,11764,11749,11733,11718,11702,11686,11671,11655,11639,11623,11607,11591,11575,11558,11542,
+11526,11509,11493,11476,11459,11443,11426,11409,11392,11375,11359,11342,11325,11308,11291,11274,11257,11240,11223,11206,
+11190,11173,11156,11139,11122,11106,11089,11072,11055,11039,11022,11006,10989,10973,10956,10940,10924,10908,10892,10875,
+10859,10844,10828,10812,10796,10781,10765,10750,10734,10719,10704,10689,10673,10658,10644,10629,10614,10599,10585,10570,
+10556,10541,10527,10513,10499,10485,10471,10457,10443,10429,10415,10401,10388,10374,10361,10347,10334,10320,10307,10294,
+10280,10267,10254,10241,10227,10214,10201,10188,10175,10162,10149,10136,10123,10109,10096,10083,10070,10057,10044,10030,
+10017,10004,9991,9977,9964,9951,9937,9924,9910,9897,9883,9869,9855,9841,9828,9814,9799,9785,9771,9757,
+9743,9728,9714,9699,9685,9670,9655,9640,9626,9611,9596,9580,9565,9550,9535,9519,9504,9488,9473,9457,
+9442,9426,9410,9394,9378,9363,9347,9331,9315,9299,9283,9267,9251,9235,9219,9203,9186,9171,9155,9138,
+9122,9106,9091,9075,9059,9043,9027,9012,8996,8981,8966,8950,8935,8920,8905,8890,8875,8861,8847,8832,
+8818,8804,8791,8777,8764,8750,8737,8725,8712,8700,8688,8676,8664,8653,8642,8631,8621,8610,8600,8591,
+8581,8572,8563,8555,8546,8538,8531,8524,8517,8510,8504,8498,8492,8487,8482,8478,8474,8470,8466,8463,
+8461,8458,8456,8455,8454,8453,8452,8452,8453,8453,8454,8456,8458,8460,8462,8465,8468,8472,8476,8480,
+8485,8490,8495,8501,8507,8513,8520,8527,8534,8542,8550,8558,8567,8576,8585,8594,8604,8614,8624,8635,
+8646,8657,8668,8679,8691,8703,8715,8727,8739,8752,8765,8778,8791,8804,8818,8832,8845,8859,8873,8887,
+8901,8916,8930,8944,8959,8973,8988,9002,9017,9031,9046,9060,9075,9090,9104,9119,9133,9148,9162,9176,
+9191,9205,9219,9233,9247,9261,9275,9288,9302,9315,9329,9342,9355,9367,9380,9393,9405,9417,9429,9441,
+9453,9465,9476,9487,9498,9509,9519,9530,9540,9550,9560,9569,9579,9588,9597,9606,9614,9623,9631,9639,
+9647,9654,9661,9668,9675,9682,9688,9695,9701,9707,9712,9718,9723,9728,9733,9738,9742,9746,9750,9754,
+9758,9762,9765,9768,9771,9774,9777,9779,9782,9784,9786,9788,9789,9791,9792,9794,9795,9796,9797,9797,
+9798,9798,9799,9799,9799,9799,9799,9799,9799,9798,9798,9797,9797,9796,9795,9794,9793,9792,9791,9789,
+9788,9787,9785,9784,9782,9780,9779,9777,9775,9773,9771,9769,9767,9765,9762,9760,9758,9755,9753,9750,
+9748,9745,9743,9740,9737,9734,9732,9729,9726,9723,9720,9717,9713,9710,9707,9704,9700,9697,9693,9690,
+9686,9683,9679,9675,9671,9667,9664,9660,9656,9651,9647,9643,9639,9634,9630,9625,9621,9616,9612,9607,
+9602,9597,9592,9587,9582,9577,9572,9567,9562,9556,9551,9545,9540,9534,9529,9523,9517,9511,9505,9500,
+9494,9488,9481,9475,9469,9463,9457,9450,9444,9438,9431,9425,9419,9412,9406,9399,9393,9386,9380,9373,
+9366,9360,9353,9347,9340,9333,9327,9320,9314,9307,9301,9294,9288,9281,9275,9268,9262,9256,9249,9243,
+9237,9231,9225,9219,9213,9207,9202,9196,9190,9185,9180,9174,9169,9164,9159,9154,9149,9144,9140,9135,
+9131,9126,9122,9118,9114,9110,9106,9103,9099,9096,9093,9090,9087,9084,9081,9079,9076,9074,9072,9070,
+9068,9066,9064,9063,9061,9060,9059,9058,9057,9056,9055,9055,9055,9054,9054,9054,9054,9054,9054,9055,
+9055,9056,9056,9057,9058,9059,9060,9061,9062,9063,9064,9066,9067,9069,9070,9072,9074,9075,9077,9079,
+9081,9083,9084,9086,9088,9090,9092,9094,9096,9098,9100,9102,9104,9106,9108,9110,9112,9114,9116,9118,
+9120,9121,9123,9125,9127,9128,9130,9132,9133,9135,9136,9138,9139,9140,9142,9143,9144,9145,9146,9147,
+9148,9149,9150,9151,9151,9152,9153,9153,9154,9154,9155,9155,9156,9156,9156,9157,9157,9157,9157,9158,
+9158,9158,9158,9159,9159,9159,9159,9160,9160,9160,9161,9161,9161,9162,9162,9163,9164,9164,9165,9166,
+9167,9168,9169,9171,9172,9174,9175,9177,9179,9181,9184,9186,9189,9191,9194,9198,9201,9205,9208,9212,
+9217,9221,9226,9231,9236,9241,9247,9253,9259,9265,9272,9279,9286,9294,9301,9310,9318,9327,9336,9345,
+9355,9365,9375,9386,9397,9408,9420,9432,9444,9457,9470,9483,9497,9510,9525,9539,9554,9570,9586,9602,
+9618,9635,9652,9669,9687,9705,9723,9742,9761,9780,9800,9820,9840,9860,9881,9902,9924,9945,9967,9990,
+10012,10035,10058,10081,10104,10128,10152,10176,10200,10225,10250,10274,10300,10325,10350,10376,10401,10427,10453,10479,
+10506,10532,10558,10585,10611,10638,10665,10691,10718,10745,10772,10799,10826,10852,10879,10906,10933,10959,10986,11013,
+11039,11066,11092,11118,11145,11171,11197,11223,11248,11274,11299,11325,11350,11375,11399,11424,11448,11472,11496,11520,
+11544,11567,11590,11613,11636,11658,11680,11702,11724,11745,11766,11787,11807,11828,11848,11867,11887,11906,11925,11943,
+11961,11979,11997,12014,12031,12048,12064,12080,12096,12112,12127,12141,12156,12170,12184,12198,12211,12224,12236,12249,
+12261,12272,12284,12295,12306,12316,12327,12336,12346,12355,12365,12373,12382,12390,12398,12406,12413,12420,12427,12434,
+12440,12446,12452,12458,12463,12468,12473,12478,12482,12486,12490,12494,12497,12500,12504,12506,12509,12512,12514,12516,
+12518,12519,12521,12522,12523,12524,12525,12525,12526,12526,12526,12526,12526,12525,12525,12524,12523,12522,12521,12519,
+12518,12516,12514,12512,12510,12507,12505,12502,12499,12496,12493,12490,12487,12483,12479,12475,12471,12467,12463,12459,
+12454,12449,12445,12440,12434,12429,12424,12418,12412,12406,12400,12394,12388,12381,12375,12368,12361,12354,12347,12339,
+12331,12324,12316,12308,12300,12291,12283,12274,12265,12256,12247,12237,12228,12218,12208,12198,12188,12178,12167,12156,
+12146,12135,12123,12112,12101,12089,12077,12065,12053,12041,12028,12015,12003,11990,11977,11963,11950,11936,11923,11909,
+11895,11881,11867,11852,11838,11823,11809,11794,11779,11764,11749,11733,11718,11702,11686,11671,11655,11639,11623,11607,
+11591,11575,11558,11542,11526,11509,11493,11476,11459,11443,11426,11409,11392,11375,11359,11342,11325,11308,11291,11274,
+11257,11240,11223,11206,11190,11173,11156,11139,11122,11106,11089,11072,11055,11039,11022,11006,10989,10973,10956,10940,
+10924,10908,10892,10875,10859,10844,10828,10812,10796,10781,10765,10750,10734,10719,10704,10689,10673,10658,10644,10629,
+10614,10599,10585,10570,10556,10541,10527,10513,10499,10485,10471,10457,10443,10429,10415,10401,10388,10374,10361,10347,
+10334,10320,10307,10294,10280,10267,10254,10241,10227,10214,10201,10188,10175,10162,10149,10136,10123,10109,10096,10083,
+10070,10057,10044,10030,10017,10004,9991,9977,9964,9951,9937,9924,9910,9897,9883,9869,9855,9841,9828,9814,
+9799,9785,9771,9757,9743,9728,9714,9699,9685,9670,9655,9640,9626,9611,9596,9580,9565,9550,9535,9519,
+9504,9488,9473,9457,9442,9426,9410,9394,9378,9363,9347,9331,9315,9299,9283,9267,9251,9235,9219,9203,
+9186,9171,9155,9138,9122,9106,9091,9075,9059,9043,9027,9012,8996,8981,8966,8950,8935,8920,8905,8890,
+8875,8861,8847,8832,8818,8804,8791,8777,8764,8750,8737,8725,8712,8700,8688,8676,8664,8653,8642,8631,
+8621,8610,8600,8591,8581,8572,8563,8555,8546,8538,8531,8524,8517,8510,8504,8498,8492,8487,8482,8478,
+8474,8470,8466,8463,8461,8458,8456,8455,8454,8453,8452,8452,8453,8453,8454,8456,8458,8460,8462,8465,
+8468,8472,8476,8480,8485,8490,8495,8501,8507,8513,8520,8527,8534,8542,8550,8558,8567,8576,8585,8594,
+8604,8614,8624,8635,8646,8657,8668,8679,8691,8703,8715,8727,8739,8752,8765,8778,8791,8804,8818,8832,
+8845,8859,8873,8887,8901,8916,8930,8944,8959,8973,8988,9002,9017,9031,9046,9060,9075,9090,9104,9119,
+9133,9148,9162,9176,9191,9205,9219,9233,9247,9261,9275,9288,9302,9315,9329,9342,9355,9367,9380,9393,
+9405,9417,9429,9441,9453,9465,9476,9487,9498,9509,9519,9530,9540,9550,9560,9569,9579,9588,9597,9606,
+9614,9623,9631,9639,9647,9654,9661,9668,9675,9682,9688,9695,9701,9707,9712,9718,9723,9728,9733,9738,
+9742,9746,9750,9754,9758,9762,9765,9768,9771,9774,9777,9779,9782,9784,9786,9788,9789,9791,9792,9794,
+9795,9796,9797,9797,9798,9798,9799,9799,9799,9799,9799,9799,9799,9798,9798,9797,9797,9796,9795,9794,
+9793,9792,9791,9789,9788,9787,9785,9784,9782,9780,9779,9777,9775,9773,9771,9769,9767,9765,9762,9760,
+9758,9755,9753,9750,9748,9745,9743,9740,9737,9734,9732,9729,9726,9723,9720,9717,9713,9710,9707,9704,
+9700,9697,9693,9690,9686,9683,9679,9675,9671,9667,9664,9660,9656,9651,9647,9643,9639,9634,9630,9625,
+9621,9616,9612,9607,9602,9597,9592,9587,9582,9577,9572,9567,9562,9556,9551,9545,9540,9534,9529,9523,
+9517,9511,9505,9500,9494,9488,9481,9475,9469,9463,9457,9450,9444,9438,9431,9425,9419,9412,9406,9399,
+9393,9386,9380,9373,9366,9360,9353,9347,9340,9333,9327,9320,9314,9307,9301,9294,9288,9281,9275,9268,
+9262,9256,9249,9243,9237,9231,9225,9219,9213,9207,9202,9196,9190,9185,9180,9174,9169,9164,9159,9154,
+9149,9144,9140,9135,9131,9126,9122,9118,9114,9110,9106,9103,9099,9096,9093,9090,9087,9084,9081,9079,
+9076,9074,9072,9070,9068,9066,9064,9063,9061,9060,9059,9058,9057,9056,9055,9055,9055,9054,9054,9054,
+9054,9054,9054,9055,9055,9056,9056,9057,9058,9059,9060,9061,
 };

+ 36 - 7
Applications/foc/motor/motor.c

@@ -131,6 +131,25 @@ bool mc_stop(void) {
 	return true;
 }
 
+bool mc_set_foc_mode(u8 mode) {
+	if (mode == motor.mode) {
+		return true;
+	}
+	if (!motor.b_start) {
+		return false;
+	}
+	u32 mask = cpu_enter_critical();
+	bool ret = false;
+	if (PMSM_FOC_SetCtrlMode(mode)) {
+		motor.mode = mode;
+		PMSM_FOC_Start(motor.mode);
+		pwm_enable_channel();
+		ret = true;
+	}
+	cpu_exit_critical(mask);
+	return ret;
+}
+
 void mc_set_spd_torque(s32 target) {
 	motor.b_ignor_throttle = true;
 	motor.s_targetFix = target;
@@ -145,6 +164,7 @@ void mc_encoder_off_calibrate(s16 vd) {
 	if (PMSM_FOC_Is_Start()) {
 		return;
 	}
+	motor.b_calibrate = true;
 	pwm_turn_on_low_side();
 	task_udelay(500);
 	PMSM_FOC_Start(CTRL_MODE_OPEN);
@@ -156,24 +176,28 @@ void mc_encoder_off_calibrate(s16 vd) {
 	PMSM_FOC_SetOpenVdq(vd, 0);
 	delay_ms(2000);
 	motor_encoder_set_direction(POSITIVE);
-	for (int i = 0; i < 1000000; i++) {
+	for (int i = 0; i < 100000; i++) {
 		for (float angle = 0; angle < 360; angle++) {
 			PMSM_FOC_Set_Angle(angle);
 			delay_ms(2);
-			motor_encoder_offset(angle);
+			if (i > 10) {
+				motor_encoder_offset(angle);
+			}
 		}
 		wdog_reload();
 		if (motor_encoder_offset_is_finish()) {
 			break;
 		}
 	}
-	delay_ms(500);
 	motor_encoder_set_direction(NEGATIVE);
-	for (int i = 0; i < 1000000; i++) {
-		for (float angle = 359; angle >= 0; angle--) {
+	delay_ms(100);
+	for (int i = 0; i < 100000; i++) {
+		for (float angle = 360; angle > 0; angle--) {
 			PMSM_FOC_Set_Angle(angle);
 			delay_ms(2);
-			motor_encoder_offset(angle);
+			if (i > 10) {
+				motor_encoder_offset(angle);
+			}
 		}
 		wdog_reload();
 		if (motor_encoder_offset_is_finish()) {
@@ -187,13 +211,14 @@ void mc_encoder_off_calibrate(s16 vd) {
 	adc_stop_convert();
 	pwm_stop();
 	PMSM_FOC_Stop();
-	
+	motor.b_calibrate = false;
 }
 
 bool mc_encoder_zero_calibrate(s16 vd) {
 	if (PMSM_FOC_Is_Start()) {
 		return false;
 	}
+	motor.b_calibrate = true;
 	pwm_turn_on_low_side();
 	task_udelay(500);
 	PMSM_FOC_Start(CTRL_MODE_OPEN);
@@ -211,6 +236,7 @@ bool mc_encoder_zero_calibrate(s16 vd) {
 	adc_stop_convert();
 	pwm_stop();
 	PMSM_FOC_Stop();
+	motor.b_calibrate = false;
 	if (phase != INVALID_ANGLE) {
 		nv_save_angle_offset(phase);
 		return true;
@@ -356,6 +382,9 @@ void Sched_MC_mTask(void) {
 	_debug_angle();
 #endif
 	PMSM_FOC_Calc_iDC();
+	if (motor.b_calibrate || (motor.mode == CTRL_MODE_OPEN)) {
+		return;
+	}
 	if ((runMode != CTRL_MODE_OPEN) || (motor.mode != CTRL_MODE_OPEN)) {
 		if (motor.mode != CTRL_MODE_OPEN) {
 			u32 mask;

+ 2 - 0
Applications/foc/motor/motor.h

@@ -9,6 +9,7 @@ typedef struct {
 	bool   b_start;
 	float  throttle;
 	bool   b_ignor_throttle;
+	bool   b_calibrate;
 	s16    s_testAngle;
 	s32    s_targetFix;
 	s8     s_direction;
@@ -26,6 +27,7 @@ void mc_set_spd_torque(s32 target);
 void mc_use_throttle(void);
 bool mc_current_sensor_calibrate(float current);
 bool mc_encoder_zero_calibrate(s16 vd);
+bool mc_set_foc_mode(u8 mode);
 
 static __INLINE float motor_encoder_get_angle(void) {
 #ifdef USE_ENCODER_HALL

+ 13 - 0
Applications/prot/can_foc_msg.c

@@ -2,6 +2,7 @@
 #include "prot/can_message.h"
 #include "prot/can_foc_msg.h"
 #include "foc/commands.h"
+#include "foc/core/PMSM_FOC_Core.h"
 
 void can_report_speed(u8 can, s16 rpm) {
 	u8 data[6];
@@ -56,3 +57,15 @@ void can_response_hall_offset(u8 can, int offset) {
 	encode_u32(data + 3, offset);
 	can_send_message(get_indicator_can_id(can), data, sizeof(data), 0);
 }
+
+void can_report_pid_value(u8 can, u8 id) {
+	float kp, ki, kb;
+	PMSM_FOC_GetPid(id, &kp, &ki, &kb);
+	u8 data[15];
+	encoder_can_key(data, CMD_2_CAN_KEY(Foc_Report_Pid));
+	data[2] = id;
+	encode_float(data + 3, kp);
+	encode_float(data + 7, ki);
+	encode_float(data + 11, kb);
+	can_send_message(get_indicator_can_id(can), data, sizeof(data), 0);
+}

+ 1 - 0
Applications/prot/can_foc_msg.h

@@ -8,6 +8,7 @@ void can_report_phase_voltage(u8 can, float vA, float vB, float vC);
 void can_report_dq_current(u8 can, float id, float iq);
 void can_response_hall_offset(u8 can, int offset);
 void can_report_power(u8 can, s16 rpm, float vDC, float iDC);
+void can_report_pid_value(u8 can, u8 id);
 
 #endif	/*_Can_Foc_Msg_H__ */
 

+ 0 - 4
Project/MC100.uvoptx

@@ -117,10 +117,6 @@
         <pMon>Segger\JL2CM3.dll</pMon>
       </DebugOpt>
       <TargetDriverDllRegistry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>DLGUARM</Key>
-        </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
           <Key>ARMRTXEVENTFLAGS</Key>

BIN
Simulink/FOC.slx.autosave


+ 26 - 0
Simulink/Fir_angle2 _1.m

@@ -0,0 +1,26 @@
+function Hd = Fir_angle2
+%FIR_ANGLE2 返回离散时间滤波器对象。
+
+% MATLAB Code
+% Generated by MATLAB(R) 9.9 and Signal Processing Toolbox 8.5.
+% Generated on: 18-Oct-2022 11:51:46
+
+% Equiripple Lowpass filter designed using the FIRPM function.
+
+% All frequency values are in Hz.
+Fs = 500;  % Sampling Frequency
+
+Fpass = 1;               % Passband Frequency
+Fstop = 5;               % Stopband Frequency
+Dpass = 0.057501127785;  % Passband Ripple
+Dstop = 0.0001;          % Stopband Attenuation
+dens  = 20;              % Density Factor
+
+% Calculate the order from the parameters using FIRPMORD.
+[N, Fo, Ao, W] = firpmord([Fpass, Fstop]/(Fs/2), [1 0], [Dpass, Dstop]);
+
+% Calculate the coefficients using the FIRPM function.
+b  = firpm(N, Fo, Ao, W, {dens});
+Hd = dfilt.dffir(b);
+
+% [EOF]

+ 6 - 6
Simulink/Fir_angle2.m

@@ -3,18 +3,18 @@ function Hd = Fir_angle2
 
 % MATLAB Code
 % Generated by MATLAB(R) 9.9 and DSP System Toolbox 9.11.
-% Generated on: 15-Oct-2022 15:21:25
+% Generated on: 19-Oct-2022 15:26:02
 
 % Equiripple Lowpass filter designed using the FIRPM function.
 
 % All frequency values are in Hz.
 Fs = 500;  % Sampling Frequency
 
-Fpass = 1;                 % Passband Frequency
-Fstop = 5;                 % Stopband Frequency
-Dpass = 5.7564627261e-05;  % Passband Ripple
-Dstop = 0.0001;            % Stopband Attenuation
-dens  = 20;                % Density Factor
+Fpass = 1;                % Passband Frequency
+Fstop = 4;                % Stopband Frequency
+Dpass = 0.0057563991496;  % Passband Ripple
+Dstop = 0.0001;           % Stopband Attenuation
+dens  = 20;               % Density Factor
 
 % Calculate the order from the parameters using FIRPMORD.
 [N, Fo, Ao, W] = firpmord([Fpass, Fstop]/(Fs/2), [1 0], [Dpass, Dstop]);

+ 3069 - 3069
Simulink/angle2.csv

@@ -1,3072 +1,3072 @@
-2334 
-2329 
-2290 
-2284 
-2307 
-2332 
-2343 
-2370 
-2418 
-2465 
-2478 
-2491 
-2527 
-2542 
-2549 
-2512 
-2504 
-2504 
-2475 
-2454 
-2428 
-2401 
-2365 
-2343 
-2345 
-2350 
-2326 
-2312 
-2330 
-2327 
-2326 
-2314 
-2306 
-2312 
-2322 
-2322 
-2335 
-2331 
-2338 
-2373 
-2407 
-2460 
-2502 
-2543 
-2592 
-2635 
-2688 
-2721 
-2736 
-2744 
-2726 
-2718 
-2706 
-2709 
-2701 
-2678 
-2658 
-2658 
-2662 
-2664 
-2650 
-2620 
-2596 
-2574 
-2545 
-2515 
-2484 
-2449 
-2408 
-2370 
-2349 
-2329 
-2302 
-2294 
-2317 
-2333 
-2349 
-2368 
-2402 
-2420 
-2442 
-2455 
-2466 
-2464 
-2444 
-2407 
-2403 
-2388 
-2346 
-2305 
-2295 
-2296 
-2284 
-2277 
-2292 
-2300 
-2307 
-2321 
-2356 
-2371 
-2375 
-2380 
-2387 
-2405 
-2398 
-2393 
-2425 
-2420 
-2436 
-2478 
-2533 
-2578 
-2625 
-2668 
-2733 
-2791 
-2810 
-2848 
-2880 
-2895 
-2873 
-2873 
-2901 
-2935 
-2911 
-2920 
-2947 
-2945 
-2955 
-2952 
-2957 
-2924 
-2891 
-2894 
-2885 
-2845 
-2764 
-2735 
-2748 
-2675 
-2626 
-2630 
-2632 
-2639 
-2645 
-2676 
-2718 
-2739 
-2749 
-2773 
-2811 
-2813 
-2768 
-2763 
-2752 
-2715 
-2661 
-2624 
-2623 
-2578 
-2554 
-2542 
-2524 
-2469 
-2406 
-2392 
-2384 
-2365 
-2330 
-2288 
-2290 
-2260 
-2243 
-2219 
-2197 
-2202 
-2200 
-2244 
-2832 
-2536 
-2464 
-2488 
-2524 
-2509 
-2558 
-2541 
-2509 
-2537 
-2477 
-2466 
-2459 
-2430 
-2430 
-2409 
-2431 
-2432 
-2404 
-2407 
-2405 
-2429 
-2394 
-2401 
-2366 
-2348 
-2333 
-2303 
-2304 
-2297 
-2279 
-2294 
-2321 
-2362 
-2374 
-2396 
-2428 
-2473 
-2487 
-2490 
-2491 
-2496 
-2469 
-2425 
-2418 
-2403 
-2376 
-2306 
-2306 
-2323 
-2304 
-2256 
-2257 
-2274 
-2247 
-2223 
-2229 
-2258 
-2227 
-2189 
-2209 
-2246 
-2233 
-2177 
-2213 
-2261 
-2287 
-2294 
-2345 
-2408 
-2450 
-2463 
-2494 
-2558 
-2576 
-2538 
-2537 
-2577 
-2550 
-2512 
-2521 
-2538 
-2521 
-2478 
-2488 
-2501 
-2499 
-2414 
-2386 
-2391 
-2359 
-2288 
-2250 
-2218 
-2186 
-2098 
-2065 
-2072 
-2040 
-2007 
-2033 
-2077 
-2081 
-2069 
-2097 
-2156 
-2177 
-2145 
-2169 
-2188 
-2163 
-2105 
-2104 
-2105 
-2084 
-2011 
-2018 
-2034 
-2039 
-1994 
-2007 
-2032 
-2034 
-2033 
-2054 
-2078 
-2071 
-2028 
-2053 
-2085 
-2053 
-2036 
-2052 
-2107 
-2123 
-2158 
-2205 
-2275 
-2308 
-2339 
-2389 
-2457 
-2479 
-2462 
-2457 
-2477 
-2480 
-2468 
-2471 
-2496 
-2476 
-2461 
-2477 
-2483 
-2453 
-2419 
-2403 
-2405 
-2365 
-2318 
-2286 
-2246 
-2189 
-2135 
-2147 
-2123 
-2106 
-2108 
-2146 
-2180 
-2203 
-2206 
-2246 
-2283 
-2272 
-2263 
-2269 
-2239 
-2204 
-2150 
-2133 
-2097 
-2038 
-1972 
-1954 
-1946 
-1926 
-1869 
-1844 
-1827 
-1800 
-1775 
-1740 
-1763 
-1693 
-1691 
-1694 
-1687 
-1573 
-1605 
-1524 
+1150 
+1179 
+1201 
+1177 
+1080 
+1091 
+1149 
+1148 
+1133 
+1109 
+1111 
+1133 
+1059 
+1039 
+1082 
+1086 
+1039 
+1060 
+1068 
+1089 
+1037 
+977 
+1039 
+1042 
+968 
+966 
+1020 
+1046 
+1002 
+997 
+1073 
+1076 
+1056 
+1081 
+1144 
+1152 
+1109 
+1121 
+1179 
+1205 
+1203 
+1147 
+1182 
+1208 
+1184 
+1214 
+1253 
+1261 
+1277 
+1285 
+1366 
+1364 
+1317 
+1266 
+1342 
+1330 
+1315 
+1296 
+1299 
+1280 
+1218 
+1272 
+1257 
+1274 
+1218 
+1211 
+1251 
+1277 
+1216 
+1273 
+1267 
+1280 
+1306 
+1332 
+1357 
+1383 
+1390 
+1335 
+1391 
+1386 
+1362 
+1338 
+1364 
+1339 
+1265 
+1250 
+1298 
+1251 
+1245 
+1244 
+1270 
+1246 
+1180 
+1169 
+1163 
+1112 
+1075 
+1113 
+1130 
+1102 
+1078 
+1053 
+1056 
+1055 
+1031 
+1007 
+1050 
+1017 
+984 
+1037 
+1039 
+1111 
+1087 
+1113 
+1189 
+1227 
+1203 
+1225 
+1292 
+1267 
+1243 
+1237 
+1258 
+1248 
+1196 
+1222 
+1198 
+1178 
+1177 
+1179 
+1237 
+1227 
+1203 
+1178 
+1249 
+1230 
+1196 
+1182 
+1252 
+1233 
+1209 
+1257 
+1273 
+1267 
+1175 
+1188 
+1214 
+1175 
+1160 
+1141 
+1167 
+1164 
+1140 
+1166 
+1174 
+1246 
+1171 
+1187 
+1218 
+1249 
+1215 
+1186 
+1235 
+1202 
+1159 
+1153 
+1129 
+1155 
+1071 
+1093 
+1141 
+1148 
+1129 
+1110 
 1135 
-1832 
-1871 
-1921 
-1977 
-2015 
-2026 
-2068 
-2109 
-2079 
-2041 
-2061 
-2087 
-2065 
-2021 
-2011 
-2030 
-2036 
-2035 
-2046 
-2064 
-2050 
-2045 
-2062 
-2094 
-2071 
-2016 
-2015 
-2028 
-2018 
-1975 
-1989 
-1997 
-2003 
-2020 
-2067 
-2110 
-2130 
-2147 
-2181 
-2232 
-2249 
-2251 
-2250 
-2241 
-2210 
-2169 
-2160 
-2183 
-2156 
-2117 
-2114 
-2133 
-2109 
-2077 
-2080 
-2106 
-2089 
-2066 
-2072 
-2076 
-2060 
-2026 
-2037 
-2072 
-2068 
-2030 
-2050 
-2086 
-2116 
-2130 
-2185 
-2252 
-2293 
-2309 
-2357 
-2412 
-2456 
-2434 
-2394 
-2425 
-2438 
-2416 
-2421 
-2453 
-2444 
-2423 
-2436 
-2450 
-2452 
-2373 
-2355 
-2359 
-2310 
-2242 
-2203 
-2184 
-2115 
-2055 
-2037 
-2005 
-1974 
-1953 
-1973 
-2005 
-2008 
-2020 
-2041 
-2096 
-2086 
-2093 
-2089 
-2112 
-2078 
-2044 
-2051 
-2062 
-2003 
-1977 
-1959 
-1960 
-1947 
-1920 
-1922 
-1939 
-1919 
-1939 
-1962 
-1971 
-1959 
-1933 
-1960 
-1990 
-1962 
-1941 
-1956 
-1994 
-2034 
-2069 
-2109 
-2173 
-2218 
-2256 
-2307 
-2358 
-2374 
-2355 
-2353 
-2361 
-2367 
-2376 
-2379 
-2377 
-2345 
-2340 
-2354 
-2355 
-2322 
-2306 
-2303 
-2287 
-2272 
-2249 
-2215 
-2203 
-2153 
-2149 
-2132 
-2124 
-2106 
-2119 
-2139 
-2171 
-2183 
-2217 
-2250 
-2271 
-2291 
-2310 
-2323 
-2312 
-2255 
-2253 
-2208 
-2200 
-2145 
-2106 
-2074 
-2044 
-2032 
-2008 
-1976 
-1940 
-1936 
-1931 
-1923 
-1903 
-1895 
-1880 
-1876 
-1889 
-1879 
-1848 
-1851 
-1860 
-1905 
-1943 
-1971 
-2009 
-2065 
-2100 
-2117 
-2170 
-2191 
-2183 
-2177 
-2180 
-2198 
-2196 
-2183 
-2159 
-2164 
-2176 
-2161 
-2189 
-2198 
-2204 
-2188 
-2205 
-2233 
-2234 
-2207 
-2182 
-2185 
-2175 
-2138 
-2137 
-2119 
-2134 
-2119 
-2144 
-2194 
-2229 
-2242 
-2265 
-2319 
-2354 
-2358 
-2375 
-2393 
-2363 
-2336 
-2326 
-2338 
-2315 
-2275 
-2250 
-2282 
-2271 
-2230 
-2229 
-2239 
-2245 
-2197 
-2208 
-2207 
-2184 
-2126 
-2124 
-2150 
-2132 
-2078 
-2087 
-2131 
-2154 
-2176 
-2222 
-2286 
-2317 
-2351 
-2393 
-2441 
-2472 
-2425 
-2392 
-2431 
-2426 
-2402 
-2386 
-2390 
-2379 
-2351 
-2343 
-2346 
-2306 
-2252 
-2197 
-2201 
-2143 
-2065 
-2005 
-1971 
-1925 
-1887 
-1845 
-1806 
-1804 
-1794 
-1818 
-1845 
-1856 
-1870 
-1886 
-1905 
-1933 
-1902 
-1886 
-1859 
-1843 
-1791 
-1766 
-1708 
-1695 
-1667 
-1641 
-1635 
-1654 
-1635 
-1635 
-1657 
-1687 
-1689 
-1670 
-1670 
-1687 
-1708 
-1686 
-1681 
-1717 
-1736 
-1758 
-1810 
-1865 
-1915 
-1947 
-1993 
-2056 
-2076 
-2095 
-2119 
-2131 
-2113 
-2088 
-2113 
-2112 
-2115 
-2079 
-2089 
-2117 
-2124 
-2081 
-2081 
-2079 
-2067 
-2022 
-1999 
-2001 
-1955 
-1911 
-1908 
-1903 
-1868 
-1847 
-1845 
-1894 
-1894 
-1909 
-1936 
-1980 
-2000 
-1989 
-2015 
-2042 
-2032 
-1987 
-1970 
-1966 
-1928 
-1878 
-1854 
-1839 
-1817 
-1788 
-1771 
-1777 
-1720 
-1681 
-1684 
-1684 
-1669 
-1649 
-1620 
-1604 
-1607 
-1597 
-1581 
-1559 
-1552 
-1598 
-1620 
-1665 
-1698 
-1740 
-1786 
-1826 
-1873 
-1893 
-1910 
-1918 
-1909 
-1919 
-1933 
-1936 
-1929 
-1920 
-1927 
-1942 
-1964 
-1952 
-1962 
-1958 
-1984 
-1991 
-1967 
-1954 
-1945 
-1926 
-1906 
-1881 
-1862 
-1843 
-1846 
-1841 
-1873 
-1903 
-1932 
-1964 
-1994 
-2031 
-2054 
-2076 
-2090 
-2086 
-2074 
-2047 
-2043 
-2027 
-2000 
-1971 
-1947 
-1943 
-1937 
-1920 
-1906 
-1879 
-1876 
-1880 
-1860 
-1858 
-1817 
-1801 
-1798 
-1791 
-1803 
-1778 
-1782 
-1805 
-1848 
-1879 
-1924 
-1961 
-2017 
-2059 
-2096 
-2125 
-2149 
-2144 
-2117 
-2103 
-2102 
-2095 
-2079 
-2047 
-2039 
-2040 
-2033 
-2027 
-2020 
-1982 
-1919 
-1915 
-1892 
-1843 
-1801 
-1764 
-1742 
-1711 
-1682 
-1656 
-1649 
-1656 
-1666 
-1688 
-1712 
-1737 
-1759 
-1776 
-1804 
-1837 
-1819 
-1802 
-1787 
-1760 
-1728 
-1711 
-1657 
-1663 
-1629 
-1627 
-1619 
-1626 
-1625 
-1619 
-1643 
-1691 
-1693 
-1703 
-1724 
-1738 
-1740 
-1747 
-1761 
-1789 
-1784 
-1803 
-1846 
-1900 
-1946 
-1986 
-2047 
-2108 
-2154 
-2185 
-2226 
-2267 
-2280 
-2273 
-2265 
-2282 
-2307 
-2311 
-2303 
-2323 
-2331 
-2344 
-2353 
-2355 
-2340 
-2338 
-2328 
-2324 
-2326 
-2283 
-2248 
-2240 
-2207 
-2200 
-2170 
-2165 
-2143 
-2142 
-2175 
-2206 
-2246 
-2272 
-2294 
-2309 
-2362 
-2376 
-2390 
-2390 
-2363 
-2349 
-2348 
-2326 
-2302 
-2282 
-2259 
-2238 
-2243 
-2235 
-2208 
-2174 
-2145 
-2145 
-2145 
-2125 
-2095 
-2080 
-2082 
-2062 
-2055 
-2033 
-2028 
-2017 
-2036 
-2077 
-2126 
-2159 
-2183 
-2236 
-2296 
-2334 
-2339 
-2364 
-2386 
-2404 
-2401 
-2400 
-2429 
-2420 
-2383 
-2374 
-2405 
-2424 
-2417 
-2418 
-2425 
-2440 
-2407 
-2407 
-2415 
-2398 
-2367 
-2345 
-2334 
-2329 
-2290 
-2284 
-2307 
-2332 
-2343 
-2370 
-2418 
-2465 
-2478 
-2491 
-2527 
-2542 
-2549 
-2512 
-2504 
-2504 
-2475 
-2454 
-2428 
-2401 
-2365 
-2343 
-2345 
-2350 
-2326 
-2312 
-2330 
-2327 
-2326 
-2314 
-2306 
-2312 
-2322 
-2322 
-2335 
-2331 
-2338 
-2373 
-2407 
-2460 
-2502 
-2543 
-2592 
-2635 
-2688 
-2721 
-2736 
-2744 
-2726 
-2718 
-2706 
-2709 
-2701 
-2678 
-2658 
-2658 
-2662 
-2664 
-2650 
-2620 
-2596 
-2574 
-2545 
-2515 
-2484 
-2449 
-2408 
-2370 
-2349 
-2329 
-2302 
-2294 
-2317 
-2333 
-2349 
-2368 
-2402 
-2420 
-2442 
-2455 
-2466 
-2464 
-2444 
-2407 
-2403 
-2388 
-2346 
-2305 
-2295 
-2296 
-2284 
-2277 
-2292 
-2300 
-2307 
-2321 
-2356 
-2371 
-2375 
-2380 
-2387 
-2405 
-2398 
-2393 
-2425 
-2420 
-2436 
-2478 
-2533 
-2578 
-2625 
-2668 
-2733 
-2791 
-2810 
-2848 
-2880 
-2895 
-2873 
-2873 
-2901 
-2935 
-2911 
-2920 
-2947 
-2945 
-2955 
-2952 
-2957 
-2924 
-2891 
-2894 
-2885 
-2845 
-2764 
-2735 
-2748 
-2675 
-2626 
-2630 
-2632 
-2639 
-2645 
-2676 
-2718 
-2739 
-2749 
-2773 
-2811 
-2813 
-2768 
-2763 
-2752 
-2715 
-2661 
-2624 
-2623 
-2578 
-2554 
-2542 
-2524 
-2469 
-2406 
-2392 
-2384 
-2365 
-2330 
-2288 
-2290 
-2260 
-2243 
-2219 
-2197 
-2202 
-2200 
-2244 
-2832 
-2536 
-2464 
-2488 
-2524 
-2509 
-2558 
-2541 
-2509 
-2537 
-2477 
-2466 
-2459 
-2430 
-2430 
-2409 
-2431 
-2432 
-2404 
-2407 
-2405 
-2429 
-2394 
-2401 
-2366 
-2348 
-2333 
-2303 
-2304 
-2297 
-2279 
-2294 
-2321 
-2362 
-2374 
-2396 
-2428 
-2473 
-2487 
-2490 
-2491 
-2496 
-2469 
-2425 
-2418 
-2403 
-2376 
-2306 
-2306 
-2323 
-2304 
-2256 
-2257 
-2274 
-2247 
-2223 
-2229 
-2258 
-2227 
-2189 
-2209 
-2246 
-2233 
-2177 
-2213 
-2261 
-2287 
-2294 
-2345 
-2408 
-2450 
-2463 
-2494 
-2558 
-2576 
-2538 
-2537 
-2577 
-2550 
-2512 
-2521 
-2538 
-2521 
-2478 
-2488 
-2501 
-2499 
-2414 
-2386 
-2391 
-2359 
-2288 
-2250 
-2218 
-2186 
-2098 
-2065 
-2072 
-2040 
-2007 
-2033 
-2077 
-2081 
-2069 
-2097 
-2156 
-2177 
-2145 
-2169 
-2188 
-2163 
-2105 
-2104 
-2105 
-2084 
-2011 
-2018 
-2034 
-2039 
-1994 
-2007 
-2032 
-2034 
-2033 
-2054 
-2078 
-2071 
-2028 
-2053 
-2085 
-2053 
-2036 
-2052 
-2107 
-2123 
-2158 
-2205 
-2275 
-2308 
-2339 
-2389 
-2457 
-2479 
-2462 
-2457 
-2477 
-2480 
-2468 
-2471 
-2496 
-2476 
-2461 
-2477 
-2483 
-2453 
-2419 
-2403 
-2405 
-2365 
-2318 
-2286 
-2246 
-2189 
-2135 
-2147 
-2123 
-2106 
-2108 
-2146 
-2180 
-2203 
-2206 
-2246 
-2283 
-2272 
-2263 
-2269 
-2239 
-2204 
-2150 
-2133 
-2097 
-2038 
-1972 
-1954 
-1946 
-1926 
-1869 
-1844 
-1827 
-1800 
-1775 
-1740 
-1763 
-1693 
-1691 
-1694 
-1687 
-1573 
-1605 
-1524 
+1138 
+1132 
+1153 
+1189 
+1214 
+1140 
+1166 
+1228 
+1217 
+1193 
+1191 
+1208 
+1198 
+1100 
+1122 
+1148 
+1155 
+1100 
+1034 
+1087 
+1045 
+1016 
+1028 
+1008 
+1030 
+956 
+1032 
+1057 
+1060 
+1022 
+1035 
+1010 
+1022 
+962 
+938 
+905 
+889 
+865 
+823 
+831 
+892 
+818 
+844 
+870 
+887 
+871 
+870 
+873 
+867 
+875 
+850 
+876 
+852 
+828 
+812 
+829 
+832 
+831 
+807 
+872 
+858 
+884 
+860 
+885 
+906 
+910 
+963 
+966 
+1014 
+1063 
+1066 
+1042 
+1085 
+1093 
+1078 
+1095 
+1080 
+1146 
+1122 
+1075 
+1124 
+1122 
+1125 
+1105 
+1127 
+1116 
+1123 
+1076 
+1080 
+1083 
+1082 
+1057 
+1092 
+1077 
+1085 
+1060 
+1067 
+1043 
+1038 
+1091 
+1048 
+1088 
+1046 
+1053 
+1042 
+1059 
+1039 
+1052 
+1046 
+1052 
+1078 
+1073 
+1085 
+1075 
+1077 
+1076 
+1088 
+1068 
+1030 
+1060 
+1005 
+1012 
+961 
+954 
+917 
+934 
+910 
+894 
+892 
+837 
+818 
+839 
+882 
+899 
+875 
+942 
+917 
+893 
+819 
+850 
+871 
+869 
+881 
+898 
+888 
+900 
+920 
+946 
+977 
+930 
+941 
+954 
+930 
+956 
+932 
+920 
+937 
+940 
+935 
+960 
+909 
+871 
+897 
+878 
+889 
+865 
+868 
+867 
+842 
+854 
+830 
+834 
+796 
+771 
+842 
+823 
+799 
+779 
+800 
+853 
+802 
+778 
+780 
+770 
+728 
+731 
+743 
+782 
+758 
+734 
+760 
+753 
+761 
+737 
+786 
+789 
+778 
+758 
+816 
+842 
+822 
+838 
+887 
+890 
+826 
+828 
+872 
+871 
+824 
+840 
+911 
+883 
+918 
+916 
+928 
+954 
+880 
+883 
+882 
+934 
+883 
+890 
+866 
+832 
+813 
+812 
+828 
+864 
+789 
+765 
+805 
+772 
+742 
+718 
+744 
+770 
+746 
+753 
+752 
+773 
+758 
+775 
+750 
+794 
+752 
+737 
+753 
+779 
+723 
+681 
+707 
+682 
+658 
+684 
+719 
+735 
+693 
+687 
+713 
+739 
+714 
+690 
+766 
+787 
+717 
+716 
+769 
+795 
+794 
+796 
+822 
+848 
+824 
+868 
+925 
+951 
+918 
+953 
+1000 
+1004 
+1012 
+1024 
+1082 
+1097 
+1033 
+1059 
+1107 
+1110 
+1086 
+1112 
+1138 
+1114 
+1089 
+1078 
+1141 
+1167 
+1092 
+1099 
+1130 
+1120 
+1073 
+1075 
+1147 
+1132 
+1144 
+1175 
+1168 
+1176 
+1161 
+1078 
+1075 
+1079 
+1055 
+1026 
+1021 
+996 
+990 
+984 
+1010 
+985 
+1011 
+1037 
+1044 
+1039 
+1064 
+1012 
+975 
+992 
+926 
+933 
+919 
+945 
+907 
+846 
+881 
+898 
+824 
+877 
+875 
+878 
+886 
+866 
+878 
+913 
+862 
+865 
+909 
+939 
+933 
+900 
+894 
+960 
+936 
+862 
+888 
+900 
+889 
+824 
+841 
+867 
+855 
+827 
+844 
+920 
+923 
+871 
+906 
+928 
+949 
+938 
+950 
+1003 
+988 
+928 
+953 
+956 
+905 
+867 
+907 
+896 
+908 
+866 
+878 
+890 
+961 
+887 
+863 
+843 
+845 
+790 
+816 
+842 
+885 
+870 
+869 
+904 
+921 
+896 
+908 
+929 
+937 
+909 
+925 
+1001 
+977 
+953 
+1023 
+1126 
+1130 
+1065 
+1132 
+1220 
+1238 
+1209 
+1235 
+1237 
+1263 
+1112 
+1138 
+1177 
+1148 
+1065 
+1045 
+1067 
+1087 
+968 
+1007 
+1056 
+1023 
+971 
+983 
+1004 
+976 
+929 
+950 
+962 
+911 
+860 
+853 
+829 
+819 
+781 
+707 
+782 
+808 
+757 
+755 
+785 
+802 
+769 
+804 
+844 
+855 
+799 
+816 
+842 
+857 
+811 
+832 
+845 
+921 
+896 
+922 
+948 
+974 
+913 
+938 
+951 
+977 
+953 
+878 
+904 
+930 
+924 
+932 
+975 
+965 
+941 
+985 
+969 
+986 
+962 
+983 
+991 
+1039 
+983 
+1014 
+1067 
+1042 
+1068 
+1066 
+1047 
+1096 
+1075 
+1097 
+1073 
+1094 
+1075 
+1050 
+1076 
+1052 
+1078 
+1048 
+983 
+991 
+981 
+975 
+982 
+958 
+966 
+955 
+976 
+961 
+987 
+963 
+939 
+969 
+981 
+925 
+928 
+917 
+943 
+919 
+899 
+871 
+818 
+794 
+798 
+819 
+813 
+793 
+782 
+777 
+758 
+737 
+727 
+730 
+756 
+737 
+757 
+783 
+791 
+762 
+760 
+781 
+762 
+783 
+764 
+753 
+765 
+741 
+767 
+769 
+804 
+835 
+806 
+819 
+816 
+788 
+805 
+799 
+811 
+804 
+816 
+802 
+805 
+803 
+824 
+855 
+849 
+857 
+882 
+858 
+870 
+846 
+885 
+866 
+846 
+913 
+939 
+919 
+940 
+948 
+992 
+967 
+961 
+937 
+945 
+921 
+946 
+931 
+911 
+874 
+900 
+875 
+901 
+913 
+925 
+955 
+913 
+911 
+906 
+909 
+947 
+919 
+886 
+885 
+910 
+904 
+912 
+938 
+896 
+930 
+965 
+950 
+1017 
+992 
+1009 
+1030 
+1025 
+1046 
+1071 
+1137 
+1113 
+1099 
+1125 
+1100 
+1076 
+1102 
+1078 
+1103 
+1079 
+1073 
+1081 
+1057 
+1032 
+1058 
+1034 
+1060 
+985 
+965 
+946 
+958 
+921 
+937 
+922 
+957 
+915 
+912 
+875 
+860 
+845 
+816 
+814 
+799 
+798 
+774 
+813 
+807 
+851 
+813 
+853 
+878 
+840 
+848 
+856 
+841 
+838 
+855 
+854 
+848 
+851 
+836 
+844 
+815 
+778 
+839 
+815 
+841 
+817 
+815 
+863 
+867 
+870 
+846 
+871 
+911 
+923 
+908 
+943 
+945 
+976 
+997 
+978 
+962 
+910 
+932 
+931 
+957 
+922 
+953 
+934 
+910 
+939 
+951 
+937 
+917 
+939 
+1000 
+1003 
+966 
+942 
+1017 
+1011 
+1010 
+990 
+948 
+937 
+890 
+880 
+874 
+945 
+916 
+901 
+922 
+971 
+928 
+931 
+943 
+983 
+932 
+957 
+946 
+959 
+925 
+900 
+936 
+866 
+838 
+850 
+879 
+865 
+791 
+812 
+833 
+845 
+794 
+802 
+846 
+871 
+847 
+855 
+899 
+925 
+900 
+926 
+979 
+996 
+953 
+1015 
+1055 
+1035 
+1007 
+1022 
+1008 
+1002 
+973 
+989 
+1011 
+991 
+963 
+975 
+1018 
+990 
+975 
+1042 
+1062 
+1074 
+1041 
+1045 
+1071 
+1086 
+1045 
+1048 
+1088 
+1095 
+1075 
+1037 
+1077 
+1103 
+1078 
+1154 
+1180 
+1187 
+1182 
+1193 
+1223 
+1209 
+1185 
+1210 
+1254 
+1262 
+1283 
+1264 
+1289 
+1251 
+1191 
+1235 
+1205 
+1218 
+1221 
+1247 
+1214 
+1207 
+1206 
+1268 
+1299 
+1279 
+1300 
+1362 
+1374 
+1328 
+1303 
+1329 
+1305 
+1285 
+1357 
+1332 
+1312 
+1315 
+1319 
+1385 
+1388 
+1387 
+1413 
+1416 
+1441 
+1353 
+1356 
+1392 
+1367 
+1306 
+1309 
+1322 
+1271 
+1246 
+1222 
+1270 
+1246 
+1150 
+1179 
+1201 
+1177 
+1080 
+1091 
+1149 
+1148 
+1133 
+1109 
+1111 
+1133 
+1059 
+1039 
+1082 
+1086 
+1039 
+1060 
+1068 
+1089 
+1037 
+977 
+1039 
+1042 
+968 
+966 
+1020 
+1046 
+1002 
+997 
+1073 
+1076 
+1056 
+1081 
+1144 
+1152 
+1109 
+1121 
+1179 
+1205 
+1203 
+1147 
+1182 
+1208 
+1184 
+1214 
+1253 
+1261 
+1277 
+1285 
+1366 
+1364 
+1317 
+1266 
+1342 
+1330 
+1315 
+1296 
+1299 
+1280 
+1218 
+1272 
+1257 
+1274 
+1218 
+1211 
+1251 
+1277 
+1216 
+1273 
+1267 
+1280 
+1306 
+1332 
+1357 
+1383 
+1390 
+1335 
+1391 
+1386 
+1362 
+1338 
+1364 
+1339 
+1265 
+1250 
+1298 
+1251 
+1245 
+1244 
+1270 
+1246 
+1180 
+1169 
+1163 
+1112 
+1075 
+1113 
+1130 
+1102 
+1078 
+1053 
+1056 
+1055 
+1031 
+1007 
+1050 
+1017 
+984 
+1037 
+1039 
+1111 
+1087 
+1113 
+1189 
+1227 
+1203 
+1225 
+1292 
+1267 
+1243 
+1237 
+1258 
+1248 
+1196 
+1222 
+1198 
+1178 
+1177 
+1179 
+1237 
+1227 
+1203 
+1178 
+1249 
+1230 
+1196 
+1182 
+1252 
+1233 
+1209 
+1257 
+1273 
+1267 
+1175 
+1188 
+1214 
+1175 
+1160 
+1141 
+1167 
+1164 
+1140 
+1166 
+1174 
+1246 
+1171 
+1187 
+1218 
+1249 
+1215 
+1186 
+1235 
+1202 
+1159 
+1153 
+1129 
+1155 
+1071 
+1093 
+1141 
+1148 
+1129 
+1110 
 1135 
-1832 
-1871 
-1921 
-1977 
-2015 
-2026 
-2068 
-2109 
-2079 
-2041 
-2061 
-2087 
-2065 
-2021 
-2011 
-2030 
-2036 
-2035 
-2046 
-2064 
-2050 
-2045 
-2062 
-2094 
-2071 
-2016 
-2015 
-2028 
-2018 
-1975 
-1989 
-1997 
-2003 
-2020 
-2067 
-2110 
-2130 
-2147 
-2181 
-2232 
-2249 
-2251 
-2250 
-2241 
-2210 
-2169 
-2160 
-2183 
-2156 
-2117 
-2114 
-2133 
-2109 
-2077 
-2080 
-2106 
-2089 
-2066 
-2072 
-2076 
-2060 
-2026 
-2037 
-2072 
-2068 
-2030 
-2050 
-2086 
-2116 
-2130 
-2185 
-2252 
-2293 
-2309 
-2357 
-2412 
-2456 
-2434 
-2394 
-2425 
-2438 
-2416 
-2421 
-2453 
-2444 
-2423 
-2436 
-2450 
-2452 
-2373 
-2355 
-2359 
-2310 
-2242 
-2203 
-2184 
-2115 
-2055 
-2037 
-2005 
-1974 
-1953 
-1973 
-2005 
-2008 
-2020 
-2041 
-2096 
-2086 
-2093 
-2089 
-2112 
-2078 
-2044 
-2051 
-2062 
-2003 
-1977 
-1959 
-1960 
-1947 
-1920 
-1922 
-1939 
-1919 
-1939 
-1962 
-1971 
-1959 
-1933 
-1960 
-1990 
-1962 
-1941 
-1956 
-1994 
-2034 
-2069 
-2109 
-2173 
-2218 
-2256 
-2307 
-2358 
-2374 
-2355 
-2353 
-2361 
-2367 
-2376 
-2379 
-2377 
-2345 
-2340 
-2354 
-2355 
-2322 
-2306 
-2303 
-2287 
-2272 
-2249 
-2215 
-2203 
-2153 
-2149 
-2132 
-2124 
-2106 
-2119 
-2139 
-2171 
-2183 
-2217 
-2250 
-2271 
-2291 
-2310 
-2323 
-2312 
-2255 
-2253 
-2208 
-2200 
-2145 
-2106 
-2074 
-2044 
-2032 
-2008 
-1976 
-1940 
-1936 
-1931 
-1923 
-1903 
-1895 
-1880 
-1876 
-1889 
-1879 
-1848 
-1851 
-1860 
-1905 
-1943 
-1971 
-2009 
-2065 
-2100 
-2117 
-2170 
-2191 
-2183 
-2177 
-2180 
-2198 
-2196 
-2183 
-2159 
-2164 
-2176 
-2161 
-2189 
-2198 
-2204 
-2188 
-2205 
-2233 
-2234 
-2207 
-2182 
-2185 
-2175 
-2138 
-2137 
-2119 
-2134 
-2119 
-2144 
-2194 
-2229 
-2242 
-2265 
-2319 
-2354 
-2358 
-2375 
-2393 
-2363 
-2336 
-2326 
-2338 
-2315 
-2275 
-2250 
-2282 
-2271 
-2230 
-2229 
-2239 
-2245 
-2197 
-2208 
-2207 
-2184 
-2126 
-2124 
-2150 
-2132 
-2078 
-2087 
-2131 
-2154 
-2176 
-2222 
-2286 
-2317 
-2351 
-2393 
-2441 
-2472 
-2425 
-2392 
-2431 
-2426 
-2402 
-2386 
-2390 
-2379 
-2351 
-2343 
-2346 
-2306 
-2252 
-2197 
-2201 
-2143 
-2065 
-2005 
-1971 
-1925 
-1887 
-1845 
-1806 
-1804 
-1794 
-1818 
-1845 
-1856 
-1870 
-1886 
-1905 
-1933 
-1902 
-1886 
-1859 
-1843 
-1791 
-1766 
-1708 
-1695 
-1667 
-1641 
-1635 
-1654 
-1635 
-1635 
-1657 
-1687 
-1689 
-1670 
-1670 
-1687 
-1708 
-1686 
-1681 
-1717 
-1736 
-1758 
-1810 
-1865 
-1915 
-1947 
-1993 
-2056 
-2076 
-2095 
-2119 
-2131 
-2113 
-2088 
-2113 
-2112 
-2115 
-2079 
-2089 
-2117 
-2124 
-2081 
-2081 
-2079 
-2067 
-2022 
-1999 
-2001 
-1955 
-1911 
-1908 
-1903 
-1868 
-1847 
-1845 
-1894 
-1894 
-1909 
-1936 
-1980 
-2000 
-1989 
-2015 
-2042 
-2032 
-1987 
-1970 
-1966 
-1928 
-1878 
-1854 
-1839 
-1817 
-1788 
-1771 
-1777 
-1720 
-1681 
-1684 
-1684 
-1669 
-1649 
-1620 
-1604 
-1607 
-1597 
-1581 
-1559 
-1552 
-1598 
-1620 
-1665 
-1698 
-1740 
-1786 
-1826 
-1873 
-1893 
-1910 
-1918 
-1909 
-1919 
-1933 
-1936 
-1929 
-1920 
-1927 
-1942 
-1964 
-1952 
-1962 
-1958 
-1984 
-1991 
-1967 
-1954 
-1945 
-1926 
-1906 
-1881 
-1862 
-1843 
-1846 
-1841 
-1873 
-1903 
-1932 
-1964 
-1994 
-2031 
-2054 
-2076 
-2090 
-2086 
-2074 
-2047 
-2043 
-2027 
-2000 
-1971 
-1947 
-1943 
-1937 
-1920 
-1906 
-1879 
-1876 
-1880 
-1860 
-1858 
-1817 
-1801 
-1798 
-1791 
-1803 
-1778 
-1782 
-1805 
-1848 
-1879 
-1924 
-1961 
-2017 
-2059 
-2096 
-2125 
-2149 
-2144 
-2117 
-2103 
-2102 
-2095 
-2079 
-2047 
-2039 
-2040 
-2033 
-2027 
-2020 
-1982 
-1919 
-1915 
-1892 
-1843 
-1801 
-1764 
-1742 
-1711 
-1682 
-1656 
-1649 
-1656 
-1666 
-1688 
-1712 
-1737 
-1759 
-1776 
-1804 
-1837 
-1819 
-1802 
-1787 
-1760 
-1728 
-1711 
-1657 
-1663 
-1629 
-1627 
-1619 
-1626 
-1625 
-1619 
-1643 
-1691 
-1693 
-1703 
-1724 
-1738 
-1740 
-1747 
-1761 
-1789 
-1784 
-1803 
-1846 
-1900 
-1946 
-1986 
-2047 
-2108 
-2154 
-2185 
-2226 
-2267 
-2280 
-2273 
-2265 
-2282 
-2307 
-2311 
-2303 
-2323 
-2331 
-2344 
-2353 
-2355 
-2340 
-2338 
-2328 
-2324 
-2326 
-2283 
-2248 
-2240 
-2207 
-2200 
-2170 
-2165 
-2143 
-2142 
-2175 
-2206 
-2246 
-2272 
-2294 
-2309 
-2362 
-2376 
-2390 
-2390 
-2363 
-2349 
-2348 
-2326 
-2302 
-2282 
-2259 
-2238 
-2243 
-2235 
-2208 
-2174 
-2145 
-2145 
-2145 
-2125 
-2095 
-2080 
-2082 
-2062 
-2055 
-2033 
-2028 
-2017 
-2036 
-2077 
-2126 
-2159 
-2183 
-2236 
-2296 
-2334 
-2339 
-2364 
-2386 
-2404 
-2401 
-2400 
-2429 
-2420 
-2383 
-2374 
-2405 
-2424 
-2417 
-2418 
-2425 
-2440 
-2407 
-2407 
-2415 
-2398 
-2367 
-2345 
-2334 
-2329 
-2290 
-2284 
-2307 
-2332 
-2343 
-2370 
-2418 
-2465 
-2478 
-2491 
-2527 
-2542 
-2549 
-2512 
-2504 
-2504 
-2475 
-2454 
-2428 
-2401 
-2365 
-2343 
-2345 
-2350 
-2326 
-2312 
-2330 
-2327 
-2326 
-2314 
-2306 
-2312 
-2322 
-2322 
-2335 
-2331 
-2338 
-2373 
-2407 
-2460 
-2502 
-2543 
-2592 
-2635 
-2688 
-2721 
-2736 
-2744 
-2726 
-2718 
-2706 
-2709 
-2701 
-2678 
-2658 
-2658 
-2662 
-2664 
-2650 
-2620 
-2596 
-2574 
-2545 
-2515 
-2484 
-2449 
-2408 
-2370 
-2349 
-2329 
-2302 
-2294 
-2317 
-2333 
-2349 
-2368 
-2402 
-2420 
-2442 
-2455 
-2466 
-2464 
-2444 
-2407 
-2403 
-2388 
-2346 
-2305 
-2295 
-2296 
-2284 
-2277 
-2292 
-2300 
-2307 
-2321 
-2356 
-2371 
-2375 
-2380 
-2387 
-2405 
-2398 
-2393 
-2425 
-2420 
-2436 
-2478 
-2533 
-2578 
-2625 
-2668 
-2733 
-2791 
-2810 
-2848 
-2880 
-2895 
-2873 
-2873 
-2901 
-2935 
-2911 
-2920 
-2947 
-2945 
-2955 
-2952 
-2957 
-2924 
-2891 
-2894 
-2885 
-2845 
-2764 
-2735 
-2748 
-2675 
-2626 
-2630 
-2632 
-2639 
-2645 
-2676 
-2718 
-2739 
-2749 
-2773 
-2811 
-2813 
-2768 
-2763 
-2752 
-2715 
-2661 
-2624 
-2623 
-2578 
-2554 
-2542 
-2524 
-2469 
-2406 
-2392 
-2384 
-2365 
-2330 
-2288 
-2290 
-2260 
-2243 
-2219 
-2197 
-2202 
-2200 
-2244 
-2832 
-2536 
-2464 
-2488 
-2524 
-2509 
-2558 
-2541 
-2509 
-2537 
-2477 
-2466 
-2459 
-2430 
-2430 
-2409 
-2431 
-2432 
-2404 
-2407 
-2405 
-2429 
-2394 
-2401 
-2366 
-2348 
-2333 
-2303 
-2304 
-2297 
-2279 
-2294 
-2321 
-2362 
-2374 
-2396 
-2428 
-2473 
-2487 
-2490 
-2491 
-2496 
-2469 
-2425 
-2418 
-2403 
-2376 
-2306 
-2306 
-2323 
-2304 
-2256 
-2257 
-2274 
-2247 
-2223 
-2229 
-2258 
-2227 
-2189 
-2209 
-2246 
-2233 
-2177 
-2213 
-2261 
-2287 
-2294 
-2345 
-2408 
-2450 
-2463 
-2494 
-2558 
-2576 
-2538 
-2537 
-2577 
-2550 
-2512 
-2521 
-2538 
-2521 
-2478 
-2488 
-2501 
-2499 
-2414 
-2386 
-2391 
-2359 
-2288 
-2250 
-2218 
-2186 
-2098 
-2065 
-2072 
-2040 
-2007 
-2033 
-2077 
-2081 
-2069 
-2097 
-2156 
-2177 
-2145 
-2169 
-2188 
-2163 
-2105 
-2104 
-2105 
-2084 
-2011 
-2018 
-2034 
-2039 
-1994 
-2007 
-2032 
-2034 
-2033 
-2054 
-2078 
-2071 
-2028 
-2053 
-2085 
-2053 
-2036 
-2052 
-2107 
-2123 
-2158 
-2205 
-2275 
-2308 
-2339 
-2389 
-2457 
-2479 
-2462 
-2457 
-2477 
-2480 
-2468 
-2471 
-2496 
-2476 
-2461 
-2477 
-2483 
-2453 
-2419 
-2403 
-2405 
-2365 
-2318 
-2286 
-2246 
-2189 
-2135 
-2147 
-2123 
-2106 
-2108 
-2146 
-2180 
-2203 
-2206 
-2246 
-2283 
-2272 
-2263 
-2269 
-2239 
-2204 
-2150 
-2133 
-2097 
-2038 
-1972 
-1954 
-1946 
-1926 
-1869 
-1844 
-1827 
-1800 
-1775 
-1740 
-1763 
-1693 
-1691 
-1694 
-1687 
-1573 
-1605 
-1524 
+1138 
+1132 
+1153 
+1189 
+1214 
+1140 
+1166 
+1228 
+1217 
+1193 
+1191 
+1208 
+1198 
+1100 
+1122 
+1148 
+1155 
+1100 
+1034 
+1087 
+1045 
+1016 
+1028 
+1008 
+1030 
+956 
+1032 
+1057 
+1060 
+1022 
+1035 
+1010 
+1022 
+962 
+938 
+905 
+889 
+865 
+823 
+831 
+892 
+818 
+844 
+870 
+887 
+871 
+870 
+873 
+867 
+875 
+850 
+876 
+852 
+828 
+812 
+829 
+832 
+831 
+807 
+872 
+858 
+884 
+860 
+885 
+906 
+910 
+963 
+966 
+1014 
+1063 
+1066 
+1042 
+1085 
+1093 
+1078 
+1095 
+1080 
+1146 
+1122 
+1075 
+1124 
+1122 
+1125 
+1105 
+1127 
+1116 
+1123 
+1076 
+1080 
+1083 
+1082 
+1057 
+1092 
+1077 
+1085 
+1060 
+1067 
+1043 
+1038 
+1091 
+1048 
+1088 
+1046 
+1053 
+1042 
+1059 
+1039 
+1052 
+1046 
+1052 
+1078 
+1073 
+1085 
+1075 
+1077 
+1076 
+1088 
+1068 
+1030 
+1060 
+1005 
+1012 
+961 
+954 
+917 
+934 
+910 
+894 
+892 
+837 
+818 
+839 
+882 
+899 
+875 
+942 
+917 
+893 
+819 
+850 
+871 
+869 
+881 
+898 
+888 
+900 
+920 
+946 
+977 
+930 
+941 
+954 
+930 
+956 
+932 
+920 
+937 
+940 
+935 
+960 
+909 
+871 
+897 
+878 
+889 
+865 
+868 
+867 
+842 
+854 
+830 
+834 
+796 
+771 
+842 
+823 
+799 
+779 
+800 
+853 
+802 
+778 
+780 
+770 
+728 
+731 
+743 
+782 
+758 
+734 
+760 
+753 
+761 
+737 
+786 
+789 
+778 
+758 
+816 
+842 
+822 
+838 
+887 
+890 
+826 
+828 
+872 
+871 
+824 
+840 
+911 
+883 
+918 
+916 
+928 
+954 
+880 
+883 
+882 
+934 
+883 
+890 
+866 
+832 
+813 
+812 
+828 
+864 
+789 
+765 
+805 
+772 
+742 
+718 
+744 
+770 
+746 
+753 
+752 
+773 
+758 
+775 
+750 
+794 
+752 
+737 
+753 
+779 
+723 
+681 
+707 
+682 
+658 
+684 
+719 
+735 
+693 
+687 
+713 
+739 
+714 
+690 
+766 
+787 
+717 
+716 
+769 
+795 
+794 
+796 
+822 
+848 
+824 
+868 
+925 
+951 
+918 
+953 
+1000 
+1004 
+1012 
+1024 
+1082 
+1097 
+1033 
+1059 
+1107 
+1110 
+1086 
+1112 
+1138 
+1114 
+1089 
+1078 
+1141 
+1167 
+1092 
+1099 
+1130 
+1120 
+1073 
+1075 
+1147 
+1132 
+1144 
+1175 
+1168 
+1176 
+1161 
+1078 
+1075 
+1079 
+1055 
+1026 
+1021 
+996 
+990 
+984 
+1010 
+985 
+1011 
+1037 
+1044 
+1039 
+1064 
+1012 
+975 
+992 
+926 
+933 
+919 
+945 
+907 
+846 
+881 
+898 
+824 
+877 
+875 
+878 
+886 
+866 
+878 
+913 
+862 
+865 
+909 
+939 
+933 
+900 
+894 
+960 
+936 
+862 
+888 
+900 
+889 
+824 
+841 
+867 
+855 
+827 
+844 
+920 
+923 
+871 
+906 
+928 
+949 
+938 
+950 
+1003 
+988 
+928 
+953 
+956 
+905 
+867 
+907 
+896 
+908 
+866 
+878 
+890 
+961 
+887 
+863 
+843 
+845 
+790 
+816 
+842 
+885 
+870 
+869 
+904 
+921 
+896 
+908 
+929 
+937 
+909 
+925 
+1001 
+977 
+953 
+1023 
+1126 
+1130 
+1065 
+1132 
+1220 
+1238 
+1209 
+1235 
+1237 
+1263 
+1112 
+1138 
+1177 
+1148 
+1065 
+1045 
+1067 
+1087 
+968 
+1007 
+1056 
+1023 
+971 
+983 
+1004 
+976 
+929 
+950 
+962 
+911 
+860 
+853 
+829 
+819 
+781 
+707 
+782 
+808 
+757 
+755 
+785 
+802 
+769 
+804 
+844 
+855 
+799 
+816 
+842 
+857 
+811 
+832 
+845 
+921 
+896 
+922 
+948 
+974 
+913 
+938 
+951 
+977 
+953 
+878 
+904 
+930 
+924 
+932 
+975 
+965 
+941 
+985 
+969 
+986 
+962 
+983 
+991 
+1039 
+983 
+1014 
+1067 
+1042 
+1068 
+1066 
+1047 
+1096 
+1075 
+1097 
+1073 
+1094 
+1075 
+1050 
+1076 
+1052 
+1078 
+1048 
+983 
+991 
+981 
+975 
+982 
+958 
+966 
+955 
+976 
+961 
+987 
+963 
+939 
+969 
+981 
+925 
+928 
+917 
+943 
+919 
+899 
+871 
+818 
+794 
+798 
+819 
+813 
+793 
+782 
+777 
+758 
+737 
+727 
+730 
+756 
+737 
+757 
+783 
+791 
+762 
+760 
+781 
+762 
+783 
+764 
+753 
+765 
+741 
+767 
+769 
+804 
+835 
+806 
+819 
+816 
+788 
+805 
+799 
+811 
+804 
+816 
+802 
+805 
+803 
+824 
+855 
+849 
+857 
+882 
+858 
+870 
+846 
+885 
+866 
+846 
+913 
+939 
+919 
+940 
+948 
+992 
+967 
+961 
+937 
+945 
+921 
+946 
+931 
+911 
+874 
+900 
+875 
+901 
+913 
+925 
+955 
+913 
+911 
+906 
+909 
+947 
+919 
+886 
+885 
+910 
+904 
+912 
+938 
+896 
+930 
+965 
+950 
+1017 
+992 
+1009 
+1030 
+1025 
+1046 
+1071 
+1137 
+1113 
+1099 
+1125 
+1100 
+1076 
+1102 
+1078 
+1103 
+1079 
+1073 
+1081 
+1057 
+1032 
+1058 
+1034 
+1060 
+985 
+965 
+946 
+958 
+921 
+937 
+922 
+957 
+915 
+912 
+875 
+860 
+845 
+816 
+814 
+799 
+798 
+774 
+813 
+807 
+851 
+813 
+853 
+878 
+840 
+848 
+856 
+841 
+838 
+855 
+854 
+848 
+851 
+836 
+844 
+815 
+778 
+839 
+815 
+841 
+817 
+815 
+863 
+867 
+870 
+846 
+871 
+911 
+923 
+908 
+943 
+945 
+976 
+997 
+978 
+962 
+910 
+932 
+931 
+957 
+922 
+953 
+934 
+910 
+939 
+951 
+937 
+917 
+939 
+1000 
+1003 
+966 
+942 
+1017 
+1011 
+1010 
+990 
+948 
+937 
+890 
+880 
+874 
+945 
+916 
+901 
+922 
+971 
+928 
+931 
+943 
+983 
+932 
+957 
+946 
+959 
+925 
+900 
+936 
+866 
+838 
+850 
+879 
+865 
+791 
+812 
+833 
+845 
+794 
+802 
+846 
+871 
+847 
+855 
+899 
+925 
+900 
+926 
+979 
+996 
+953 
+1015 
+1055 
+1035 
+1007 
+1022 
+1008 
+1002 
+973 
+989 
+1011 
+991 
+963 
+975 
+1018 
+990 
+975 
+1042 
+1062 
+1074 
+1041 
+1045 
+1071 
+1086 
+1045 
+1048 
+1088 
+1095 
+1075 
+1037 
+1077 
+1103 
+1078 
+1154 
+1180 
+1187 
+1182 
+1193 
+1223 
+1209 
+1185 
+1210 
+1254 
+1262 
+1283 
+1264 
+1289 
+1251 
+1191 
+1235 
+1205 
+1218 
+1221 
+1247 
+1214 
+1207 
+1206 
+1268 
+1299 
+1279 
+1300 
+1362 
+1374 
+1328 
+1303 
+1329 
+1305 
+1285 
+1357 
+1332 
+1312 
+1315 
+1319 
+1385 
+1388 
+1387 
+1413 
+1416 
+1441 
+1353 
+1356 
+1392 
+1367 
+1306 
+1309 
+1322 
+1271 
+1246 
+1222 
+1270 
+1246 
+1150 
+1179 
+1201 
+1177 
+1080 
+1091 
+1149 
+1148 
+1133 
+1109 
+1111 
+1133 
+1059 
+1039 
+1082 
+1086 
+1039 
+1060 
+1068 
+1089 
+1037 
+977 
+1039 
+1042 
+968 
+966 
+1020 
+1046 
+1002 
+997 
+1073 
+1076 
+1056 
+1081 
+1144 
+1152 
+1109 
+1121 
+1179 
+1205 
+1203 
+1147 
+1182 
+1208 
+1184 
+1214 
+1253 
+1261 
+1277 
+1285 
+1366 
+1364 
+1317 
+1266 
+1342 
+1330 
+1315 
+1296 
+1299 
+1280 
+1218 
+1272 
+1257 
+1274 
+1218 
+1211 
+1251 
+1277 
+1216 
+1273 
+1267 
+1280 
+1306 
+1332 
+1357 
+1383 
+1390 
+1335 
+1391 
+1386 
+1362 
+1338 
+1364 
+1339 
+1265 
+1250 
+1298 
+1251 
+1245 
+1244 
+1270 
+1246 
+1180 
+1169 
+1163 
+1112 
+1075 
+1113 
+1130 
+1102 
+1078 
+1053 
+1056 
+1055 
+1031 
+1007 
+1050 
+1017 
+984 
+1037 
+1039 
+1111 
+1087 
+1113 
+1189 
+1227 
+1203 
+1225 
+1292 
+1267 
+1243 
+1237 
+1258 
+1248 
+1196 
+1222 
+1198 
+1178 
+1177 
+1179 
+1237 
+1227 
+1203 
+1178 
+1249 
+1230 
+1196 
+1182 
+1252 
+1233 
+1209 
+1257 
+1273 
+1267 
+1175 
+1188 
+1214 
+1175 
+1160 
+1141 
+1167 
+1164 
+1140 
+1166 
+1174 
+1246 
+1171 
+1187 
+1218 
+1249 
+1215 
+1186 
+1235 
+1202 
+1159 
+1153 
+1129 
+1155 
+1071 
+1093 
+1141 
+1148 
+1129 
+1110 
 1135 
-1832 
-1871 
-1921 
-1977 
-2015 
-2026 
-2068 
-2109 
-2079 
-2041 
-2061 
-2087 
-2065 
-2021 
-2011 
-2030 
-2036 
-2035 
-2046 
-2064 
-2050 
-2045 
-2062 
-2094 
-2071 
-2016 
-2015 
-2028 
-2018 
-1975 
-1989 
-1997 
-2003 
-2020 
-2067 
-2110 
-2130 
-2147 
-2181 
-2232 
-2249 
-2251 
-2250 
-2241 
-2210 
-2169 
-2160 
-2183 
-2156 
-2117 
-2114 
-2133 
-2109 
-2077 
-2080 
-2106 
-2089 
-2066 
-2072 
-2076 
-2060 
-2026 
-2037 
-2072 
-2068 
-2030 
-2050 
-2086 
-2116 
-2130 
-2185 
-2252 
-2293 
-2309 
-2357 
-2412 
-2456 
-2434 
-2394 
-2425 
-2438 
-2416 
-2421 
-2453 
-2444 
-2423 
-2436 
-2450 
-2452 
-2373 
-2355 
-2359 
-2310 
-2242 
-2203 
-2184 
-2115 
-2055 
-2037 
-2005 
-1974 
-1953 
-1973 
-2005 
-2008 
-2020 
-2041 
-2096 
-2086 
-2093 
-2089 
-2112 
-2078 
-2044 
-2051 
-2062 
-2003 
-1977 
-1959 
-1960 
-1947 
-1920 
-1922 
-1939 
-1919 
-1939 
-1962 
-1971 
-1959 
-1933 
-1960 
-1990 
-1962 
-1941 
-1956 
-1994 
-2034 
-2069 
-2109 
-2173 
-2218 
-2256 
-2307 
-2358 
-2374 
-2355 
-2353 
-2361 
-2367 
-2376 
-2379 
-2377 
-2345 
-2340 
-2354 
-2355 
-2322 
-2306 
-2303 
-2287 
-2272 
-2249 
-2215 
-2203 
-2153 
-2149 
-2132 
-2124 
-2106 
-2119 
-2139 
-2171 
-2183 
-2217 
-2250 
-2271 
-2291 
-2310 
-2323 
-2312 
-2255 
-2253 
-2208 
-2200 
-2145 
-2106 
-2074 
-2044 
-2032 
-2008 
-1976 
-1940 
-1936 
-1931 
-1923 
-1903 
-1895 
-1880 
-1876 
-1889 
-1879 
-1848 
-1851 
-1860 
-1905 
-1943 
-1971 
-2009 
-2065 
-2100 
-2117 
-2170 
-2191 
-2183 
-2177 
-2180 
-2198 
-2196 
-2183 
-2159 
-2164 
-2176 
-2161 
-2189 
-2198 
-2204 
-2188 
-2205 
-2233 
-2234 
-2207 
-2182 
-2185 
-2175 
-2138 
-2137 
-2119 
-2134 
-2119 
-2144 
-2194 
-2229 
-2242 
-2265 
-2319 
-2354 
-2358 
-2375 
-2393 
-2363 
-2336 
-2326 
-2338 
-2315 
-2275 
-2250 
-2282 
-2271 
-2230 
-2229 
-2239 
-2245 
-2197 
-2208 
-2207 
-2184 
-2126 
-2124 
-2150 
-2132 
-2078 
-2087 
-2131 
-2154 
-2176 
-2222 
-2286 
-2317 
-2351 
-2393 
-2441 
-2472 
-2425 
-2392 
-2431 
-2426 
-2402 
-2386 
-2390 
-2379 
-2351 
-2343 
-2346 
-2306 
-2252 
-2197 
-2201 
-2143 
-2065 
-2005 
-1971 
-1925 
-1887 
-1845 
-1806 
-1804 
-1794 
-1818 
-1845 
-1856 
-1870 
-1886 
-1905 
-1933 
-1902 
-1886 
-1859 
-1843 
-1791 
-1766 
-1708 
-1695 
-1667 
-1641 
-1635 
-1654 
-1635 
-1635 
-1657 
-1687 
-1689 
-1670 
-1670 
-1687 
-1708 
-1686 
-1681 
-1717 
-1736 
-1758 
-1810 
-1865 
-1915 
-1947 
-1993 
-2056 
-2076 
-2095 
-2119 
-2131 
-2113 
-2088 
-2113 
-2112 
-2115 
-2079 
-2089 
-2117 
-2124 
-2081 
-2081 
-2079 
-2067 
-2022 
-1999 
-2001 
-1955 
-1911 
-1908 
-1903 
-1868 
-1847 
-1845 
-1894 
-1894 
-1909 
-1936 
-1980 
-2000 
-1989 
-2015 
-2042 
-2032 
-1987 
-1970 
-1966 
-1928 
-1878 
-1854 
-1839 
-1817 
-1788 
-1771 
-1777 
-1720 
-1681 
-1684 
-1684 
-1669 
-1649 
-1620 
-1604 
-1607 
-1597 
-1581 
-1559 
-1552 
-1598 
-1620 
-1665 
-1698 
-1740 
-1786 
-1826 
-1873 
-1893 
-1910 
-1918 
-1909 
-1919 
-1933 
-1936 
-1929 
-1920 
-1927 
-1942 
-1964 
-1952 
-1962 
-1958 
-1984 
-1991 
-1967 
-1954 
-1945 
-1926 
-1906 
-1881 
-1862 
-1843 
-1846 
-1841 
-1873 
-1903 
-1932 
-1964 
-1994 
-2031 
-2054 
-2076 
-2090 
-2086 
-2074 
-2047 
-2043 
-2027 
-2000 
-1971 
-1947 
-1943 
-1937 
-1920 
-1906 
-1879 
-1876 
-1880 
-1860 
-1858 
-1817 
-1801 
-1798 
-1791 
-1803 
-1778 
-1782 
-1805 
-1848 
-1879 
-1924 
-1961 
-2017 
-2059 
-2096 
-2125 
-2149 
-2144 
-2117 
-2103 
-2102 
-2095 
-2079 
-2047 
-2039 
-2040 
-2033 
-2027 
-2020 
-1982 
-1919 
-1915 
-1892 
-1843 
-1801 
-1764 
-1742 
-1711 
-1682 
-1656 
-1649 
-1656 
-1666 
-1688 
-1712 
-1737 
-1759 
-1776 
-1804 
-1837 
-1819 
-1802 
-1787 
-1760 
-1728 
-1711 
-1657 
-1663 
-1629 
-1627 
-1619 
-1626 
-1625 
-1619 
-1643 
-1691 
-1693 
-1703 
-1724 
-1738 
-1740 
-1747 
-1761 
-1789 
-1784 
-1803 
-1846 
-1900 
-1946 
-1986 
-2047 
-2108 
-2154 
-2185 
-2226 
-2267 
-2280 
-2273 
-2265 
-2282 
-2307 
-2311 
-2303 
-2323 
-2331 
-2344 
-2353 
-2355 
-2340 
-2338 
-2328 
-2324 
-2326 
-2283 
-2248 
-2240 
-2207 
-2200 
-2170 
-2165 
-2143 
-2142 
-2175 
-2206 
-2246 
-2272 
-2294 
-2309 
-2362 
-2376 
-2390 
-2390 
-2363 
-2349 
-2348 
-2326 
-2302 
-2282 
-2259 
-2238 
-2243 
-2235 
-2208 
-2174 
-2145 
-2145 
-2145 
-2125 
-2095 
-2080 
-2082 
-2062 
-2055 
-2033 
-2028 
-2017 
-2036 
-2077 
-2126 
-2159 
-2183 
-2236 
-2296 
-2334 
-2339 
-2364 
-2386 
-2404 
-2401 
-2400 
-2429 
-2420 
-2383 
-2374 
-2405 
-2424 
-2417 
-2418 
-2425 
-2440 
-2407 
-2407 
-2415 
-2398 
-2367 
-2345 
+1138 
+1132 
+1153 
+1189 
+1214 
+1140 
+1166 
+1228 
+1217 
+1193 
+1191 
+1208 
+1198 
+1100 
+1122 
+1148 
+1155 
+1100 
+1034 
+1087 
+1045 
+1016 
+1028 
+1008 
+1030 
+956 
+1032 
+1057 
+1060 
+1022 
+1035 
+1010 
+1022 
+962 
+938 
+905 
+889 
+865 
+823 
+831 
+892 
+818 
+844 
+870 
+887 
+871 
+870 
+873 
+867 
+875 
+850 
+876 
+852 
+828 
+812 
+829 
+832 
+831 
+807 
+872 
+858 
+884 
+860 
+885 
+906 
+910 
+963 
+966 
+1014 
+1063 
+1066 
+1042 
+1085 
+1093 
+1078 
+1095 
+1080 
+1146 
+1122 
+1075 
+1124 
+1122 
+1125 
+1105 
+1127 
+1116 
+1123 
+1076 
+1080 
+1083 
+1082 
+1057 
+1092 
+1077 
+1085 
+1060 
+1067 
+1043 
+1038 
+1091 
+1048 
+1088 
+1046 
+1053 
+1042 
+1059 
+1039 
+1052 
+1046 
+1052 
+1078 
+1073 
+1085 
+1075 
+1077 
+1076 
+1088 
+1068 
+1030 
+1060 
+1005 
+1012 
+961 
+954 
+917 
+934 
+910 
+894 
+892 
+837 
+818 
+839 
+882 
+899 
+875 
+942 
+917 
+893 
+819 
+850 
+871 
+869 
+881 
+898 
+888 
+900 
+920 
+946 
+977 
+930 
+941 
+954 
+930 
+956 
+932 
+920 
+937 
+940 
+935 
+960 
+909 
+871 
+897 
+878 
+889 
+865 
+868 
+867 
+842 
+854 
+830 
+834 
+796 
+771 
+842 
+823 
+799 
+779 
+800 
+853 
+802 
+778 
+780 
+770 
+728 
+731 
+743 
+782 
+758 
+734 
+760 
+753 
+761 
+737 
+786 
+789 
+778 
+758 
+816 
+842 
+822 
+838 
+887 
+890 
+826 
+828 
+872 
+871 
+824 
+840 
+911 
+883 
+918 
+916 
+928 
+954 
+880 
+883 
+882 
+934 
+883 
+890 
+866 
+832 
+813 
+812 
+828 
+864 
+789 
+765 
+805 
+772 
+742 
+718 
+744 
+770 
+746 
+753 
+752 
+773 
+758 
+775 
+750 
+794 
+752 
+737 
+753 
+779 
+723 
+681 
+707 
+682 
+658 
+684 
+719 
+735 
+693 
+687 
+713 
+739 
+714 
+690 
+766 
+787 
+717 
+716 
+769 
+795 
+794 
+796 
+822 
+848 
+824 
+868 
+925 
+951 
+918 
+953 
+1000 
+1004 
+1012 
+1024 
+1082 
+1097 
+1033 
+1059 
+1107 
+1110 
+1086 
+1112 
+1138 
+1114 
+1089 
+1078 
+1141 
+1167 
+1092 
+1099 
+1130 
+1120 
+1073 
+1075 
+1147 
+1132 
+1144 
+1175 
+1168 
+1176 
+1161 
+1078 
+1075 
+1079 
+1055 
+1026 
+1021 
+996 
+990 
+984 
+1010 
+985 
+1011 
+1037 
+1044 
+1039 
+1064 
+1012 
+975 
+992 
+926 
+933 
+919 
+945 
+907 
+846 
+881 
+898 
+824 
+877 
+875 
+878 
+886 
+866 
+878 
+913 
+862 
+865 
+909 
+939 
+933 
+900 
+894 
+960 
+936 
+862 
+888 
+900 
+889 
+824 
+841 
+867 
+855 
+827 
+844 
+920 
+923 
+871 
+906 
+928 
+949 
+938 
+950 
+1003 
+988 
+928 
+953 
+956 
+905 
+867 
+907 
+896 
+908 
+866 
+878 
+890 
+961 
+887 
+863 
+843 
+845 
+790 
+816 
+842 
+885 
+870 
+869 
+904 
+921 
+896 
+908 
+929 
+937 
+909 
+925 
+1001 
+977 
+953 
+1023 
+1126 
+1130 
+1065 
+1132 
+1220 
+1238 
+1209 
+1235 
+1237 
+1263 
+1112 
+1138 
+1177 
+1148 
+1065 
+1045 
+1067 
+1087 
+968 
+1007 
+1056 
+1023 
+971 
+983 
+1004 
+976 
+929 
+950 
+962 
+911 
+860 
+853 
+829 
+819 
+781 
+707 
+782 
+808 
+757 
+755 
+785 
+802 
+769 
+804 
+844 
+855 
+799 
+816 
+842 
+857 
+811 
+832 
+845 
+921 
+896 
+922 
+948 
+974 
+913 
+938 
+951 
+977 
+953 
+878 
+904 
+930 
+924 
+932 
+975 
+965 
+941 
+985 
+969 
+986 
+962 
+983 
+991 
+1039 
+983 
+1014 
+1067 
+1042 
+1068 
+1066 
+1047 
+1096 
+1075 
+1097 
+1073 
+1094 
+1075 
+1050 
+1076 
+1052 
+1078 
+1048 
+983 
+991 
+981 
+975 
+982 
+958 
+966 
+955 
+976 
+961 
+987 
+963 
+939 
+969 
+981 
+925 
+928 
+917 
+943 
+919 
+899 
+871 
+818 
+794 
+798 
+819 
+813 
+793 
+782 
+777 
+758 
+737 
+727 
+730 
+756 
+737 
+757 
+783 
+791 
+762 
+760 
+781 
+762 
+783 
+764 
+753 
+765 
+741 
+767 
+769 
+804 
+835 
+806 
+819 
+816 
+788 
+805 
+799 
+811 
+804 
+816 
+802 
+805 
+803 
+824 
+855 
+849 
+857 
+882 
+858 
+870 
+846 
+885 
+866 
+846 
+913 
+939 
+919 
+940 
+948 
+992 
+967 
+961 
+937 
+945 
+921 
+946 
+931 
+911 
+874 
+900 
+875 
+901 
+913 
+925 
+955 
+913 
+911 
+906 
+909 
+947 
+919 
+886 
+885 
+910 
+904 
+912 
+938 
+896 
+930 
+965 
+950 
+1017 
+992 
+1009 
+1030 
+1025 
+1046 
+1071 
+1137 
+1113 
+1099 
+1125 
+1100 
+1076 
+1102 
+1078 
+1103 
+1079 
+1073 
+1081 
+1057 
+1032 
+1058 
+1034 
+1060 
+985 
+965 
+946 
+958 
+921 
+937 
+922 
+957 
+915 
+912 
+875 
+860 
+845 
+816 
+814 
+799 
+798 
+774 
+813 
+807 
+851 
+813 
+853 
+878 
+840 
+848 
+856 
+841 
+838 
+855 
+854 
+848 
+851 
+836 
+844 
+815 
+778 
+839 
+815 
+841 
+817 
+815 
+863 
+867 
+870 
+846 
+871 
+911 
+923 
+908 
+943 
+945 
+976 
+997 
+978 
+962 
+910 
+932 
+931 
+957 
+922 
+953 
+934 
+910 
+939 
+951 
+937 
+917 
+939 
+1000 
+1003 
+966 
+942 
+1017 
+1011 
+1010 
+990 
+948 
+937 
+890 
+880 
+874 
+945 
+916 
+901 
+922 
+971 
+928 
+931 
+943 
+983 
+932 
+957 
+946 
+959 
+925 
+900 
+936 
+866 
+838 
+850 
+879 
+865 
+791 
+812 
+833 
+845 
+794 
+802 
+846 
+871 
+847 
+855 
+899 
+925 
+900 
+926 
+979 
+996 
+953 
+1015 
+1055 
+1035 
+1007 
+1022 
+1008 
+1002 
+973 
+989 
+1011 
+991 
+963 
+975 
+1018 
+990 
+975 
+1042 
+1062 
+1074 
+1041 
+1045 
+1071 
+1086 
+1045 
+1048 
+1088 
+1095 
+1075 
+1037 
+1077 
+1103 
+1078 
+1154 
+1180 
+1187 
+1182 
+1193 
+1223 
+1209 
+1185 
+1210 
+1254 
+1262 
+1283 
+1264 
+1289 
+1251 
+1191 
+1235 
+1205 
+1218 
+1221 
+1247 
+1214 
+1207 
+1206 
+1268 
+1299 
+1279 
+1300 
+1362 
+1374 
+1328 
+1303 
+1329 
+1305 
+1285 
+1357 
+1332 
+1312 
+1315 
+1319 
+1385 
+1388 
+1387 
+1413 
+1416 
+1441 
+1353 
+1356 
+1392 
+1367 
+1306 
+1309 
+1322 
+1271 
+1246 
+1222 
+1270 
+1246 

+ 4 - 3
Simulink/myfilter2.m

@@ -1,4 +1,4 @@
-Fir=Fir_angle;
+Fir=Fir_angle2;
 in=csvread('angle2.csv');
 in=in';
 angle_off=filter(Fir.Numerator, 1, in);
@@ -6,6 +6,7 @@ out=single(angle_off);
 t=0:3071;
 plot(t, in);
 hold;
-%plot(t-298, out);
-plot(t-477, out);
+%plot(t-158, out);
+%plot(t-253, out);
+plot(t-277, out);
 out_off=out';

+ 26 - 0
Simulink/untitled.m

@@ -0,0 +1,26 @@
+function Hd = untitled
+%UNTITLED 返回离散时间滤波器对象。
+
+% MATLAB Code
+% Generated by MATLAB(R) 9.9 and Signal Processing Toolbox 8.5.
+% Generated on: 18-Oct-2022 16:57:00
+
+% Equiripple Lowpass filter designed using the FIRPM function.
+
+% All frequency values are in Hz.
+Fs = 500;  % Sampling Frequency
+
+Fpass = 1.2;             % Passband Frequency
+Fstop = 6;               % Stopband Frequency
+Dpass = 0.057501127785;  % Passband Ripple
+Dstop = 0.0001;          % Stopband Attenuation
+dens  = 20;              % Density Factor
+
+% Calculate the order from the parameters using FIRPMORD.
+[N, Fo, Ao, W] = firpmord([Fpass, Fstop]/(Fs/2), [1 0], [Dpass, Dstop]);
+
+% Calculate the coefficients using the FIRPM function.
+b  = firpm(N, Fo, Ao, W, {dens});
+Hd = dfilt.dffir(b);
+
+% [EOF]