起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点