From 474145de44ae053ef7ed4ac1fb8b70d564aadfc9 Mon Sep 17 00:00:00 2001 From: Zolan Date: Tue, 23 Apr 2024 21:06:33 -0600 Subject: [PATCH 01/13] update Minimize Unserved Load Tests for speed --- test/runtests.jl | 65 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 9 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index d7a592b7a..d1b88f41e 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -911,16 +911,43 @@ else # run HiGHS tests @testset "Minimize Unserved Load" begin m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) - results = run_reopt(m, "./scenarios/outage.json") - - @test results["Outages"]["expected_outage_cost"] ≈ 0 - @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) ≈ 0 + d = JSON.parsefile("./scenarios/outage.json") + d["ElectricLoad"]["loads_kw"] = ones(8760)*200.0 + d["ElectricLoad"]["loads_kw"][5100:5109] .= 405.0 + d["ElectricLoad"]["loads_kw"][5200:5209] .= 405.0 + d["ElectricLoad"]["critical_load_fraction"] = 0.5 + d["PV"]["existing_kw"] = 0.0 + d["PV"]["min_kw"] = 100.0 + d["PV"]["max_kw"] = 100.0 + d["CHP"]["min_kw"] = 100.0 + d["CHP"]["max_kw"] = 100.0 + d["Generator"]["existing_kw"] = 0.0 + d["Generator"]["min_kw"] = 100.0 + d["Generator"]["max_kw"] = 100.0 + d["ElectricStorage"]["min_kw"] = 20 + d["ElectricStorage"]["max_kw"] = 20 + d["ElectricStorage"]["min_kwh"] = 50 + d["ElectricStorage"]["max_kwh"] = 50 + d["Financial"]["microgrid_upgrade_cost_fraction"] = 0.0 + s = Scenario(d) + p = REoptInputs(s) + results = run_reopt(m, p) + + @test results["Outages"]["expected_outage_cost"] ≈ 0 atol=0.1 + @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) ≈ 0 atol=0.1 @test value(m[:binMGTechUsed]["Generator"]) ≈ 1 @test value(m[:binMGTechUsed]["CHP"]) ≈ 1 @test value(m[:binMGTechUsed]["PV"]) ≈ 1 @test value(m[:binMGStorageUsed]) ≈ 1 - @test results["Financial"]["lcc"] ≈ 6.83633907986e7 rtol=0.01 - + + # Increase cost of microgrid upgrade, PV not used and some load not met + d["Financial"]["microgrid_upgrade_cost_fraction"] = 0.3 + s = Scenario(d) + p = REoptInputs(s) + results = run_reopt(m, p) + @test value(m[:binMGTechUsed]["PV"]) ≈ 0 + @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) > 0 + #= Scenario with $0.001/kWh value_of_lost_load_per_kwh, 12x169 hour outages, 1kW load/hour, and min_resil_time_steps = 168 - should meet 168 kWh in each outage such that the total unserved load is 12 kWh @@ -943,13 +970,33 @@ else # run HiGHS tests @test results["Financial"]["lcc"] ≈ 8.6413594727e7 rtol=0.001 # Scenario with generator, PV, wind, electric storage + d = JSON.parsefile("./scenarios/outages_gen_pv_wind_stor.json") + d["ElectricLoad"]["loads_kw"] = ones(8760)*200.0 + d["ElectricLoad"]["loads_kw"][5100:5119] .= 425.0 + d["ElectricLoad"]["critical_load_fraction"] = 0.5 + d["PV"]["existing_kw"] = 0.0 + d["PV"]["min_kw"] = 100.0 + d["PV"]["max_kw"] = 100.0 + d["Wind"]["min_kw"] = 100.0 + d["Wind"]["max_kw"] = 100.0 + d["Generator"]["min_kw"] = 100.0 + d["Generator"]["max_kw"] = 100.0 + d["ElectricStorage"]["min_kw"] = 100 + d["ElectricStorage"]["max_kw"] = 100 + d["ElectricStorage"]["min_kwh"] = 100 + d["ElectricStorage"]["max_kwh"] = 100 + d["Site"]["min_resil_time_steps"] = 1 + s = Scenario(d) + p = REoptInputs(s) m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - results = run_reopt(m, "./scenarios/outages_gen_pv_wind_stor.json") + results = run_reopt(m, p) + print(results["Messages"]) @test value(m[:binMGTechUsed]["Generator"]) ≈ 1 @test value(m[:binMGTechUsed]["PV"]) ≈ 1 @test value(m[:binMGTechUsed]["Wind"]) ≈ 1 - @test results["Outages"]["expected_outage_cost"] ≈ 446899.75 atol=1.0 - @test results["Financial"]["lcc"] ≈ 6.71661825335e7 rtol=0.001 + @test results["Outages"]["expected_outage_cost"] ≈ 1.296319791276051e6 atol=1.0 + @test results["Financial"]["lcc"] ≈ 4.8046446434e6 rtol=0.001 + end @testset "Outages with Wind and supply-to-load no greater than critical load" begin From 3b7dd490a3d7a7cfff888db4bf9cd5789b31475b Mon Sep 17 00:00:00 2001 From: Zolan Date: Tue, 23 Apr 2024 21:08:20 -0600 Subject: [PATCH 02/13] Update outage.json --- test/scenarios/outage.json | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/test/scenarios/outage.json b/test/scenarios/outage.json index 26e4c0cfa..9b7f560be 100644 --- a/test/scenarios/outage.json +++ b/test/scenarios/outage.json @@ -12,19 +12,24 @@ "fuel_avail_gal": 660, "installed_cost_per_kw": 500.0, "existing_kw": 0.0, + "min_kw": 150.0, + "max_kw": 150.0, "min_turn_down_fraction": 0.0, "only_runs_during_grid_outage": true, "sells_energy_back_to_grid": false, "om_cost_per_kw": 10.0, "fuel_cost_per_gallon": 3.0, - "electric_efficiency_full_load": 0.3233 + "electric_efficiency_full_load": 0.3233, + "electric_efficiency_half_load": 0.3233 }, "CHP": { "thermal_efficiency_full_load": 0.0, "prime_mover": "recip_engine", "fuel_cost_per_mmbtu": 12.0, "min_kw": 150.0, - "max_kw": 150.0 + "max_kw": 150.0, + "electric_efficiency_full_load": 0.35, + "electric_efficiency_half_load": 0.35 }, "PV": { "existing_kw": 3580.54, @@ -44,9 +49,9 @@ 4794.82, 4847.34, 4790.01, 4631.73, 4623.71, 4553.78, 4453.53, 4379.53, 4359.45, 4364.05, 4316.43, 4316.13, 4360.42, 4418.97, 4620.02, 4773.71, 4346.86, 3440.68, 4234.83, 4103.86, 3544.28, 4358.48, 4640.31, 4725.33, 4672.96, 4577.96, 4518.98, 4484.41, 4515.27, 4436.7, 4348.43, 4360.75, 4327.83, 4285.44, 4253.51, 4267.95, 4220.07, 4205.98, 4208.06, 4025.65, 3144.08, 2327.18, 3224.46, 3174.62, 3202.67, 2707.63, 2119.25, 3707.7, 3907.46, 3935.23, 4164.88, 4206.24, 4208.04, 4155.19, 4102.1, 4076.19, 4062.61, 4070.8, 4075.4, 4069.93, 4139.08, 4152.92, 4180.88, 3890.64, 3389.09, 2684.38, 2280.4, 2026.75, 2303.56, 3697.64, 2109.35, 2468.51, 4307.87, 4418.25, 4357.46, 4454.32, 4348.2, 4315.99, 4244.45, 4216.69, 4241.58, 4202.38, 4208.51, 4180.76, 4175.78, 4144.18, 4342.47, 4416.41, 3809.23, 3422.65, 2983.79, 2785.41, 2623.51, 2742.33, 2807.88, 3163.63, 3555.97, 4127.9, 4482.15, 4435.53, 4444.3, 4381.42, 4261.35, 4146.29, 4085.69, 4064.67, 4097.57, 4118.8, 4200.95, 4319.22, 4514.37, 4409.21, 3766.78, 3263.66, 2959.14, 2845.88, 2596.15, 2652.52, 2744.29, 3047.56, 3450.4, 4031.16, 4535.1, 4514.91, 4475.73, 4439.76, 4382.75, 4290.52, 4249.76, 4191.36, 4172.2, 4169.33, 4232.95, 4395.59, 4557.64, 4525.76, 3905.04, 3370.45, 3184.39, 2927.68, 3006.95, 3108.84, 3201.77, 3442.89, 3811.06, 4377.4, 4788.75, 4800.52, 4769.2, 4687.12, 4606.17, 4576.57, 4558.49, 4561.76, 4539.63, 4471.23, 4486.94, 4597.77, 4769.75, 4815.03, 4346.64, 4089.11, 3462.82, 4283.87, 4515.77, 4814.19, 4893.38, 4920.2, 4718.18, 4743.78, 4783.65, 4684.4, 4658.56, 4691.38, 4551.04, 4508.07, 4490.19, 4463.69, 4362.39, 4384.17, 4431.73, 4591.05, 4747.46, 4623.46, 4197.26, 3659.44, 3467.7, 3334.21, 4899.84, 4886.76, 4952.18, 5054.35, 3910.11, 4785.6, 5023.29, 4822.67, 4774.69, 4690.0, 4602.83, 4573.95, 4551.8, 4559.04, 4588.46, 4545.21, 4538.8, 4554.41, 4578.31, 4455.03, 3956.33, 3055.11, 3054.71, 2958.72, 2635.26, 2724.38, 2870.65, 3007.95, 4078.71, 4608.28, 4732.96, 4653.97, 4799.47, 4705.49, 4628.2, 4600.42, 4541.9, 4551.31, 4529.17, 4517.4, 4576.93, 4605.86, 4582.34, 4514.25, 3715.75, 3157.65, 2724.27, 2909.46, 2755.45, 3349.73, 3499.17, 4127.79, 4379.49, 4534.35, 4789.46, 4752.25, 4695.68, 4613.15, 4605.34, 4586.28, 4574.9, 4514.22, 4528.88, 4498.13, 4535.88, 4631.04, 4693.82, 4684.74, 3910.0, 3343.9, 3034.84, 3573.56, 3104.45, 3581.83, 3188.29, 3129.57, 4294.02, 4709.01, 4628.06, 4575.12, 4538.5, 4430.54, 4406.22, 4394.48, 4298.55, 4364.7, 4325.1, 4314.53, 4390.83, 4507.96, 4698.56, 4739.07, 4376.65, 3830.96, 3399.39, 3226.21, 3132.38, 3017.38, 3338.88, 4562.23, 4897.1, 5004.24, 5085.06, 4892.55, 4884.31, 4805.04, 4705.91, 4645.2, 4562.27, 4477.42, 4555.27, 4547.38, 4540.34, 4542.26, 4704.49, 4957.13, 4552.06, 4622.55, 3942.86, 4226.53, 5148.08, 5381.99, 5461.13, 4883.82, 5243.63, 4880.53, 4859.33, 4766.51, 4709.01, 4687.68, 4602.62, 4593.0, 4551.03, 4589.84, 4609.43, 4359.68, 4363.32, 4484.1, 4651.79, 4727.42, 4049.67, 3835.19, 3616.63, 3358.11, 3334.9, 4686.08, 5311.32, 5416.11, 4973.03, 4972.31, 5076.98, 4941.72, 4852.9, 4818.62, 4728.82, 4702.57, 4670.43, 4638.39, 4647.15, 4635.79, 4593.33, 4672.66, 4918.32, 5004.68, 4794.5, 4790.93, 4641.89, 3984.32, 3345.61, 4278.98, 5643.29, 5663.03, 5333.42, 5336.04, 4881.53, 4850.22, 4779.83, 4672.78, 4650.75, 4568.0, 4504.99, 4557.57, 4555.6, 4536.55, 4540.71, 4560.8, 4546.48, 4530.23, 3887.62, 3355.81, 2849.47, 3207.79, 2730.13, 2403.77, 3411.98, 4021.68, 4274.08, 4539.8, 4677.53, 4708.96, 4664.69, 4633.43, 4600.23, 4608.9, 4515.17, 4429.33, 4384.36, 4364.39, 4389.14, 4428.55, 4468.04, 4320.44, 3577.79, 2785.27, 2333.98, 2065.67, 1943.98, 2926.82, 4189.33, 4610.8, 4615.83, 4514.38, 4487.53, 4379.34, 4445.18, 4408.68, 4368.51, 4379.75, 4287.29, 4267.65, 4265.86, 4255.36, 4292.07, 4464.22, 4646.48, 4649.02, 4049.85, 3523.07, 3283.57, 3188.54, 3134.37, 3007.13, 3317.74, 4204.4, 3901.03, 4979.19, 4885.88, 4773.13, 4725.12, 4641.22, 4582.49, 4534.28, 4481.68, 4464.44, 4447.08, 4364.64, 4363.25, 4502.14, 4720.15, 4864.04, 4674.13, 3641.84, 3406.49, 3284.13, 3210.74, 3361.32, 3415.83, 3954.62, 4286.32, 4753.32, 4876.31, 4750.45, 4763.62, 4645.98, 4559.83, 4596.47, 4529.15, 4185.25, 4138.02, 4052.97, 4077.9, 4159.3, 4379.43, 4490.15, 4022.16, 3451.78, 4118.04, 4032.44, 4237.74, 3725.41, 4638.97, 5105.57, 5209.65, 4917.72, 4883.95, 4710.2, 4628.92, 4600.49, 4499.77, 4499.37, 4456.1, 4339.25, 4381.72, 4379.11, 4464.86, 4574.16, 4745.42, 4743.75, 4019.59, 3429.85, 3100.69, 2605.97, 2467.96, 2492.5, 2595.52, 2944.83, 3443.63, 4170.69, 4599.8, 4514.63, 4500.36, 4302.27, 4232.33, 4219.27, 4155.09, 4151.72, 4191.78, 4211.79, 4226.67, 4298.4, 4540.8, 4598.57, 3926.43, 3267.84, 2922.76, 2671.83, 2571.36, 2732.03, 2860.2, 3354.57, 3855.32, 4527.88, 4755.18, 4612.16, 4577.19, 4533.64, 4467.06, 4455.91, 4377.69, 4372.45, 4324.21, 4335.31, 4356.44, 4372.1, 4356.01, 4303.27, 3593.04, 2924.64, 2518.89, 1996.42, 2354.37, 2326.72, 2488.24, 2856.15, 3424.19, 4211.79, 4589.25, 4566.31, 4495.95, 4489.3, 4394.58, 4379.33, 4346.77, 4339.85, 4230.59, 4385.73, 4440.77, 4451.35, 4414.5, 4376.64, 3684.68, 2956.08, 2607.33, 2409.7, 2343.15, 2607.05, 3015.22, 3229.7, 4055.37, 4450.74, 4564.46, 4444.72, 4411.97, 4313.81, 4375.26, 4425.57, 4387.83, 4362.1, 4368.77, 4339.44, 4334.19, 4427.36, 4563.45, 4727.62, 4688.81, 4416.23, 4082.98, 3012.43, 3959.75, 4065.5, 4040.22, 4785.25, 4857.98, 5024.71, 5080.95, 4787.6, 4715.88, 4662.14, 4577.23, 4553.16, 4479.84, 4520.23, 4524.22, 4525.61, 4546.61, 4658.67, 4827.82, 5033.33, 4939.21, 4824.27, 4411.38, 3738.43, 3204.08, 4176.17, 5303.01, 5077.47, 5038.96, 4624.81, 4997.95, 4808.45, 4739.48, 4667.53, 4515.6, 4528.77, 4495.08, 4495.82, 4458.3, 4465.78, 4485.13, 4584.53, 4785.66, 4853.59, 4357.37, 3683.6, 3318.99, 3077.7, 2729.86, 3571.55, 4537.93, 4436.68, 4382.52, 4901.72, 4890.84, 4681.24, 4644.27, 4560.93, 4483.28, 4468.64, 4397.45, 4369.52, 4350.48, 4377.59, 4417.73, 4518.03, 4760.66, 4765.53, 4251.22, 3520.28, 3251.34, 3087.62, 2929.8, 3035.31, 3195.42, 3846.5, 4636.7, 4724.44, 4980.84, 4739.27, 4730.66, 4683.09, 4623.9, 4588.7, 4577.14, 4567.73, 4518.04, 4515.08, 4543.93, 4647.74, 4775.96, 4885.0, 4411.47, 3772.41, 3413.51, 3158.0, 3013.15, 3140.78, 3143.72, 4427.8, 3966.09, 4747.12, 5026.95, 4707.56, 4647.49, 4616.25, 4524.36, 4507.82, 4483.82, 4472.26, 4471.28, 4475.97, 4483.67, 4485.38, 4477.5, 4468.6, 3318.3, 2804.15, 2462.22, 2173.59, 2078.13, 2761.38, 3571.51, 3611.58, 3867.52, 4454.34, 4472.29, 4425.45, 4468.21, 4397.68, 4396.59, 4380.96, 4348.27, 4268.15, 4293.72, 4274.23, 4343.48, 4335.74, 4387.76, 4366.08, 3635.44, 3042.02, 2384.95, 2099.63, 2030.9, 2169.29, 2330.15, 2748.25, 3409.01, 4176.07, 4528.58, 4465.98, 4448.91, 4398.55, 4309.5, 4349.3, 4322.87, 4335.87, 4310.75, 4271.82, 4340.15, 4439.3, 4622.76, 4717.22, 4528.44, 4215.98, 3725.39, 3741.81, 3490.84, 3609.39, 3905.55, 4445.66, 4638.19, 4819.71, 4905.8, 4743.2, 4740.79, 4606.16, 4522.05, 4491.47, 4481.02, 4489.57, 4466.36, 4477.89, 4478.27, 4546.73, 4762.53, 4816.85, 4401.14, 3756.87, 3384.83, 3131.4, 3094.51, 3237.92, 3273.44, 3557.35, 3978.91, 4567.47, 4738.42, 4597.13, 4583.38, 4528.98, 4486.92, 4478.86, 4467.12, 4449.61, 4403.1, 4379.88, 4462.01, 4520.3, 4777.25, 4821.8, 4284.89, 3648.24, 3276.9, 3078.41, 2999.87, 3072.62, 3258.59, 3663.88, 4194.23, 4741.35, 4882.71, 4702.67, 4628.45, 4561.12, 4500.11, 4462.87, 4453.22, 4445.93, 4413.27, 4382.23, 4345.5, 4445.07, 4728.59, 4784.28, 4402.12, 3662.59, 3186.57, 3070.85, 3143.48, 3565.01, 4156.26, 3750.15, 5041.75, 5004.39, 4979.86, 4728.18, 4634.76, 4574.18, 4457.03, 4431.98, 4354.03, 4351.54, 4394.61, 4413.19, 4405.46, 4464.39, 4562.72, 4656.22, 4201.68, 4078.16, 3181.36, 2949.3, 3780.12, 4267.51, 3800.3, 4342.48, 4622.91, 4608.48, 4715.67, 4534.43, 4515.88, 4490.03, 4490.63, 4477.18, 4502.47, 4502.49, 4486.14, 4443.6, 4484.12, 4510.59, 4606.24, 4522.69, 3882.98, 3118.46, 2570.49, 2293.33, 2142.15, 2255.45, 2496.19, 2862.68, 3819.71, 4277.28, 4516.15, 4439.97, 4421.75, 4362.56, 4354.56, 4286.05, 4288.48, 4322.54, 4340.18, 4329.76, 4376.26, 4407.67, 4423.59, 4420.37, 3576.83, 2824.47, 2448.62, 2189.12, 2034.93, 2659.99, 2659.76, 2854.56, 3447.37, 4311.77, 4555.37, 4426.91, 4352.2, 4349.77, 4284.08, 4231.16, 4191.95, 4125.81, 4102.21, 4092.88, 4090.5, 4400.04, 4570.62, 4583.0, 4077.75, 3366.75, 3007.1, 2803.85, 2643.71, 2816.83, 3018.23, 3291.22, 3858.77, 4483.75, 4636.05, 4458.29, 4310.69, 4258.71, 4174.79, 4106.52, 4103.64, 4131.06, 4109.21, 4079.31, 4212.07, 4266.4, 4464.59, 4613.95, 4637.78, 4559.99, 4340.99, 4228.71, 4114.42, 4184.53, 4347.21, 4431.57, 4479.95, 4470.21, 4281.29, 4129.18, 4019.95, 3949.75, 3906.55, 3889.79, 3896.55, 3878.83, 3878.98, 3837.31, 3927.09, 3986.09, 4221.69, 4465.21, 4538.5, 4222.08, 3993.4, 3835.77, 3831.57, 3224.91, 2629.34, 2929.88, 3604.4, 4072.83, 4277.2, 4200.23, 4181.71, 4133.44, 4071.58, 4046.75, 4023.42, 3996.43, 3912.41, 3845.71, 3876.07, 3977.59, 4186.42, 4431.08, 4594.4, 4148.49, 3082.64, 2704.41, 2415.07, 2560.49, 2745.36, 3066.43, 3699.73, 4242.32, 4463.75, 4278.26, 4431.09, 4376.04, 4167.19, 4142.29, 4127.1, 4131.23, 3991.33, 4010.24, 4019.56, 4080.06, 4331.66, 4433.49, 3890.2, 3318.7, 3082.64, 2659.91, 2384.62, 2462.85, 4042.96, 4115.88, 3679.12, 4263.44, 4420.57, 4151.82, 4079.69, 4056.29, 3910.86, 3917.93, 3864.47, 3939.52, 3954.41, 3966.82, 3875.64, 3879.12, 4086.95, 3938.69, 3722.4, 3506.47, 2074.86, 2138.71, 1392.41, 1502.31, 1928.86, 2198.09, 2899.42, 3681.27, 3836.71, 3873.34, 3864.39, 3888.44, 3880.84, 3885.93, 3794.78, 3808.33, 3792.09, 3773.09, 3820.19, 3826.9, 3858.5, 3820.69, 3234.55, 2386.01, 1873.33, 1663.33, 1513.69, 1493.27, 1696.84, 2127.69, 2878.97, 3650.87, 3815.11, 3859.43, 3780.53, 3749.04, 3790.28, 3783.64, 3771.06, 3767.33, 3749.69, 3762.15, 3800.77, 3954.73, 4110.36, 4194.9, 3771.22, 3021.81, 2631.44, 2374.14, 2281.47, 2555.37, 2725.96, 3149.77, 3689.8, 4487.39, 4550.05, 4416.6, 4276.55, 4219.38, 4141.58, 4101.61, 4020.56, 3963.93, 3971.22, 3961.56, 3963.97, 4085.41, 4372.0, 4475.3, 4493.76, 4209.3, 3804.31, 2737.8, 2654.71, 2931.85, 3016.93, 3506.09, 4156.39, 4636.53, 4756.16, 4575.28, 4505.48, 4407.5, 4349.83, 4301.71, 4220.59, 4252.12, 4233.32, 4240.57, 4276.85, 4374.32, 4510.25, 4603.61, 4628.9, 4372.39, 3587.12, 3885.33, 3033.52, 3060.43, 4489.77, 4691.45, 4649.0, 4817.82, 4757.93, 4615.78, 4546.57, 4505.22, 4432.05, 4408.85, 4375.85, 4420.39, 4431.29, 4425.21, 4531.38, 4641.97, 4790.16, 4844.77, 4938.47, 4903.47, 4998.08, 4979.37, 4909.44, 4881.14, 4817.77, 4784.83, 4707.18, 4638.3, 4615.87, 4458.34, 4398.33, 4328.92, 4243.13, 4213.12, 4161.62, 4171.3, 4146.03, 4104.88, 4153.82, 4181.22, 4340.3, 4471.68, 4421.83, 4387.79, 4332.86, 4252.39, 4037.27, 3778.95, 3540.58, 3386.61, 3851.77, 4448.05, 4529.69, 4371.13, 4300.19, 4251.76, 4229.09, 4208.88, 4183.95, 4176.19, 4154.06, 4139.3, 4199.62, 4256.37, 4292.25, 4289.18, 3778.02, 2889.64, 2349.6, 2053.02, 1905.78, 1925.14, 2142.93, 2576.4, 3302.66, 4024.89, 4188.43, 4148.8, 4054.61, 4045.46, 3981.07, 3979.72, 3956.09, 3993.81, 3996.84, 4015.69, 3994.18, 4031.31, 4025.67, 4012.69, 3445.32, 2639.29, 2137.77, 1820.3, 1719.57, 1788.37, 2021.8, 2561.49, 3296.25, 3975.91, 4162.23, 4021.45, 4231.63, 4174.94, 4095.59, 4120.51, 4083.87, 4079.61, 4080.35, 4064.99, 4019.5, 4106.72, 4402.83, 4429.38, 4044.43, 3424.47, 3196.19, 2939.82, 2758.18, 2903.17, 3078.32, 4700.94, 4786.57, 4609.48, 4721.68, 4469.37, 4418.13, 4389.77, 4314.89, 4268.57, 4165.23, 4171.07, 4183.19, 4282.83, 4409.36, 4454.43, 4708.92, 4709.41, 4253.08, 3557.3, 3566.23, 2938.09, 2730.81, 2754.64, 2871.64, 3404.8, 4104.7, 4631.77, 4658.19, 4461.6, 4322.28, 4238.91, 4109.59, 4102.42, 4033.62, 4054.16, 4038.81, 4003.34, 4024.77, 4101.57, 4306.82, 4410.85, 4226.39, 4040.09, 3767.34, 3435.51, 4086.37, 3924.25, 3645.11, 3677.36, 4776.6, 4754.44, 4736.27, 4521.43, 4449.16, 4398.44, 4352.57, 4268.66, 4365.9, 4397.18, 4368.41, 4359.4, 4429.02, 4449.06, 4694.15, 4760.85, 4530.28, 4468.59, 4296.02, 4289.84, 3696.29, 3969.79, 4010.2, 4828.96, 4846.25, 5017.67, 4777.85, 4584.21, 4514.9, 4433.2, 4389.73, 4367.64, 4326.11, 4313.29, 4187.29, 4121.85, 4157.38, 4041.86, 4222.51, 4271.76, 4127.41, 3877.55, 4011.87, 4621.94, 4779.18, 4657.88, 4383.97, 4002.67, 3807.22, 4473.53, 4520.52, 4474.15, 4459.81, 4272.87, 4165.78, 4163.16, 4174.23, 4145.1, 4137.89, 4150.21, 4158.4, 4181.53, 4152.9, 4061.41, 3664.58, 2698.95, 2355.19, 2069.26, 1872.55, 1914.17, 2148.85, 2609.09, 3328.65, 3987.07, 4093.64, 4065.14, 3972.22, 3959.38, 3920.53, 3913.37, 3899.27, 3909.48, 3967.89, 3936.32, 3955.57, 3973.15, 3995.82, 3966.33, 3511.92, 2639.81, 2132.53, 2923.13, 2764.36, 3201.17, 3323.05, 3483.44, 2998.23, 3806.63, 3973.58, 3958.71, 3993.81, 3994.59, 3988.0, 4046.97, 4021.04, 3986.33, 3956.64, 3961.68, 4000.84, 4112.24, 4320.51, 4464.86, 4118.37, 3353.7, 3021.87, 2601.96, 2518.76, 2909.58, 4205.06, 4176.95, 4544.93, 4490.86, 4466.83, 4376.59, 4305.79, 4263.88, 4176.39, 4146.64, 4108.67, 4059.43, 4045.3, 4009.06, 4045.19, 4116.19, 4338.62, 4452.19, 4103.76, 3619.99, 3787.69, 3184.46, 3254.16, 3867.2, 3667.75, 3645.86, 4271.99, 4644.47, 4587.01, 4331.16, 4449.03, 4434.8, 4377.8, 4313.47, 4326.97, 4300.7, 4262.43, 4254.78, 4203.34, 4273.73, 4428.01, 4572.49, 4458.16, 3520.59, 3370.08, 3157.57, 2991.65, 4735.52, 4859.0, 4986.48, 4763.26, 4684.15, 4559.54, 4452.19, 4344.88, 4306.73, 4279.27, 4291.48, 4261.95, 4247.01, 4284.95, 4185.83, 4188.31, 4267.02, 4437.46, 4581.63, 4670.1, 4524.35, 4457.35, 4118.83, 4179.98, 4160.83, 4078.83, 4163.06, 4480.82, 4649.08, 4598.56, 4528.21, 4555.68, 4229.3, 4040.52, 4000.22, 4014.42, 3978.82, 3920.95, 3897.83, 3934.06, 3994.49, 4199.3, 4318.97, 4439.68, 4092.22, 4030.78, 4213.88, 4144.34, 4038.11, 3981.25, 3850.82, 4076.34, 4412.29, 4429.34, 4226.92, 4149.55, 4026.54, 4065.92, 4269.49, 4105.31, 4021.81, 4018.98, 4062.06, 4076.28, 4080.51, 4116.03, 4127.66, 3686.4, 3209.68, 3740.66, 3712.83, 2017.83, 2266.84, 2366.35, 2839.96, 3596.45, 4174.24, 4183.09, 4132.27, 4139.77, 4079.46, 4036.92, 4038.72, 4050.54, 4057.22, 4039.97, 4014.14, 4094.81, 4103.34, 4134.25, 4099.86, 4050.8, 4002.05, 3938.39, 3908.03, 3912.46, 3964.26, 3987.55, 4034.1, 4062.64, 4024.03, 4067.37, 4055.83, 4056.57, 4034.3, 4031.76, 4043.31, 4044.61, 4031.4, 4046.42, 4017.33, 4080.23, 4107.13, 4268.33, 4408.45, 4470.79, 4587.72, 4621.16, 4691.34, 4627.59, 4585.22, 4495.77, 4380.86, 4373.04, 4559.2, 4526.95, 4478.39, 4440.41, 4351.75, 4317.04, 4287.33, 4236.3, 4222.4, 4195.81, 4179.99, 4212.17, 4292.94, 4481.8, 4655.13, 4612.31, 4649.87, 4634.0, 4639.22, 4620.88, 4564.52, 4538.45, 4621.06, 4628.57, 4467.08, 4418.21, 4326.68, 4328.34, 4252.68, 4271.7, 4230.55, 4220.44, 4148.85, 4126.13, 4134.16, 4142.27, 4202.89, 4330.75, 4439.28, 4423.77, 4501.34, 4668.08, 4739.42, 4787.12, 4729.34, 4743.04, 4639.97, 4587.21, 4520.73, 4406.46, 4325.17, 4299.82, 4272.91, 4172.9, 4266.18, 4245.06, 4230.04, 4251.23, 4192.96, 4202.33, 4317.66, 4489.42, 4635.01, 4504.79, 4713.35, 4730.02, 4729.76, 4904.64, 4803.21, 4518.04, 4903.9, 4776.53, 4528.99, 4489.32, 4687.23, 4649.05, 4439.05, 4319.25, 4317.73, 4269.2, 4348.28, 4354.44, 4406.75, 4481.13, 4554.54, 4722.7, 4812.63, 4853.49, 4506.81, 4342.19, 4350.62, 4670.1, 4846.44, 4945.49, 5231.75, 5067.98, 4862.91, 4706.5, 4653.06, 4570.72, 4532.74, 4462.69, 4467.12, 4414.81, 4426.11, 4406.1, 4408.24, 4407.11, 4432.02, 4488.15, 4449.57, 4234.86, 3791.37, 3641.69, 3858.9, 4104.51, 3468.76, 3386.82, 3574.04, 3966.9, 4338.57, 4337.94, 4319.25, 4339.66, 4315.05, 4280.72, 4253.04, 4204.37, 4192.55, 4181.69, 4196.08, 4217.04, 4238.09, 4203.32, 4020.5, 3594.73, 3833.72, 3398.99, 3196.34, 3826.69, 3790.56, 3905.32, 3858.93, 4316.15, 4359.59, 4370.47, 4392.42, 4294.03, 4285.41, 4291.92, 4327.93, 4281.9, 4260.31, 4266.26, 4222.52, 4359.41, 4402.25, 4504.61, 4564.72, 4164.1, 4533.98, 4165.51, 3786.27, 3237.95, 3166.41, 3699.32, 4394.07, 5021.73, 4850.78, 4468.8, 4309.37, 4165.63, 4151.93, 4114.34, 4097.36, 4063.1, 4092.91, 4088.39, 4051.55, 4127.65, 4213.48, 4378.52, 4189.26, 3723.58, 3105.92, 3129.98, 3227.64, 3204.53, 3385.54, 4005.18, 4709.97, 5089.05, 4692.79, 4603.93, 4237.82, 4192.88, 4165.38, 4045.72, 4056.61, 3986.61, 3992.87, 3988.82, 3955.03, 3965.96, 4077.76, 4276.31, 4071.36, 3555.11, 3212.49, 3127.89, 3346.07, 3507.34, 5078.84, 5099.98, 5160.7, 5131.07, 4712.35, 4603.39, 4400.02, 4335.41, 4307.44, 4231.59, 4228.01, 4164.01, 4166.77, 4180.33, 4149.85, 4181.09, 4315.68, 4493.84, 4542.86, 4136.29, 3364.28, 3418.37, 3135.66, 3221.76, 3379.05, 3891.85, 4644.43, 4927.12, 4587.62, 4443.71, 4330.79, 4298.26, 4197.38, 4178.02, 4136.43, 4119.46, 4119.02, 4144.79, 4096.62, 4063.12, 4152.84, 4297.54, 4094.84, 3591.07, 3407.14, 3217.94, 3179.25, 3107.63, 3655.17, 4039.19, 4810.04, 5168.87, 4902.58, 4653.01, 4538.7, 4502.35, 4437.84, 4355.29, 4347.15, 4309.41, 4333.17, 4315.68, 4309.96, 4320.6, 4346.61, 4400.04, 4158.84, 3419.68, 2838.01, 2625.11, 2492.75, 2535.93, 2805.34, 3229.11, 3788.75, 4188.22, 4191.14, 4159.89, 4142.29, 4099.7, 4085.13, 4038.13, 3994.71, 3995.58, 4005.28, 3994.65, 3972.27, 4004.02, 3991.9, 4040.66, 3813.47, 3015.55, 2385.94, 2392.66, 2066.36, 2120.45, 2263.2, 3644.56, 3912.7, 4038.42, 4020.06, 4046.59, 4101.67, 4008.29, 4056.17, 4059.07, 4092.0, 4081.85, 4135.07, 4046.21, 4011.17, 4018.5, 4095.88, 4272.33, 4432.36, 4630.05, 5001.29, 4973.34, 4860.04, 4908.32, 4846.74, 4759.48, 4878.57, 5007.95, 4973.9, 4792.1, 4672.19, 4641.12, 4593.4, 4504.02, 4486.18, 4282.86, 4230.72, 4206.85, 4197.6, 4219.89, 4318.22, 4531.77, 4553.43, 4394.8, 4729.98, 4235.32, 3357.65, 3069.73, 3194.13, 3947.57, 4495.44, 4810.44, 4734.32, 4492.25, 4447.42, 4466.7, 4462.84, 4325.89, 4294.48, 4276.28, 4284.94, 4264.37, 4186.35, 4384.96, 4501.72, 4604.36, 4491.17, 4516.9, 4509.39, 4356.65, 4529.71, 4506.36, 3329.25, 3707.52, 4512.11, 4868.63, 4746.28, 4641.0, 4479.1, 4420.04, 4158.17, 4079.16, 4071.4, 4005.28, 3988.85, 3984.77, 3947.79, 3983.0, 4168.28, 4350.76, 4260.32, 3724.93, 3189.67, 3028.92, 3365.18, 3611.41, 4043.72, 4668.08, 4860.72, 4910.83, 4818.77, 4619.87, 4552.42, 4470.71, 4471.52, 4393.68, 4411.43, 4400.57, 4379.16, 4375.64, 4333.18, 4342.75, 4372.3, 4571.68, 4606.0, 4617.24, 4219.77, 4470.42, 4244.47, 3216.2, 3430.33, 4356.17, 4820.76, 4883.52, 4818.56, 4681.69, 4429.28, 4372.57, 4309.59, 4370.93, 4354.57, 4328.69, 4284.31, 4318.6, 4283.75, 4254.25, 4283.26, 4305.7, 4304.97, 4008.53, 3724.66, 3135.02, 3211.89, 3792.23, 3382.37, 4025.46, 4022.55, 4402.02, 4378.65, 4274.49, 4232.79, 3988.79, 4006.65, 3935.35, 3978.29, 3953.68, 3979.63, 3993.89, 3963.62, 4006.81, 3986.07, 3972.12, 3890.72, 3139.99, 2555.32, 1030.8, 1222.73, 2344.23, 1584.61, 2327.83, 2777.94, 3252.6, 3440.67, 3393.67, 3568.73, 3463.91, 3457.85, 3484.21, 3521.3, 3502.07, 3493.75, 3477.0, 3444.04, 3478.28, 3559.13, 3882.89, 3834.34, 3228.17, 2771.99, 2546.5, 2498.22, 2494.83, 3572.73, 4622.04, 4789.01, 4370.42, 4465.39, 4370.47, 4117.56, 4108.26, 4110.9, 3889.44, 3868.55, 3825.75, 3788.67, 3761.2, 3785.08, 3823.7, 3884.02, 4109.25, 4073.42, 3286.64, 3701.29, 3992.66, 3975.03, 4124.67, 4482.84, 4852.39, 4936.56, 4950.3, 4512.16, 4450.91, 4305.93, 4204.56, 4068.69, 3988.4, 4055.05, 4040.66, 4041.69, 4034.51, 4035.69, 4104.5, 4106.3, 4232.77, 4235.15, 4656.06, 4531.18, 4523.8, 4395.85, 4775.57, 5118.33, 5154.19, 5130.01, 5156.29, 4623.58, 4321.25, 4168.14, 4121.35, 4098.39, 3976.42, 4022.67, 3997.71, 4034.42, 3993.26, 3919.09, 3956.73, 4062.27, 4283.86, 4459.91, 4937.61, 5272.57, 5330.64, 5424.55, 5253.47, 5287.8, 5276.46, 5313.85, 5108.66, 4755.0, 4356.51, 4333.36, 4305.31, 4252.17, 4133.64, 4115.07, 4039.23, 4025.89, 4046.72, 4038.57, 4135.37, 4174.47, 4343.6, 4474.9, 4669.81, 4835.91, 4862.06, 4846.17, 4614.32, 4464.58, 4077.92, 4278.4, 4484.12, 4450.56, 4274.54, 4175.2, 4163.39, 4057.36, 4005.19, 3988.48, 3969.53, 3950.62, 3952.45, 3970.69, 3930.69, 3924.09, 3922.45, 3849.59, 3498.73, 3237.12, 3189.35, 3049.43, 2778.66, 2503.59, 2865.3, 3513.2, 3852.19, 3872.63, 3858.54, 3782.39, 3770.49, 3782.2, 3786.07, 3780.06, 3765.37, 3750.24, 3681.01, 3694.68, 3722.35, 3728.96, 3772.79, 3773.26, 3739.95, 3455.01, 2539.33, 3423.66, 3321.17, 2460.33, 2744.37, 3474.64, 3965.15, 3964.9, 3971.23, 3914.91, 3886.98, 3893.18, 3889.76, 3877.12, 3928.63, 3924.78, 3930.56, 3940.97, 3975.39, 4082.06, 4296.59, 4359.01, 4092.15, 4465.58, 4371.79, 4548.83, 4690.72, 5096.76, 5219.39, 5053.07, 4817.96, 4425.24, 4235.57, 4169.54, 4150.28, 4121.11, 4152.98, 4140.56, 4118.22, 4146.1, 4172.95, 4139.74, 4213.96, 4273.91, 4372.49, 4398.46, 4303.49, 4258.92, 4185.69, 4116.34, 4095.7, 4079.51, 4125.89, 4205.45, 4316.36, 4256.44, 4190.93, 4194.33, 4150.92, 4117.85, 4076.17, 4099.95, 4106.66, 4126.75, 4172.43, 4153.14, 4207.68, 4248.33, 4410.1, 4392.79, 4334.46, 4042.09, 4069.17, 4047.26, 4094.57, 4039.12, 4268.85, 4401.54, 4437.13, 4427.94, 4392.94, 4246.25, 4214.59, 4168.85, 4133.13, 4158.1, 4098.31, 4114.47, 4046.49, 4079.5, 4130.8, 4224.05, 4321.02, 4288.0, 3949.33, 3948.97, 3823.71, 3839.64, 3676.89, 3641.29, 3769.05, 3974.61, 4179.42, 4108.64, 4061.35, 4075.69, 4046.49, 4017.72, 4100.96, 4079.3, 4028.26, 4084.76, 4076.89, 4074.71, 4096.45, 4144.32, 4273.94, 4309.18, 4056.95, 3865.38, 3852.92, 3590.51, 3679.58, 3898.46, 4063.25, 4213.25, 4283.61, 4255.24, 4175.14, 4139.21, 4125.31, 4105.75, 4079.84, 4093.21, 4030.78, 4068.42, 4073.91, 4014.52, 4073.85, 4104.25, 4135.29, 4062.13, 3759.25, 3768.9, 3784.44, 3598.59, 3529.74, 3277.03, 3469.53, 3862.72, 4151.59, 4153.64, 4080.09, 4058.19, 4127.31, 4088.91, 3985.44, 4004.61, 3975.75, 3956.5, 3921.28, 3954.17, 3970.18, 3964.64, 3981.68, 3971.25, 3518.33, 2917.68, 2698.27, 2544.73, 2663.14, 2803.37, 3154.74, 3861.2, 4135.08, 4142.11, 4125.5, 4134.86, 4127.52, 4135.53, 4078.65, 4061.05, 4001.39, 3934.68, 3927.61, 3983.83, 4092.69, 4119.53, 4327.35, 4423.15, 3966.92, 3651.93, 3729.58, 3633.5, 3558.71, 3436.05, 4031.13, 4675.53, 4958.96, 4519.66, 4383.83, 4290.92, 4165.84, 4095.67, 4055.65, 4020.63, 3985.14, 3979.59, 3823.16, 3800.43, 3979.0, 4039.37, 4286.31, 4317.56, 4043.37, 3813.85, 3483.57, 3343.14, 3204.75, 3364.25, 3813.16, 4513.26, 4762.69, 4649.46, 4428.49, 4267.8, 4192.54, 4186.5, 4085.26, 3807.15, 3775.21, 3779.44, 3753.91, 3764.53, 3747.26, 3836.36, 4061.07, 4177.02, 4185.76, 4049.99, 3999.21, 4005.0, 3933.34, 2982.19, 3479.96, 4114.81, 4556.15, 4563.0, 4485.24, 4367.81, 4291.66, 4259.57, 4146.6, 4157.94, 4093.16, 4093.69, 4055.61, 4057.42, 4039.86, 4146.34, 4330.3, 4501.74, 4625.92, 4751.09, 4817.43, 4752.81, 4607.2, 4772.45, 4941.8, 4933.0, 4833.73, 4691.09, 4570.18, 4502.39, 4462.73, 4379.37, 4291.17, 4270.63, 4252.26, 4287.8, 4278.55, 4226.81, 4176.32, 4240.73, 4507.2, 4594.11, 4505.36, 3932.34, 3282.61, 3164.74, 3073.59, 3356.3, 3844.52, 4436.45, 4785.1, 4638.54, 4514.93, 4442.54, 4449.18, 4448.54, 4372.34, 4321.11, 4335.16, 4319.75, 4276.27, 4274.58, 4298.18, 4332.19, 4338.54, 4255.08, 3786.16, 3684.43, 3542.81, 2877.27, 2538.43, 3229.64, 3464.67, 4005.83, 4233.75, 4242.23, 4284.77, 4225.24, 4253.73, 4237.98, 4008.16, 4031.68, 4027.64, 4041.19, 4024.61, 4015.08, 4004.2, 4020.77, 4059.07, 4069.13, 3951.19, 3707.44, 3509.81, 3491.38, 3436.24, 2685.98, 3379.9, 4259.6, 4398.07, 4326.11, 4296.54, 4255.15, 4309.63, 4273.29, 4252.75, 4250.46, 4240.67, 4255.21, 4271.93, 4258.75, 4286.06, 4330.02, 4554.88, 4618.45, 4212.45, 3641.31, 3284.76, 3358.61, 3896.54, 4258.33, 4404.97, 4523.44, 4681.52, 4629.33, 4486.26, 4421.43, 4291.07, 4278.31, 4206.05, 4181.83, 4148.47, 4173.25, 4132.4, 4155.64, 4171.5, 4233.08, 4453.55, 4526.52, 4182.37, 4248.29, 3499.17, 3576.4, 3550.21, 3532.31, 4550.21, 4764.25, 4737.3, 4649.36, 4520.04, 4373.36, 4405.29, 4381.94, 4217.01, 4188.39, 4146.0, 4160.45, 4149.04, 4143.37, 4178.36, 4321.99, 4468.09, 4542.15, 4155.49, 3620.16, 4206.53, 4393.16, 4397.26, 3875.49, 4170.5, 4521.43, 4743.92, 4712.94, 4477.81, 4396.98, 4334.12, 4290.02, 4211.52, 4212.09, 4172.06, 4178.44, 4213.0, 4161.36, 4149.46, 4208.61, 4379.68, 4546.25, 4761.09, 5418.63, 4422.23, 3356.98, 3368.26, 4444.53, 4704.72, 4552.86, 4837.95, 4778.4, 4553.72, 4484.67, 4518.25, 4486.41, 4469.94, 4427.75, 4377.65, 4453.36, 4475.98, 4436.16, 4468.28, 4537.73, 4672.07, 4746.87, 4355.46, 4226.48, 3858.67, 3291.9, 3251.42, 3699.89, 4009.9, 4693.3, 4896.08, 4812.98, 4692.22, 4605.3, 4575.42, 4536.67, 4483.08, 4472.32, 4457.88, 4446.95, 4432.06, 4443.22, 4478.63, 4487.81, 4553.1, 4537.33, 4181.86, 3538.64, 4116.18, 4269.82, 3979.22, 4261.63, 4173.96, 4477.01, 4530.2, 4538.56, 4521.33, 4484.73, 4484.42, 4504.33, 4520.15, 4545.55, 4495.29, 4502.92, 4456.09, 4449.6, 4520.83, 4555.19, 4560.34, 4522.19, 4457.92, 4234.09, 3997.44, 3699.55, 3665.58, 3894.15, 3961.07, 4241.72, 4386.6, 4397.39, 4359.78, 4364.98, 4362.15, 4368.12, 4347.15, 4344.88, 4321.05, 4295.09, 4253.73, 4316.82, 4438.89, 4506.58, 4626.29, 4868.3, 5027.34, 5031.67, 4369.08, 3532.85, 3343.32, 4084.57, 4133.69, 4611.78, 4929.53, 4931.04, 4725.71, 4661.22, 4609.0, 4515.26, 4473.61, 4506.59, 4473.83, 4488.78, 4512.59, 4508.6, 4560.91, 4602.89, 4834.0, 4915.35, 4527.04, 4086.52, 3610.83, 3613.96, 3859.85, 3462.09, 3915.69, 4567.13, 4867.4, 4796.17, 4626.28, 4567.56, 4552.71, 4533.7, 4411.33, 4388.33, 4370.95, 4381.88, 4320.64, 4338.53, 4343.39, 4436.39, 4630.95, 4702.72, 4438.21, 3756.44, 3480.47, 3295.18, 3324.72, 3731.42, 4021.66, 4623.61, 4753.28, 4646.86, 4509.5, 4437.76, 4419.4, 4359.37, 4282.72, 4241.67, 4242.01, 4221.42, 4228.64, 4240.86, 4280.58, 4392.1, 4587.39, 4695.33, 4620.59, 4156.64, 4041.54, 3664.31, 3628.54, 4062.76, 4428.48, 4530.93, 4699.29, 4658.92, 4511.21, 4400.22, 4374.27, 4315.16, 4228.4, 4236.79, 4182.71, 4179.58, 4136.29, 4139.75, 4156.65, 4260.61, 4438.92, 4491.63, 4173.5, 3606.02, 3177.97, 3007.98, 3018.14, 3354.15, 3914.89, 4524.51, 4676.73, 4575.94, 4433.08, 4356.56, 4309.08, 4192.42, 4120.36, 4167.43, 4156.27, 4139.3, 4134.53, 4131.85, 4156.81, 4202.46, 4248.88, 4154.54, 3764.13, 3088.44, 2699.36, 2640.56, 2603.45, 2661.25, 3180.1, 3868.04, 4185.18, 4202.38, 4110.99, 4087.57, 4044.26, 4055.78, 3981.34, 3988.77, 4041.33, 4017.46, 4018.76, 4023.85, 4042.76, 4081.21, 4111.38, 4107.71, 3863.03, 3209.7, 2872.51, 2912.68, 2479.91, 3479.07, 3664.29, 3968.92, 4282.15, 4261.74, 4241.48, 4215.64, 4219.45, 4202.08, 4182.58, 4187.88, 4162.2, 4141.91, 4131.49, 4127.98, 4193.43, 4268.9, 4368.2, 4514.4, 4540.16, 4510.11, 4204.03, 4039.33, 3846.08, 3991.05, 4023.29, 4489.98, 4523.43, 4400.68, 4217.86, 4152.66, 4154.4, 4133.23, 4036.75, 4013.84, 4007.07, 3998.95, 3921.5, 3931.25, 3951.24, 3976.94, 4089.85, 4105.13, 3972.06, 3753.57, 3777.42, 3570.17, 3402.26, 3479.78, 3327.08, 3740.51, 4067.49, 4038.12, 3976.45, 3979.98, 3934.69, 3904.75, 3923.38, 3957.56, 3953.95, 3940.33, 3931.49, 3931.72, 3951.68, 4013.48, 4036.88, 4076.28, 3691.38, 3154.82, 2648.56, 2504.39, 3292.92, 3934.08, 3940.59, 3971.07, 4102.39, 4150.39, 4054.11, 4001.61, 4021.71, 3990.29, 3964.45, 3998.0, 4010.65, 3977.57, 3970.4, 3972.3, 3996.98, 4038.7, 4197.3, 4365.7, 4107.51, 3352.99, 2979.07, 2835.3, 2937.06, 2977.0, 3608.36, 4189.13, 4506.21, 4491.25, 4435.68, 4353.49, 4354.78, 4321.86, 4246.14, 4216.19, 4142.89, 4129.32, 4150.39, 4114.44, 4219.98, 4302.38, 4455.54, 4597.65, 4301.49, 4200.9, 4144.42, 3791.59, 3344.39, 3312.94, 4363.91, 4548.93, 4639.0, 4635.07, 4551.79, 4483.64, 4481.52, 4475.96, 4367.29, 4367.44, 4348.59, 4337.87, 4336.37, 4323.72, 4408.21, 4425.32, 4464.29, 4463.77, 4362.26, 4324.57, 4288.31, 4280.14, 4270.62, 4313.96, 4348.18, 4415.08, 4466.39, 4464.84, 4452.49, 4484.7, 4477.84, 4455.38, 4455.74, 4420.3, 4431.51, 4434.09, 4460.62, 4434.94, 4461.05, 4435.94, 4443.23, 4452.42, 4288.4, 4019.22, 3795.09, 3713.58, 3597.81, 3586.52, 3816.85, 4201.34, 4481.02, 4527.98, 4505.51, 4467.93, 4449.16, 4444.05, 4427.96, 4394.03, 4383.79, 4384.88, 4396.65, 4400.78, 4472.87, 4511.34, 4627.31, 4737.09, 4486.54, 4035.06, 3826.52, 3574.34, 3409.96, 3444.11, 3775.37, 4459.65, 4845.88, 4813.98, 4718.92, 4618.22, 4607.9, 4573.95, 4509.81, 4463.79, 4453.46, 4422.03, 4428.76, 4437.7, 4462.87, 4547.5, 4688.98, 4756.33, 4489.44, 3835.78, 3467.46, 3278.03, 3172.28, 3211.59, 3706.12, 4689.06, 4789.83, 4770.61, 4895.98, 4641.73, 4556.89, 4544.06, 4566.79, 4610.33] - }, + }, "ElectricTariff": { - "urdb_label": "5e611fec5457a3665e019406" + "monthly_energy_rates": [0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01] }, "ElectricStorage": { "can_grid_charge": false, @@ -66,7 +71,7 @@ "owner_discount_rate_fraction": 0.1, "offtaker_discount_rate_fraction": 0.03, "elec_cost_escalation_rate_fraction": 0.023, - "microgrid_upgrade_cost_fraction": 0.3, + "microgrid_upgrade_cost_fraction": 0.0, "existing_boiler_fuel_cost_escalation_rate_fraction": 0.034, "boiler_fuel_cost_escalation_rate_fraction": 0.034, "chp_fuel_cost_escalation_rate_fraction": 0.034, From ed2e34a4e1c1d790dad14dfeabec1ab0e55f5c00 Mon Sep 17 00:00:00 2001 From: Zolan Date: Wed, 24 Apr 2024 10:39:06 -0600 Subject: [PATCH 03/13] update additional minimize unserved load test --- test/runtests.jl | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index d1b88f41e..d4eda8b87 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -909,12 +909,10 @@ else # run HiGHS tests end @testset "Minimize Unserved Load" begin - - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) d = JSON.parsefile("./scenarios/outage.json") d["ElectricLoad"]["loads_kw"] = ones(8760)*200.0 - d["ElectricLoad"]["loads_kw"][5100:5109] .= 405.0 - d["ElectricLoad"]["loads_kw"][5200:5209] .= 405.0 + d["ElectricLoad"]["loads_kw"][5100:5109] .= 410.0 + d["ElectricLoad"]["loads_kw"][5200:5209] .= 410.0 d["ElectricLoad"]["critical_load_fraction"] = 0.5 d["PV"]["existing_kw"] = 0.0 d["PV"]["min_kw"] = 100.0 @@ -931,6 +929,7 @@ else # run HiGHS tests d["Financial"]["microgrid_upgrade_cost_fraction"] = 0.0 s = Scenario(d) p = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) results = run_reopt(m, p) @test results["Outages"]["expected_outage_cost"] ≈ 0 atol=0.1 @@ -940,10 +939,13 @@ else # run HiGHS tests @test value(m[:binMGTechUsed]["PV"]) ≈ 1 @test value(m[:binMGStorageUsed]) ≈ 1 - # Increase cost of microgrid upgrade, PV not used and some load not met + # Increase cost of microgrid upgrade and PV Size, PV not used and some load not met d["Financial"]["microgrid_upgrade_cost_fraction"] = 0.3 + d["PV"]["min_kw"] = 200.0 + d["PV"]["max_kw"] = 200.0 s = Scenario(d) p = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) results = run_reopt(m, p) @test value(m[:binMGTechUsed]["PV"]) ≈ 0 @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) > 0 @@ -990,7 +992,6 @@ else # run HiGHS tests p = REoptInputs(s) m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) results = run_reopt(m, p) - print(results["Messages"]) @test value(m[:binMGTechUsed]["Generator"]) ≈ 1 @test value(m[:binMGTechUsed]["PV"]) ≈ 1 @test value(m[:binMGTechUsed]["Wind"]) ≈ 1 From 1d6c088f5ae2030a6a01968a7a68d58b20086694 Mon Sep 17 00:00:00 2001 From: Bill Becker Date: Mon, 22 Apr 2024 23:01:01 -0600 Subject: [PATCH 04/13] Temporarily disable ubuntu tests because always timing out --- .github/workflows/CI.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index e42928479..4331ae6ab 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -13,7 +13,8 @@ jobs: matrix: julia-version: ['1.8'] julia-arch: [x64] - os: [ubuntu-latest, windows-latest, macOS-11] + # os: [ubuntu-latest, windows-latest, macOS-11] + os: [windows-latest, macOS-11] steps: - uses: actions/checkout@v2 From b9f87e96f3544562c016dd35c0acf78356671b5f Mon Sep 17 00:00:00 2001 From: Zolan Date: Wed, 24 Apr 2024 14:13:33 -0600 Subject: [PATCH 05/13] simplify emissions + RE testset --- test/runtests.jl | 34 +++++++++++----------- test/scenarios/re_emissions_elec_only.json | 4 +-- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index d4eda8b87..f6494a55d 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -2023,41 +2023,41 @@ else # run HiGHS tests end if i == 1 - @test results["PV"]["size_kw"] ≈ 60.12 atol=1e-1 + @test results["PV"]["size_kw"] ≈ 59.7222 atol=1e-1 @test results["ElectricStorage"]["size_kw"] ≈ 0.0 atol=1e-1 @test results["ElectricStorage"]["size_kwh"] ≈ 0.0 atol=1e-1 - @test results["Generator"]["size_kw"] ≈ 21.52 atol=1e-1 + @test results["Generator"]["size_kw"] ≈ 9.13 atol=1e-1 @test results["Site"]["total_renewable_energy_fraction"] ≈ 0.8 - @test results["Site"]["total_renewable_energy_fraction_bau"] ≈ 0.147576 atol=1e-4 - @test results["Site"]["lifecycle_emissions_reduction_CO2_fraction"] ≈ 0.58694032 atol=1e-4 - @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] ≈ 355.8 atol=1 - @test results["Site"]["annual_emissions_tonnes_CO2"] ≈ 11.64 atol=1e-2 - @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] ≈ 7.0605 + @test results["Site"]["total_renewable_energy_fraction_bau"] ≈ 0.148375 atol=1e-4 + @test results["Site"]["lifecycle_emissions_reduction_CO2_fraction"] ≈ 0.57403012 atol=1e-4 + @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] ≈ 332.4 atol=1 + @test results["Site"]["annual_emissions_tonnes_CO2"] ≈ 11.85 atol=1e-2 + @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] ≈ 7.427 @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2_bau"] ≈ 0.0 - @test results["Financial"]["lifecycle_emissions_cost_climate"] ≈ 8315.69 atol=1 - @test results["Site"]["lifecycle_emissions_tonnes_CO2"] ≈ 232.85 - @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2"] ≈ 141.21 + @test results["Financial"]["lifecycle_emissions_cost_climate"] ≈ 8459.45 atol=1 + @test results["Site"]["lifecycle_emissions_tonnes_CO2"] ≈ 236.95 + @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2"] ≈ 148.54 @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2_bau"] ≈ 0.0 - @test results["ElectricUtility"]["annual_emissions_tonnes_CO2_bau"] ≈ 28.186 atol=1e-1 - @test results["ElectricUtility"]["lifecycle_emissions_tonnes_CO2_bau"] ≈ 563.72 + @test results["ElectricUtility"]["annual_emissions_tonnes_CO2_bau"] ≈ 27.813 atol=1e-1 + @test results["ElectricUtility"]["lifecycle_emissions_tonnes_CO2_bau"] ≈ 556.26 elseif i == 2 #commented out values are results using same levelization factor as API @test results["PV"]["size_kw"] ≈ 106.13 atol=1 - @test results["ElectricStorage"]["size_kw"] ≈ 21.58 atol=1 # 20.29 - @test results["ElectricStorage"]["size_kwh"] ≈ 166.29 atol=1 + @test results["ElectricStorage"]["size_kw"] ≈ 20.09 atol=1 # 20.29 + @test results["ElectricStorage"]["size_kwh"] ≈ 170.94 atol=1 @test !haskey(results, "Generator") # Renewable energy @test results["Site"]["renewable_electricity_fraction"] ≈ 0.78586 atol=1e-3 @test results["Site"]["renewable_electricity_fraction_bau"] ≈ 0.132118 atol=1e-3 #0.1354 atol=1e-3 - @test results["Site"]["annual_renewable_electricity_kwh_bau"] ≈ 13211.78 atol=10 # 13542.62 atol=10 + @test results["Site"]["annual_renewable_electricity_kwh_bau"] ≈ 13308.5 atol=10 # 13542.62 atol=10 @test results["Site"]["total_renewable_energy_fraction_bau"] ≈ 0.132118 atol=1e-3 # 0.1354 atol=1e-3 # CO2 emissions - totals ≈ from grid, from fuelburn, ER, $/tCO2 breakeven @test results["Site"]["lifecycle_emissions_reduction_CO2_fraction"] ≈ 0.8 atol=1e-3 # 0.8 - @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] ≈ 460.7 atol=1e-1 + @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] ≈ 491.5 atol=1e-1 @test results["Site"]["annual_emissions_tonnes_CO2"] ≈ 11.662 atol=1 @test results["Site"]["annual_emissions_tonnes_CO2_bau"] ≈ 58.3095 atol=1 @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] ≈ 0.0 atol=1 # 0.0 - @test results["Financial"]["lifecycle_emissions_cost_climate"] ≈ 8401.1 atol=1 + @test results["Financial"]["lifecycle_emissions_cost_climate"] ≈ 8397.85 atol=1 @test results["Site"]["lifecycle_emissions_tonnes_CO2_bau"] ≈ 1166.19 atol=1 @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2"] ≈ 0.0 atol=1 # 0.0 @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2_bau"] ≈ 0.0 atol=1 # 0.0 diff --git a/test/scenarios/re_emissions_elec_only.json b/test/scenarios/re_emissions_elec_only.json index 20f230c50..8c56f8700 100644 --- a/test/scenarios/re_emissions_elec_only.json +++ b/test/scenarios/re_emissions_elec_only.json @@ -48,7 +48,7 @@ "production_incentive_max_benefit": 0.0, "state_ibi_fraction": 0.0, "electric_efficiency_full_load": 0.349006, - "electric_efficiency_half_load": 0.326729, + "electric_efficiency_half_load": 0.349006, "only_runs_during_grid_outage": true, "state_rebate_per_kw": 0.0, "installed_cost_per_kw": 600.0, @@ -83,7 +83,7 @@ "critical_load_fraction": 0.8, "loads_kw_is_net": false, "year": 2017, - "doe_reference_name": "MidriseApartment", + "doe_reference_name": "FlatLoad", "annual_kwh": 100000 }, "ElectricStorage": { From b703384181e0a6e385b68b0e0661903275bb911d Mon Sep 17 00:00:00 2001 From: Zolan Date: Wed, 24 Apr 2024 14:55:31 -0600 Subject: [PATCH 06/13] rm "Imported Xpress Test Suite" testset marker (but keep tests) --- test/runtests.jl | 3478 +++++++++++++++++++++++----------------------- 1 file changed, 1738 insertions(+), 1740 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index f6494a55d..af4570319 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -520,1891 +520,1889 @@ else # run HiGHS tests @test reliability_results["mean_cumulative_survival_final_time_step"] ≈ 0.817586 atol=0.001 end - @testset "Imported Xpress Test Suite" begin - @testset "Heating loads and addressable load fraction" begin - # Default LargeOffice CRB with SpaceHeatingLoad and DomesticHotWaterLoad are served by ExistingBoiler - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt(m, "./scenarios/thermal_load.json") + @testset "Heating loads and addressable load fraction" begin + # Default LargeOffice CRB with SpaceHeatingLoad and DomesticHotWaterLoad are served by ExistingBoiler + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(m, "./scenarios/thermal_load.json") + + @test round(results["ExistingBoiler"]["annual_fuel_consumption_mmbtu"], digits=0) ≈ 2904 - @test round(results["ExistingBoiler"]["annual_fuel_consumption_mmbtu"], digits=0) ≈ 2904 - - # Hourly fuel load inputs with addressable_load_fraction are served as expected - data = JSON.parsefile("./scenarios/thermal_load.json") - data["DomesticHotWaterLoad"]["fuel_loads_mmbtu_per_hour"] = repeat([0.5], 8760) - data["DomesticHotWaterLoad"]["addressable_load_fraction"] = 0.6 - data["SpaceHeatingLoad"]["fuel_loads_mmbtu_per_hour"] = repeat([0.5], 8760) - data["SpaceHeatingLoad"]["addressable_load_fraction"] = 0.8 - s = Scenario(data) + # Hourly fuel load inputs with addressable_load_fraction are served as expected + data = JSON.parsefile("./scenarios/thermal_load.json") + data["DomesticHotWaterLoad"]["fuel_loads_mmbtu_per_hour"] = repeat([0.5], 8760) + data["DomesticHotWaterLoad"]["addressable_load_fraction"] = 0.6 + data["SpaceHeatingLoad"]["fuel_loads_mmbtu_per_hour"] = repeat([0.5], 8760) + data["SpaceHeatingLoad"]["addressable_load_fraction"] = 0.8 + s = Scenario(data) + inputs = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(m, inputs) + @test round(results["ExistingBoiler"]["annual_fuel_consumption_mmbtu"], digits=0) ≈ 8760 * (0.5 * 0.6 + 0.5 * 0.8) + + # Monthly fuel load input with addressable_load_fraction is processed to expected thermal load + data = JSON.parsefile("./scenarios/thermal_load.json") + data["DomesticHotWaterLoad"]["monthly_mmbtu"] = repeat([100], 12) + data["DomesticHotWaterLoad"]["addressable_load_fraction"] = repeat([0.6], 12) + data["SpaceHeatingLoad"]["monthly_mmbtu"] = repeat([200], 12) + data["SpaceHeatingLoad"]["addressable_load_fraction"] = repeat([0.8], 12) + + s = Scenario(data) + inputs = REoptInputs(s) + + dhw_thermal_load_expected = sum(data["DomesticHotWaterLoad"]["monthly_mmbtu"] .* data["DomesticHotWaterLoad"]["addressable_load_fraction"]) .* s.existing_boiler.efficiency + space_thermal_load_expected = sum(data["SpaceHeatingLoad"]["monthly_mmbtu"] .* data["SpaceHeatingLoad"]["addressable_load_fraction"]) .* s.existing_boiler.efficiency + @test round(sum(s.dhw_load.loads_kw) / REopt.KWH_PER_MMBTU) ≈ sum(dhw_thermal_load_expected) + @test round(sum(s.space_heating_load.loads_kw) / REopt.KWH_PER_MMBTU) ≈ sum(space_thermal_load_expected) + end + + @testset "CHP" begin + @testset "CHP Sizing" begin + # Sizing CHP with non-constant efficiency, no cost curve, no unavailability_periods + data_sizing = JSON.parsefile("./scenarios/chp_sizing.json") + s = Scenario(data_sizing) inputs = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) results = run_reopt(m, inputs) - @test round(results["ExistingBoiler"]["annual_fuel_consumption_mmbtu"], digits=0) ≈ 8760 * (0.5 * 0.6 + 0.5 * 0.8) - - # Monthly fuel load input with addressable_load_fraction is processed to expected thermal load - data = JSON.parsefile("./scenarios/thermal_load.json") - data["DomesticHotWaterLoad"]["monthly_mmbtu"] = repeat([100], 12) - data["DomesticHotWaterLoad"]["addressable_load_fraction"] = repeat([0.6], 12) - data["SpaceHeatingLoad"]["monthly_mmbtu"] = repeat([200], 12) - data["SpaceHeatingLoad"]["addressable_load_fraction"] = repeat([0.8], 12) - s = Scenario(data) + @test round(results["CHP"]["size_kw"], digits=0) ≈ 342.0 atol=1.0 + @test round(results["Financial"]["lcc"], digits=0) ≈ 1.3476e7 atol=1.0e7 + end + + @testset "CHP Cost Curve and Min Allowable Size" begin + # Fixed size CHP with cost curve, no unavailability_periods + data_cost_curve = JSON.parsefile("./scenarios/chp_sizing.json") + data_cost_curve["CHP"] = Dict() + data_cost_curve["CHP"]["prime_mover"] = "recip_engine" + data_cost_curve["CHP"]["size_class"] = 1 + data_cost_curve["CHP"]["fuel_cost_per_mmbtu"] = 8.0 + data_cost_curve["CHP"]["min_kw"] = 0 + data_cost_curve["CHP"]["min_allowable_kw"] = 555.5 + data_cost_curve["CHP"]["max_kw"] = 555.51 + data_cost_curve["CHP"]["installed_cost_per_kw"] = 1800.0 + data_cost_curve["CHP"]["installed_cost_per_kw"] = [2300.0, 1800.0, 1500.0] + data_cost_curve["CHP"]["tech_sizes_for_cost_curve"] = [100.0, 300.0, 1140.0] + + data_cost_curve["CHP"]["federal_itc_fraction"] = 0.1 + data_cost_curve["CHP"]["macrs_option_years"] = 0 + data_cost_curve["CHP"]["macrs_bonus_fraction"] = 0.0 + data_cost_curve["CHP"]["macrs_itc_reduction"] = 0.0 + + expected_x = data_cost_curve["CHP"]["min_allowable_kw"] + cap_cost_y = data_cost_curve["CHP"]["installed_cost_per_kw"] + cap_cost_x = data_cost_curve["CHP"]["tech_sizes_for_cost_curve"] + slope = (cap_cost_x[3] * cap_cost_y[3] - cap_cost_x[2] * cap_cost_y[2]) / (cap_cost_x[3] - cap_cost_x[2]) + init_capex_chp_expected = cap_cost_x[2] * cap_cost_y[2] + (expected_x - cap_cost_x[2]) * slope + lifecycle_capex_chp_expected = init_capex_chp_expected - + REopt.npv(data_cost_curve["Financial"]["offtaker_discount_rate_fraction"], + [0, init_capex_chp_expected * data_cost_curve["CHP"]["federal_itc_fraction"]]) + + #PV + data_cost_curve["PV"]["min_kw"] = 1500 + data_cost_curve["PV"]["max_kw"] = 1500 + data_cost_curve["PV"]["installed_cost_per_kw"] = 1600 + data_cost_curve["PV"]["federal_itc_fraction"] = 0.26 + data_cost_curve["PV"]["macrs_option_years"] = 0 + data_cost_curve["PV"]["macrs_bonus_fraction"] = 0.0 + data_cost_curve["PV"]["macrs_itc_reduction"] = 0.0 + + init_capex_pv_expected = data_cost_curve["PV"]["max_kw"] * data_cost_curve["PV"]["installed_cost_per_kw"] + lifecycle_capex_pv_expected = init_capex_pv_expected - + REopt.npv(data_cost_curve["Financial"]["offtaker_discount_rate_fraction"], + [0, init_capex_pv_expected * data_cost_curve["PV"]["federal_itc_fraction"]]) + + s = Scenario(data_cost_curve) inputs = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + results = run_reopt(m, inputs) - dhw_thermal_load_expected = sum(data["DomesticHotWaterLoad"]["monthly_mmbtu"] .* data["DomesticHotWaterLoad"]["addressable_load_fraction"]) .* s.existing_boiler.efficiency - space_thermal_load_expected = sum(data["SpaceHeatingLoad"]["monthly_mmbtu"] .* data["SpaceHeatingLoad"]["addressable_load_fraction"]) .* s.existing_boiler.efficiency - @test round(sum(s.dhw_load.loads_kw) / REopt.KWH_PER_MMBTU) ≈ sum(dhw_thermal_load_expected) - @test round(sum(s.space_heating_load.loads_kw) / REopt.KWH_PER_MMBTU) ≈ sum(space_thermal_load_expected) - end + init_capex_total_expected = init_capex_chp_expected + init_capex_pv_expected + lifecycle_capex_total_expected = lifecycle_capex_chp_expected + lifecycle_capex_pv_expected - @testset "CHP" begin - @testset "CHP Sizing" begin - # Sizing CHP with non-constant efficiency, no cost curve, no unavailability_periods - data_sizing = JSON.parsefile("./scenarios/chp_sizing.json") - s = Scenario(data_sizing) - inputs = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - results = run_reopt(m, inputs) - - @test round(results["CHP"]["size_kw"], digits=0) ≈ 342.0 atol=1.0 - @test round(results["Financial"]["lcc"], digits=0) ≈ 1.3476e7 atol=1.0e7 - end + init_capex_total = results["Financial"]["initial_capital_costs"] + lifecycle_capex_total = results["Financial"]["initial_capital_costs_after_incentives"] - @testset "CHP Cost Curve and Min Allowable Size" begin - # Fixed size CHP with cost curve, no unavailability_periods - data_cost_curve = JSON.parsefile("./scenarios/chp_sizing.json") - data_cost_curve["CHP"] = Dict() - data_cost_curve["CHP"]["prime_mover"] = "recip_engine" - data_cost_curve["CHP"]["size_class"] = 1 - data_cost_curve["CHP"]["fuel_cost_per_mmbtu"] = 8.0 - data_cost_curve["CHP"]["min_kw"] = 0 - data_cost_curve["CHP"]["min_allowable_kw"] = 555.5 - data_cost_curve["CHP"]["max_kw"] = 555.51 - data_cost_curve["CHP"]["installed_cost_per_kw"] = 1800.0 - data_cost_curve["CHP"]["installed_cost_per_kw"] = [2300.0, 1800.0, 1500.0] - data_cost_curve["CHP"]["tech_sizes_for_cost_curve"] = [100.0, 300.0, 1140.0] - - data_cost_curve["CHP"]["federal_itc_fraction"] = 0.1 - data_cost_curve["CHP"]["macrs_option_years"] = 0 - data_cost_curve["CHP"]["macrs_bonus_fraction"] = 0.0 - data_cost_curve["CHP"]["macrs_itc_reduction"] = 0.0 - - expected_x = data_cost_curve["CHP"]["min_allowable_kw"] - cap_cost_y = data_cost_curve["CHP"]["installed_cost_per_kw"] - cap_cost_x = data_cost_curve["CHP"]["tech_sizes_for_cost_curve"] - slope = (cap_cost_x[3] * cap_cost_y[3] - cap_cost_x[2] * cap_cost_y[2]) / (cap_cost_x[3] - cap_cost_x[2]) - init_capex_chp_expected = cap_cost_x[2] * cap_cost_y[2] + (expected_x - cap_cost_x[2]) * slope - lifecycle_capex_chp_expected = init_capex_chp_expected - - REopt.npv(data_cost_curve["Financial"]["offtaker_discount_rate_fraction"], - [0, init_capex_chp_expected * data_cost_curve["CHP"]["federal_itc_fraction"]]) - - #PV - data_cost_curve["PV"]["min_kw"] = 1500 - data_cost_curve["PV"]["max_kw"] = 1500 - data_cost_curve["PV"]["installed_cost_per_kw"] = 1600 - data_cost_curve["PV"]["federal_itc_fraction"] = 0.26 - data_cost_curve["PV"]["macrs_option_years"] = 0 - data_cost_curve["PV"]["macrs_bonus_fraction"] = 0.0 - data_cost_curve["PV"]["macrs_itc_reduction"] = 0.0 - - init_capex_pv_expected = data_cost_curve["PV"]["max_kw"] * data_cost_curve["PV"]["installed_cost_per_kw"] - lifecycle_capex_pv_expected = init_capex_pv_expected - - REopt.npv(data_cost_curve["Financial"]["offtaker_discount_rate_fraction"], - [0, init_capex_pv_expected * data_cost_curve["PV"]["federal_itc_fraction"]]) - - s = Scenario(data_cost_curve) - inputs = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - results = run_reopt(m, inputs) - - init_capex_total_expected = init_capex_chp_expected + init_capex_pv_expected - lifecycle_capex_total_expected = lifecycle_capex_chp_expected + lifecycle_capex_pv_expected - - init_capex_total = results["Financial"]["initial_capital_costs"] - lifecycle_capex_total = results["Financial"]["initial_capital_costs_after_incentives"] - - - # Check initial CapEx (pre-incentive/tax) and life cycle CapEx (post-incentive/tax) cost with expect - @test init_capex_total_expected ≈ init_capex_total atol=0.0001*init_capex_total_expected - @test lifecycle_capex_total_expected ≈ lifecycle_capex_total atol=0.0001*lifecycle_capex_total_expected - - # Test CHP.min_allowable_kw - the size would otherwise be ~100 kW less by setting min_allowable_kw to zero - @test results["CHP"]["size_kw"] ≈ data_cost_curve["CHP"]["min_allowable_kw"] atol=0.1 - end - @testset "CHP Unavailability and Outage" begin - """ - Validation to ensure that: - 1) CHP meets load during outage without exporting - 2) CHP never exports if chp.can_wholesale and chp.can_net_meter inputs are False (default) - 3) CHP does not "curtail", i.e. send power to a load bank when chp.can_curtail is False (default) - 4) CHP min_turn_down_fraction is ignored during an outage - 5) Cooling tech production gets zeroed out during the outage period because we ignore the cooling load balance for outage - 6) Unavailability intervals that intersect with grid-outages get ignored - 7) Unavailability intervals that do not intersect with grid-outages result in no CHP production - """ - # Sizing CHP with non-constant efficiency, no cost curve, no unavailability_periods - data = JSON.parsefile("./scenarios/chp_unavailability_outage.json") - - # Add unavailability periods that 1) intersect (ignored) and 2) don't intersect with outage period - data["CHP"]["unavailability_periods"] = [Dict([("month", 1), ("start_week_of_month", 2), - ("start_day_of_week", 1), ("start_hour", 1), ("duration_hours", 8)]), - Dict([("month", 1), ("start_week_of_month", 2), - ("start_day_of_week", 3), ("start_hour", 9), ("duration_hours", 8)])] - - # Manually doing the math from the unavailability defined above - unavail_1_start = 24 + 1 - unavail_1_end = unavail_1_start + 8 - 1 - unavail_2_start = 24*3 + 9 - unavail_2_end = unavail_2_start + 8 - 1 - - # Specify the CHP.min_turn_down_fraction which is NOT used during an outage - data["CHP"]["min_turn_down_fraction"] = 0.5 - # Specify outage period; outage time_steps are 1-indexed - outage_start = unavail_1_start - data["ElectricUtility"]["outage_start_time_step"] = outage_start - outage_end = unavail_1_end - data["ElectricUtility"]["outage_end_time_step"] = outage_end - data["ElectricLoad"]["critical_load_fraction"] = 0.25 - - s = Scenario(data) - inputs = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - results = run_reopt(m, inputs) - - tot_elec_load = results["ElectricLoad"]["load_series_kw"] - chp_total_elec_prod = results["CHP"]["electric_production_series_kw"] - chp_to_load = results["CHP"]["electric_to_load_series_kw"] - chp_export = results["CHP"]["electric_to_grid_series_kw"] - cooling_elec_consumption = results["ExistingChiller"]["electric_consumption_series_kw"] - - # The values compared to the expected values - @test sum([(chp_to_load[i] - tot_elec_load[i]*data["ElectricLoad"]["critical_load_fraction"]) for i in outage_start:outage_end]) ≈ 0.0 atol=0.001 - critical_load = tot_elec_load[outage_start:outage_end] * data["ElectricLoad"]["critical_load_fraction"] - @test sum(chp_to_load[outage_start:outage_end]) ≈ sum(critical_load) atol=0.1 - @test sum(chp_export) == 0.0 - @test sum(chp_total_elec_prod) ≈ sum(chp_to_load) atol=1.0e-5*sum(chp_total_elec_prod) - @test sum(cooling_elec_consumption[outage_start:outage_end]) == 0.0 - @test sum(chp_total_elec_prod[unavail_2_start:unavail_2_end]) == 0.0 - end + # Check initial CapEx (pre-incentive/tax) and life cycle CapEx (post-incentive/tax) cost with expect + @test init_capex_total_expected ≈ init_capex_total atol=0.0001*init_capex_total_expected + @test lifecycle_capex_total_expected ≈ lifecycle_capex_total atol=0.0001*lifecycle_capex_total_expected - @testset "CHP Supplementary firing and standby" begin - """ - Test to ensure that supplementary firing and standby charges work as intended. The thermal and - electrical loads are constant, and the CHP system size is fixed; the supplementary firing has a - similar cost to the boiler and is purcahsed and used when the boiler efficiency is set to a lower - value than that of the supplementary firing. The test also ensures that demand charges are - correctly calculated when CHP is and is not allowed to reduce demand charges. - """ - data = JSON.parsefile("./scenarios/chp_supplementary_firing.json") - data["CHP"]["supplementary_firing_capital_cost_per_kw"] = 10000 - data["ElectricLoad"]["loads_kw"] = repeat([800.0], 8760) - data["DomesticHotWaterLoad"]["fuel_loads_mmbtu_per_hour"] = repeat([6.0], 8760) - data["SpaceHeatingLoad"]["fuel_loads_mmbtu_per_hour"] = repeat([6.0], 8760) - #part 1: supplementary firing not used when less efficient than the boiler and expensive - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - s = Scenario(data) - inputs = REoptInputs(s) - results = run_reopt(m1, inputs) - @test results["CHP"]["size_kw"] == 800 - @test results["CHP"]["size_supplemental_firing_kw"] == 0 - @test results["CHP"]["annual_electric_production_kwh"] ≈ 800*8760 rtol=1e-5 - @test results["CHP"]["annual_thermal_production_mmbtu"] ≈ 800*(0.4418/0.3573)*8760/293.07107 rtol=1e-5 - @test results["ElectricTariff"]["lifecycle_demand_cost_after_tax"] == 0 - @test results["HeatingLoad"]["annual_calculated_total_heating_thermal_load_mmbtu"] == 12.0 * 8760 * data["ExistingBoiler"]["efficiency"] - @test results["HeatingLoad"]["annual_calculated_dhw_thermal_load_mmbtu"] == 6.0 * 8760 * data["ExistingBoiler"]["efficiency"] - @test results["HeatingLoad"]["annual_calculated_space_heating_thermal_load_mmbtu"] == 6.0 * 8760 * data["ExistingBoiler"]["efficiency"] - - #part 2: supplementary firing used when more efficient than the boiler and low-cost; demand charges not reduced by CHP - data["CHP"]["supplementary_firing_capital_cost_per_kw"] = 10 - data["CHP"]["reduces_demand_charges"] = false - data["ExistingBoiler"]["efficiency"] = 0.85 - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - s = Scenario(data) - inputs = REoptInputs(s) - results = run_reopt(m2, inputs) - @test results["CHP"]["size_supplemental_firing_kw"] ≈ 321.71 atol=0.1 - @test results["CHP"]["annual_thermal_production_mmbtu"] ≈ 149136.6 rtol=1e-5 - @test results["ElectricTariff"]["lifecycle_demand_cost_after_tax"] ≈ 5212.7 rtol=1e-5 - end + # Test CHP.min_allowable_kw - the size would otherwise be ~100 kW less by setting min_allowable_kw to zero + @test results["CHP"]["size_kw"] ≈ data_cost_curve["CHP"]["min_allowable_kw"] atol=0.1 end + + @testset "CHP Unavailability and Outage" begin + """ + Validation to ensure that: + 1) CHP meets load during outage without exporting + 2) CHP never exports if chp.can_wholesale and chp.can_net_meter inputs are False (default) + 3) CHP does not "curtail", i.e. send power to a load bank when chp.can_curtail is False (default) + 4) CHP min_turn_down_fraction is ignored during an outage + 5) Cooling tech production gets zeroed out during the outage period because we ignore the cooling load balance for outage + 6) Unavailability intervals that intersect with grid-outages get ignored + 7) Unavailability intervals that do not intersect with grid-outages result in no CHP production + """ + # Sizing CHP with non-constant efficiency, no cost curve, no unavailability_periods + data = JSON.parsefile("./scenarios/chp_unavailability_outage.json") - @testset "FlexibleHVAC" begin - - @testset "Single RC Model heating only" begin - #= - Single RC model: - 1 state/control node - 2 inputs: Ta and Qheat - A = [1/(RC)], B = [1/(RC) 1/C], u = [Ta; Q] - NOTE exogenous_inputs (u) allows for parasitic heat, but it is input as zeros here - - We start with no technologies except ExistingBoiler and ExistingChiller. - FlexibleHVAC is only worth purchasing if its cost is neglible (i.e. below the lcc_bau * MIPTOL) - or if there is a time-varying fuel and/or electricity cost - (and the FlexibleHVAC installed_cost is less than the achievable savings). - =# - - # Austin, TX -> existing_chiller and existing_boiler added with FlexibleHVAC - pf, tamb = REopt.call_pvwatts_api(30.2672, -97.7431); - R = 0.00025 # K/kW - C = 1e5 # kJ/K - # the starting scenario has flat fuel and electricty costs - d = JSON.parsefile("./scenarios/thermal_load.json"); - A = reshape([-1/(R*C)], 1,1) - B = [1/(R*C) 1/C] - u = [tamb zeros(8760)]'; - d["FlexibleHVAC"] = Dict( - "control_node" => 1, - "initial_temperatures" => [21], - "temperature_upper_bound_degC" => 22.0, - "temperature_lower_bound_degC" => 19.8, - "installed_cost" => 300.0, # NOTE cost must be more then the MIPTOL * LCC 5e-5 * 5.79661e6 ≈ 290 to make FlexibleHVAC not worth it - "system_matrix" => A, - "input_matrix" => B, - "exogenous_inputs" => u - ) - - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt([m1,m2], d) - @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) - # @test Meta.parse(r["FlexibleHVAC"]["purchased"]) === false - # @test r["Financial"]["npv"] == 0 - - # put in a time varying fuel cost, which should make purchasing the FlexibleHVAC system economical - # with flat ElectricTariff the ExistingChiller does not benefit from FlexibleHVAC - d["ExistingBoiler"]["fuel_cost_per_mmbtu"] = rand(Float64, (8760))*(50-5).+5; - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - r = run_reopt([m1,m2], d) - @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) - # all of the savings are from the ExistingBoiler fuel costs - # @test Meta.parse(r["FlexibleHVAC"]["purchased"]) === true - # fuel_cost_savings = r["ExistingBoiler"]["lifecycle_fuel_cost_after_tax_bau"] - r["ExistingBoiler"]["lifecycle_fuel_cost_after_tax"] - # @test fuel_cost_savings - d["FlexibleHVAC"]["installed_cost"] ≈ r["Financial"]["npv"] atol=0.1 - - # now increase the FlexibleHVAC installed_cost to the fuel costs savings + 100 and expect that the FlexibleHVAC is not purchased - # d["FlexibleHVAC"]["installed_cost"] = fuel_cost_savings + 100 - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - r = run_reopt([m1,m2], d) - @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) - # @test Meta.parse(r["FlexibleHVAC"]["purchased"]) === false - # @test r["Financial"]["npv"] == 0 - - # add TOU ElectricTariff and expect to benefit from using ExistingChiller intelligently - d["ElectricTariff"] = Dict("urdb_label" => "5ed6c1a15457a3367add15ae") - - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt([m1,m2], d) - @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) - - # elec_cost_savings = r["ElectricTariff"]["lifecycle_demand_cost_after_tax_bau"] + - # r["ElectricTariff"]["lifecycle_energy_cost_after_tax_bau"] - - # r["ElectricTariff"]["lifecycle_demand_cost_after_tax"] - - # r["ElectricTariff"]["lifecycle_energy_cost_after_tax"] - - # fuel_cost_savings = r["ExistingBoiler"]["lifecycle_fuel_cost_after_tax_bau"] - r["ExistingBoiler"]["lifecycle_fuel_cost_after_tax"] - # @test fuel_cost_savings + elec_cost_savings - d["FlexibleHVAC"]["installed_cost"] ≈ r["Financial"]["npv"] atol=0.1 - - # now increase the FlexibleHVAC installed_cost to the fuel costs savings + elec_cost_savings - # + 100 and expect that the FlexibleHVAC is not purchased - # d["FlexibleHVAC"]["installed_cost"] = fuel_cost_savings + elec_cost_savings + 100 - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt([m1,m2], d) - @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) - # @test Meta.parse(r["FlexibleHVAC"]["purchased"]) === false - # @test r["Financial"]["npv"] == 0 + # Add unavailability periods that 1) intersect (ignored) and 2) don't intersect with outage period + data["CHP"]["unavailability_periods"] = [Dict([("month", 1), ("start_week_of_month", 2), + ("start_day_of_week", 1), ("start_hour", 1), ("duration_hours", 8)]), + Dict([("month", 1), ("start_week_of_month", 2), + ("start_day_of_week", 3), ("start_hour", 9), ("duration_hours", 8)])] + + # Manually doing the math from the unavailability defined above + unavail_1_start = 24 + 1 + unavail_1_end = unavail_1_start + 8 - 1 + unavail_2_start = 24*3 + 9 + unavail_2_end = unavail_2_start + 8 - 1 + + # Specify the CHP.min_turn_down_fraction which is NOT used during an outage + data["CHP"]["min_turn_down_fraction"] = 0.5 + # Specify outage period; outage time_steps are 1-indexed + outage_start = unavail_1_start + data["ElectricUtility"]["outage_start_time_step"] = outage_start + outage_end = unavail_1_end + data["ElectricUtility"]["outage_end_time_step"] = outage_end + data["ElectricLoad"]["critical_load_fraction"] = 0.25 - end - end - - #= - add a time-of-export rate that is greater than retail rate for the month of January, - check to make sure that PV does NOT export unless the site load is met first for the month of January. - =# - @testset "Do not allow_simultaneous_export_import" begin - model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - data = JSON.parsefile("./scenarios/monthly_rate.json") - - # create wholesale_rate with compensation in January > retail rate - jan_rate = data["ElectricTariff"]["monthly_energy_rates"][1] - data["ElectricTariff"]["wholesale_rate"] = - append!(repeat([jan_rate + 0.1], 31 * 24), repeat([0.0], 8760 - 31*24)) - data["ElectricTariff"]["monthly_demand_rates"] = repeat([0], 12) - data["ElectricUtility"] = Dict("allow_simultaneous_export_import" => false) - s = Scenario(data) inputs = REoptInputs(s) - results = run_reopt(model, inputs) - - @test all(x == 0.0 for (i,x) in enumerate(results["ElectricUtility"]["electric_to_load_series_kw"][1:744]) - if results["PV"]["electric_to_grid_series_kw"][i] > 0) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + results = run_reopt(m, inputs) + + tot_elec_load = results["ElectricLoad"]["load_series_kw"] + chp_total_elec_prod = results["CHP"]["electric_production_series_kw"] + chp_to_load = results["CHP"]["electric_to_load_series_kw"] + chp_export = results["CHP"]["electric_to_grid_series_kw"] + cooling_elec_consumption = results["ExistingChiller"]["electric_consumption_series_kw"] + + # The values compared to the expected values + @test sum([(chp_to_load[i] - tot_elec_load[i]*data["ElectricLoad"]["critical_load_fraction"]) for i in outage_start:outage_end]) ≈ 0.0 atol=0.001 + critical_load = tot_elec_load[outage_start:outage_end] * data["ElectricLoad"]["critical_load_fraction"] + @test sum(chp_to_load[outage_start:outage_end]) ≈ sum(critical_load) atol=0.1 + @test sum(chp_export) == 0.0 + @test sum(chp_total_elec_prod) ≈ sum(chp_to_load) atol=1.0e-5*sum(chp_total_elec_prod) + @test sum(cooling_elec_consumption[outage_start:outage_end]) == 0.0 + @test sum(chp_total_elec_prod[unavail_2_start:unavail_2_end]) == 0.0 end - - @testset "Solar and ElectricStorage w/BAU and degradation" begin + + @testset "CHP Supplementary firing and standby" begin + """ + Test to ensure that supplementary firing and standby charges work as intended. The thermal and + electrical loads are constant, and the CHP system size is fixed; the supplementary firing has a + similar cost to the boiler and is purcahsed and used when the boiler efficiency is set to a lower + value than that of the supplementary firing. The test also ensures that demand charges are + correctly calculated when CHP is and is not allowed to reduce demand charges. + """ + data = JSON.parsefile("./scenarios/chp_supplementary_firing.json") + data["CHP"]["supplementary_firing_capital_cost_per_kw"] = 10000 + data["ElectricLoad"]["loads_kw"] = repeat([800.0], 8760) + data["DomesticHotWaterLoad"]["fuel_loads_mmbtu_per_hour"] = repeat([6.0], 8760) + data["SpaceHeatingLoad"]["fuel_loads_mmbtu_per_hour"] = repeat([6.0], 8760) + #part 1: supplementary firing not used when less efficient than the boiler and expensive m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + s = Scenario(data) + inputs = REoptInputs(s) + results = run_reopt(m1, inputs) + @test results["CHP"]["size_kw"] == 800 + @test results["CHP"]["size_supplemental_firing_kw"] == 0 + @test results["CHP"]["annual_electric_production_kwh"] ≈ 800*8760 rtol=1e-5 + @test results["CHP"]["annual_thermal_production_mmbtu"] ≈ 800*(0.4418/0.3573)*8760/293.07107 rtol=1e-5 + @test results["ElectricTariff"]["lifecycle_demand_cost_after_tax"] == 0 + @test results["HeatingLoad"]["annual_calculated_total_heating_thermal_load_mmbtu"] == 12.0 * 8760 * data["ExistingBoiler"]["efficiency"] + @test results["HeatingLoad"]["annual_calculated_dhw_thermal_load_mmbtu"] == 6.0 * 8760 * data["ExistingBoiler"]["efficiency"] + @test results["HeatingLoad"]["annual_calculated_space_heating_thermal_load_mmbtu"] == 6.0 * 8760 * data["ExistingBoiler"]["efficiency"] + + #part 2: supplementary firing used when more efficient than the boiler and low-cost; demand charges not reduced by CHP + data["CHP"]["supplementary_firing_capital_cost_per_kw"] = 10 + data["CHP"]["reduces_demand_charges"] = false + data["ExistingBoiler"]["efficiency"] = 0.85 m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - d = JSON.parsefile("scenarios/pv_storage.json"); - d["Settings"] = Dict{Any,Any}("add_soc_incentive" => false) - results = run_reopt([m1,m2], d) - - @test results["PV"]["size_kw"] ≈ 216.6667 atol=0.01 - @test results["PV"]["lcoe_per_kwh"] ≈ 0.0468 atol = 0.001 - @test results["Financial"]["lcc"] ≈ 1.239179e7 rtol=1e-5 - @test results["Financial"]["lcc_bau"] ≈ 12766397 rtol=1e-5 - @test results["ElectricStorage"]["size_kw"] ≈ 49.02 atol=0.1 - @test results["ElectricStorage"]["size_kwh"] ≈ 83.3 atol=0.1 - proforma_npv = REopt.npv(results["Financial"]["offtaker_annual_free_cashflows"] - - results["Financial"]["offtaker_annual_free_cashflows_bau"], 0.081) - @test results["Financial"]["npv"] ≈ proforma_npv rtol=0.0001 - - # compare avg soc with and without degradation, - # using default augmentation battery maintenance strategy - avg_soc_no_degr = sum(results["ElectricStorage"]["soc_series_fraction"]) / 8760 - d["ElectricStorage"]["model_degradation"] = true - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r_degr = run_reopt(m, d) - avg_soc_degr = sum(r_degr["ElectricStorage"]["soc_series_fraction"]) / 8760 - @test avg_soc_no_degr > avg_soc_degr - - # test the replacement strategy - d["ElectricStorage"]["degradation"] = Dict("maintenance_strategy" => "replacement") - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - set_optimizer_attribute(m, "mip_rel_gap", 0.01) - r = run_reopt(m, d) - @test occursin("not supported by the solver", string(r["Messages"]["errors"])) - # #optimal SOH at end of horizon is 80\% to prevent any replacement - # @test sum(value.(m[:bmth_BkWh])) ≈ 0 atol=0.1 - # # @test r["ElectricStorage"]["maintenance_cost"] ≈ 2972.66 atol=0.01 - # # the maintenance_cost comes out to 3004.39 on Actions, so we test the LCC since it should match - # @test r["Financial"]["lcc"] ≈ 1.240096e7 rtol=0.01 - # @test last(value.(m[:SOH])) ≈ 66.633 rtol=0.01 - # @test r["ElectricStorage"]["size_kwh"] ≈ 83.29 rtol=0.01 - - # test minimum_avg_soc_fraction - d["ElectricStorage"]["minimum_avg_soc_fraction"] = 0.72 - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - set_optimizer_attribute(m, "mip_rel_gap", 0.01) - r = run_reopt(m, d) - @test occursin("not supported by the solver", string(r["Messages"]["errors"])) - # @test round(sum(r["ElectricStorage"]["soc_series_fraction"]), digits=2) / 8760 >= 0.7199 + s = Scenario(data) + inputs = REoptInputs(s) + results = run_reopt(m2, inputs) + @test results["CHP"]["size_supplemental_firing_kw"] ≈ 321.71 atol=0.1 + @test results["CHP"]["annual_thermal_production_mmbtu"] ≈ 149136.6 rtol=1e-5 + @test results["ElectricTariff"]["lifecycle_demand_cost_after_tax"] ≈ 5212.7 rtol=1e-5 end - - @testset "Outage with Generator, outage simulator, BAU critical load outputs" begin + end + + @testset "FlexibleHVAC" begin + + @testset "Single RC Model heating only" begin + #= + Single RC model: + 1 state/control node + 2 inputs: Ta and Qheat + A = [1/(RC)], B = [1/(RC) 1/C], u = [Ta; Q] + NOTE exogenous_inputs (u) allows for parasitic heat, but it is input as zeros here + + We start with no technologies except ExistingBoiler and ExistingChiller. + FlexibleHVAC is only worth purchasing if its cost is neglible (i.e. below the lcc_bau * MIPTOL) + or if there is a time-varying fuel and/or electricity cost + (and the FlexibleHVAC installed_cost is less than the achievable savings). + =# + + # Austin, TX -> existing_chiller and existing_boiler added with FlexibleHVAC + pf, tamb = REopt.call_pvwatts_api(30.2672, -97.7431); + R = 0.00025 # K/kW + C = 1e5 # kJ/K + # the starting scenario has flat fuel and electricty costs + d = JSON.parsefile("./scenarios/thermal_load.json"); + A = reshape([-1/(R*C)], 1,1) + B = [1/(R*C) 1/C] + u = [tamb zeros(8760)]'; + d["FlexibleHVAC"] = Dict( + "control_node" => 1, + "initial_temperatures" => [21], + "temperature_upper_bound_degC" => 22.0, + "temperature_lower_bound_degC" => 19.8, + "installed_cost" => 300.0, # NOTE cost must be more then the MIPTOL * LCC 5e-5 * 5.79661e6 ≈ 290 to make FlexibleHVAC not worth it + "system_matrix" => A, + "input_matrix" => B, + "exogenous_inputs" => u + ) + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - p = REoptInputs("./scenarios/generator.json") - results = run_reopt([m1,m2], p) - @test results["Generator"]["size_kw"] ≈ 9.55 atol=0.01 - @test (sum(results["Generator"]["electric_to_load_series_kw"][i] for i in 1:9) + - sum(results["Generator"]["electric_to_load_series_kw"][i] for i in 13:8760)) == 0 - @test results["ElectricLoad"]["bau_critical_load_met"] == false - @test results["ElectricLoad"]["bau_critical_load_met_time_steps"] == 0 + r = run_reopt([m1,m2], d) + @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) + # @test Meta.parse(r["FlexibleHVAC"]["purchased"]) === false + # @test r["Financial"]["npv"] == 0 + + # put in a time varying fuel cost, which should make purchasing the FlexibleHVAC system economical + # with flat ElectricTariff the ExistingChiller does not benefit from FlexibleHVAC + d["ExistingBoiler"]["fuel_cost_per_mmbtu"] = rand(Float64, (8760))*(50-5).+5; + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + r = run_reopt([m1,m2], d) + @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) + # all of the savings are from the ExistingBoiler fuel costs + # @test Meta.parse(r["FlexibleHVAC"]["purchased"]) === true + # fuel_cost_savings = r["ExistingBoiler"]["lifecycle_fuel_cost_after_tax_bau"] - r["ExistingBoiler"]["lifecycle_fuel_cost_after_tax"] + # @test fuel_cost_savings - d["FlexibleHVAC"]["installed_cost"] ≈ r["Financial"]["npv"] atol=0.1 + + # now increase the FlexibleHVAC installed_cost to the fuel costs savings + 100 and expect that the FlexibleHVAC is not purchased + # d["FlexibleHVAC"]["installed_cost"] = fuel_cost_savings + 100 + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + r = run_reopt([m1,m2], d) + @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) + # @test Meta.parse(r["FlexibleHVAC"]["purchased"]) === false + # @test r["Financial"]["npv"] == 0 + + # add TOU ElectricTariff and expect to benefit from using ExistingChiller intelligently + d["ElectricTariff"] = Dict("urdb_label" => "5ed6c1a15457a3367add15ae") + + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt([m1,m2], d) + @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) - simresults = simulate_outages(results, p) - @test simresults["resilience_hours_max"] == 11 + # elec_cost_savings = r["ElectricTariff"]["lifecycle_demand_cost_after_tax_bau"] + + # r["ElectricTariff"]["lifecycle_energy_cost_after_tax_bau"] - + # r["ElectricTariff"]["lifecycle_demand_cost_after_tax"] - + # r["ElectricTariff"]["lifecycle_energy_cost_after_tax"] + + # fuel_cost_savings = r["ExistingBoiler"]["lifecycle_fuel_cost_after_tax_bau"] - r["ExistingBoiler"]["lifecycle_fuel_cost_after_tax"] + # @test fuel_cost_savings + elec_cost_savings - d["FlexibleHVAC"]["installed_cost"] ≈ r["Financial"]["npv"] atol=0.1 + + # now increase the FlexibleHVAC installed_cost to the fuel costs savings + elec_cost_savings + # + 100 and expect that the FlexibleHVAC is not purchased + # d["FlexibleHVAC"]["installed_cost"] = fuel_cost_savings + elec_cost_savings + 100 + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt([m1,m2], d) + @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) + # @test Meta.parse(r["FlexibleHVAC"]["purchased"]) === false + # @test r["Financial"]["npv"] == 0 + end + end - @testset "Minimize Unserved Load" begin - d = JSON.parsefile("./scenarios/outage.json") - d["ElectricLoad"]["loads_kw"] = ones(8760)*200.0 - d["ElectricLoad"]["loads_kw"][5100:5109] .= 410.0 - d["ElectricLoad"]["loads_kw"][5200:5209] .= 410.0 - d["ElectricLoad"]["critical_load_fraction"] = 0.5 - d["PV"]["existing_kw"] = 0.0 - d["PV"]["min_kw"] = 100.0 - d["PV"]["max_kw"] = 100.0 - d["CHP"]["min_kw"] = 100.0 - d["CHP"]["max_kw"] = 100.0 - d["Generator"]["existing_kw"] = 0.0 - d["Generator"]["min_kw"] = 100.0 - d["Generator"]["max_kw"] = 100.0 - d["ElectricStorage"]["min_kw"] = 20 - d["ElectricStorage"]["max_kw"] = 20 - d["ElectricStorage"]["min_kwh"] = 50 - d["ElectricStorage"]["max_kwh"] = 50 - d["Financial"]["microgrid_upgrade_cost_fraction"] = 0.0 - s = Scenario(d) - p = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) - results = run_reopt(m, p) - - @test results["Outages"]["expected_outage_cost"] ≈ 0 atol=0.1 - @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) ≈ 0 atol=0.1 - @test value(m[:binMGTechUsed]["Generator"]) ≈ 1 - @test value(m[:binMGTechUsed]["CHP"]) ≈ 1 - @test value(m[:binMGTechUsed]["PV"]) ≈ 1 - @test value(m[:binMGStorageUsed]) ≈ 1 - - # Increase cost of microgrid upgrade and PV Size, PV not used and some load not met - d["Financial"]["microgrid_upgrade_cost_fraction"] = 0.3 - d["PV"]["min_kw"] = 200.0 - d["PV"]["max_kw"] = 200.0 - s = Scenario(d) - p = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) - results = run_reopt(m, p) - @test value(m[:binMGTechUsed]["PV"]) ≈ 0 - @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) > 0 - - #= - Scenario with $0.001/kWh value_of_lost_load_per_kwh, 12x169 hour outages, 1kW load/hour, and min_resil_time_steps = 168 - - should meet 168 kWh in each outage such that the total unserved load is 12 kWh - =# - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - results = run_reopt(m, "./scenarios/nogridcost_minresilhours.json") - @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) ≈ 12 - - # testing dvUnserved load, which would output 100 kWh for this scenario before output fix - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - results = run_reopt(m, "./scenarios/nogridcost_multiscenario.json") - @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) ≈ 60 - @test results["Outages"]["expected_outage_cost"] ≈ 485.43270 atol=1.0e-5 #avg duration (3h) * load per time step (10) * present worth factor (16.18109) - @test results["Outages"]["max_outage_cost_per_outage_duration"][1] ≈ 161.8109 atol=1.0e-5 - - # Scenario with generator, PV, electric storage - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - results = run_reopt(m, "./scenarios/outages_gen_pv_stor.json") - @test results["Outages"]["expected_outage_cost"] ≈ 3.54476923e6 atol=10 - @test results["Financial"]["lcc"] ≈ 8.6413594727e7 rtol=0.001 - - # Scenario with generator, PV, wind, electric storage - d = JSON.parsefile("./scenarios/outages_gen_pv_wind_stor.json") - d["ElectricLoad"]["loads_kw"] = ones(8760)*200.0 - d["ElectricLoad"]["loads_kw"][5100:5119] .= 425.0 - d["ElectricLoad"]["critical_load_fraction"] = 0.5 - d["PV"]["existing_kw"] = 0.0 - d["PV"]["min_kw"] = 100.0 - d["PV"]["max_kw"] = 100.0 - d["Wind"]["min_kw"] = 100.0 - d["Wind"]["max_kw"] = 100.0 - d["Generator"]["min_kw"] = 100.0 - d["Generator"]["max_kw"] = 100.0 - d["ElectricStorage"]["min_kw"] = 100 - d["ElectricStorage"]["max_kw"] = 100 - d["ElectricStorage"]["min_kwh"] = 100 - d["ElectricStorage"]["max_kwh"] = 100 - d["Site"]["min_resil_time_steps"] = 1 - s = Scenario(d) - p = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - results = run_reopt(m, p) - @test value(m[:binMGTechUsed]["Generator"]) ≈ 1 - @test value(m[:binMGTechUsed]["PV"]) ≈ 1 - @test value(m[:binMGTechUsed]["Wind"]) ≈ 1 - @test results["Outages"]["expected_outage_cost"] ≈ 1.296319791276051e6 atol=1.0 - @test results["Financial"]["lcc"] ≈ 4.8046446434e6 rtol=0.001 - - end + #= + add a time-of-export rate that is greater than retail rate for the month of January, + check to make sure that PV does NOT export unless the site load is met first for the month of January. + =# + @testset "Do not allow_simultaneous_export_import" begin + model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + data = JSON.parsefile("./scenarios/monthly_rate.json") - @testset "Outages with Wind and supply-to-load no greater than critical load" begin - input_data = JSON.parsefile("./scenarios/wind_outages.json") - s = Scenario(input_data) - inputs = REoptInputs(s) - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) - results = run_reopt([m1,m2], inputs) - - # Check that supply-to-load is equal to critical load during outages, including wind - supply_to_load = results["Outages"]["storage_discharge_series_kw"] .+ results["Outages"]["wind_to_load_series_kw"] - supply_to_load = [supply_to_load[:,:,i][1] for i in eachindex(supply_to_load)] - critical_load = results["Outages"]["critical_loads_per_outage_series_kw"][1,1,:] - check = .≈(supply_to_load, critical_load, atol=0.001) - @test !(0 in check) - - # Check that the soc_series_fraction is the same length as the storage_discharge_series_kw - @test size(results["Outages"]["soc_series_fraction"]) == size(results["Outages"]["storage_discharge_series_kw"]) - end + # create wholesale_rate with compensation in January > retail rate + jan_rate = data["ElectricTariff"]["monthly_energy_rates"][1] + data["ElectricTariff"]["wholesale_rate"] = + append!(repeat([jan_rate + 0.1], 31 * 24), repeat([0.0], 8760 - 31*24)) + data["ElectricTariff"]["monthly_demand_rates"] = repeat([0], 12) + data["ElectricUtility"] = Dict("allow_simultaneous_export_import" => false) - @testset "Multiple Sites" begin - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - ps = [ - REoptInputs("./scenarios/pv_storage.json"), - REoptInputs("./scenarios/monthly_rate.json"), - ]; - results = run_reopt(m, ps) - @test results[3]["Financial"]["lcc"] + results[10]["Financial"]["lcc"] ≈ 1.2830872235e7 rtol=1e-5 - end + s = Scenario(data) + inputs = REoptInputs(s) + results = run_reopt(model, inputs) + + @test all(x == 0.0 for (i,x) in enumerate(results["ElectricUtility"]["electric_to_load_series_kw"][1:744]) + if results["PV"]["electric_to_grid_series_kw"][i] > 0) + end - @testset "MPC" begin - model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_mpc(model, "./scenarios/mpc.json") - @test maximum(r["ElectricUtility"]["to_load_series_kw"][1:15]) <= 98.0 - @test maximum(r["ElectricUtility"]["to_load_series_kw"][16:24]) <= 97.0 - @test sum(r["PV"]["to_grid_series_kw"]) ≈ 0 - grid_draw = r["ElectricUtility"]["to_load_series_kw"] .+ r["ElectricUtility"]["to_battery_series_kw"] - # the grid draw limit in the 10th time step is set to 90 - # without the 90 limit the grid draw is 98 in the 10th time step - @test grid_draw[10] <= 90 - end + @testset "Solar and ElectricStorage w/BAU and degradation" begin + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + d = JSON.parsefile("scenarios/pv_storage.json"); + d["Settings"] = Dict{Any,Any}("add_soc_incentive" => false) + results = run_reopt([m1,m2], d) + + @test results["PV"]["size_kw"] ≈ 216.6667 atol=0.01 + @test results["PV"]["lcoe_per_kwh"] ≈ 0.0468 atol = 0.001 + @test results["Financial"]["lcc"] ≈ 1.239179e7 rtol=1e-5 + @test results["Financial"]["lcc_bau"] ≈ 12766397 rtol=1e-5 + @test results["ElectricStorage"]["size_kw"] ≈ 49.02 atol=0.1 + @test results["ElectricStorage"]["size_kwh"] ≈ 83.3 atol=0.1 + proforma_npv = REopt.npv(results["Financial"]["offtaker_annual_free_cashflows"] - + results["Financial"]["offtaker_annual_free_cashflows_bau"], 0.081) + @test results["Financial"]["npv"] ≈ proforma_npv rtol=0.0001 + + # compare avg soc with and without degradation, + # using default augmentation battery maintenance strategy + avg_soc_no_degr = sum(results["ElectricStorage"]["soc_series_fraction"]) / 8760 + d["ElectricStorage"]["model_degradation"] = true + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r_degr = run_reopt(m, d) + avg_soc_degr = sum(r_degr["ElectricStorage"]["soc_series_fraction"]) / 8760 + @test avg_soc_no_degr > avg_soc_degr + + # test the replacement strategy + d["ElectricStorage"]["degradation"] = Dict("maintenance_strategy" => "replacement") + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + set_optimizer_attribute(m, "mip_rel_gap", 0.01) + r = run_reopt(m, d) + @test occursin("not supported by the solver", string(r["Messages"]["errors"])) + # #optimal SOH at end of horizon is 80\% to prevent any replacement + # @test sum(value.(m[:bmth_BkWh])) ≈ 0 atol=0.1 + # # @test r["ElectricStorage"]["maintenance_cost"] ≈ 2972.66 atol=0.01 + # # the maintenance_cost comes out to 3004.39 on Actions, so we test the LCC since it should match + # @test r["Financial"]["lcc"] ≈ 1.240096e7 rtol=0.01 + # @test last(value.(m[:SOH])) ≈ 66.633 rtol=0.01 + # @test r["ElectricStorage"]["size_kwh"] ≈ 83.29 rtol=0.01 + + # test minimum_avg_soc_fraction + d["ElectricStorage"]["minimum_avg_soc_fraction"] = 0.72 + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + set_optimizer_attribute(m, "mip_rel_gap", 0.01) + r = run_reopt(m, d) + @test occursin("not supported by the solver", string(r["Messages"]["errors"])) + # @test round(sum(r["ElectricStorage"]["soc_series_fraction"]), digits=2) / 8760 >= 0.7199 + end - @testset "Complex Incentives" begin - """ - This test was compared against the API test: - reo.tests.test_reopt_url.EntryResourceTest.test_complex_incentives - when using the hardcoded levelization_factor in this package's REoptInputs function. - The two LCC's matched within 0.00005%. (The Julia pkg LCC is 1.0971991e7) - """ - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt(m, "./scenarios/incentives.json") - @test results["Financial"]["lcc"] ≈ 1.094596365e7 atol=5e4 - end + @testset "Outage with Generator, outage simulator, BAU critical load outputs" begin + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + p = REoptInputs("./scenarios/generator.json") + results = run_reopt([m1,m2], p) + @test results["Generator"]["size_kw"] ≈ 9.55 atol=0.01 + @test (sum(results["Generator"]["electric_to_load_series_kw"][i] for i in 1:9) + + sum(results["Generator"]["electric_to_load_series_kw"][i] for i in 13:8760)) == 0 + @test results["ElectricLoad"]["bau_critical_load_met"] == false + @test results["ElectricLoad"]["bau_critical_load_met_time_steps"] == 0 + + simresults = simulate_outages(results, p) + @test simresults["resilience_hours_max"] == 11 + end - @testset verbose = true "Rate Structures" begin + @testset "Minimize Unserved Load" begin + d = JSON.parsefile("./scenarios/outage.json") + d["ElectricLoad"]["loads_kw"] = ones(8760)*200.0 + d["ElectricLoad"]["loads_kw"][5100:5109] .= 410.0 + d["ElectricLoad"]["loads_kw"][5200:5209] .= 410.0 + d["ElectricLoad"]["critical_load_fraction"] = 0.5 + d["PV"]["existing_kw"] = 0.0 + d["PV"]["min_kw"] = 100.0 + d["PV"]["max_kw"] = 100.0 + d["CHP"]["min_kw"] = 100.0 + d["CHP"]["max_kw"] = 100.0 + d["Generator"]["existing_kw"] = 0.0 + d["Generator"]["min_kw"] = 100.0 + d["Generator"]["max_kw"] = 100.0 + d["ElectricStorage"]["min_kw"] = 20 + d["ElectricStorage"]["max_kw"] = 20 + d["ElectricStorage"]["min_kwh"] = 50 + d["ElectricStorage"]["max_kwh"] = 50 + d["Financial"]["microgrid_upgrade_cost_fraction"] = 0.0 + s = Scenario(d) + p = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) + results = run_reopt(m, p) + + @test results["Outages"]["expected_outage_cost"] ≈ 0 atol=0.1 + @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) ≈ 0 atol=0.1 + @test value(m[:binMGTechUsed]["Generator"]) ≈ 1 + @test value(m[:binMGTechUsed]["CHP"]) ≈ 1 + @test value(m[:binMGTechUsed]["PV"]) ≈ 1 + @test value(m[:binMGStorageUsed]) ≈ 1 + + # Increase cost of microgrid upgrade and PV Size, PV not used and some load not met + d["Financial"]["microgrid_upgrade_cost_fraction"] = 0.3 + d["PV"]["min_kw"] = 200.0 + d["PV"]["max_kw"] = 200.0 + s = Scenario(d) + p = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) + results = run_reopt(m, p) + @test value(m[:binMGTechUsed]["PV"]) ≈ 0 + @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) > 0 + + #= + Scenario with $0.001/kWh value_of_lost_load_per_kwh, 12x169 hour outages, 1kW load/hour, and min_resil_time_steps = 168 + - should meet 168 kWh in each outage such that the total unserved load is 12 kWh + =# + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + results = run_reopt(m, "./scenarios/nogridcost_minresilhours.json") + @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) ≈ 12 + + # testing dvUnserved load, which would output 100 kWh for this scenario before output fix + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + results = run_reopt(m, "./scenarios/nogridcost_multiscenario.json") + @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) ≈ 60 + @test results["Outages"]["expected_outage_cost"] ≈ 485.43270 atol=1.0e-5 #avg duration (3h) * load per time step (10) * present worth factor (16.18109) + @test results["Outages"]["max_outage_cost_per_outage_duration"][1] ≈ 161.8109 atol=1.0e-5 + + # Scenario with generator, PV, electric storage + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + results = run_reopt(m, "./scenarios/outages_gen_pv_stor.json") + @test results["Outages"]["expected_outage_cost"] ≈ 3.54476923e6 atol=10 + @test results["Financial"]["lcc"] ≈ 8.6413594727e7 rtol=0.001 + + # Scenario with generator, PV, wind, electric storage + d = JSON.parsefile("./scenarios/outages_gen_pv_wind_stor.json") + d["ElectricLoad"]["loads_kw"] = ones(8760)*200.0 + d["ElectricLoad"]["loads_kw"][5100:5119] .= 425.0 + d["ElectricLoad"]["critical_load_fraction"] = 0.5 + d["PV"]["existing_kw"] = 0.0 + d["PV"]["min_kw"] = 100.0 + d["PV"]["max_kw"] = 100.0 + d["Wind"]["min_kw"] = 100.0 + d["Wind"]["max_kw"] = 100.0 + d["Generator"]["min_kw"] = 100.0 + d["Generator"]["max_kw"] = 100.0 + d["ElectricStorage"]["min_kw"] = 100 + d["ElectricStorage"]["max_kw"] = 100 + d["ElectricStorage"]["min_kwh"] = 100 + d["ElectricStorage"]["max_kwh"] = 100 + d["Site"]["min_resil_time_steps"] = 1 + s = Scenario(d) + p = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + results = run_reopt(m, p) + @test value(m[:binMGTechUsed]["Generator"]) ≈ 1 + @test value(m[:binMGTechUsed]["PV"]) ≈ 1 + @test value(m[:binMGTechUsed]["Wind"]) ≈ 1 + @test results["Outages"]["expected_outage_cost"] ≈ 1.296319791276051e6 atol=1.0 + @test results["Financial"]["lcc"] ≈ 4.8046446434e6 rtol=0.001 + + end - @testset "Tiered Energy" begin - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt(m, "./scenarios/tiered_rate.json") - @test results["ElectricTariff"]["year_one_energy_cost_before_tax"] ≈ 2342.88 - @test results["ElectricUtility"]["annual_energy_supplied_kwh"] ≈ 24000.0 atol=0.1 - @test results["ElectricLoad"]["annual_calculated_kwh"] ≈ 24000.0 atol=0.1 - end + @testset "Outages with Wind and supply-to-load no greater than critical load" begin + input_data = JSON.parsefile("./scenarios/wind_outages.json") + s = Scenario(input_data) + inputs = REoptInputs(s) + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) + results = run_reopt([m1,m2], inputs) + + # Check that supply-to-load is equal to critical load during outages, including wind + supply_to_load = results["Outages"]["storage_discharge_series_kw"] .+ results["Outages"]["wind_to_load_series_kw"] + supply_to_load = [supply_to_load[:,:,i][1] for i in eachindex(supply_to_load)] + critical_load = results["Outages"]["critical_loads_per_outage_series_kw"][1,1,:] + check = .≈(supply_to_load, critical_load, atol=0.001) + @test !(0 in check) + + # Check that the soc_series_fraction is the same length as the storage_discharge_series_kw + @test size(results["Outages"]["soc_series_fraction"]) == size(results["Outages"]["storage_discharge_series_kw"]) + end - @testset "Lookback Demand Charges" begin - # 1. Testing rate from URDB - data = JSON.parsefile("./scenarios/lookback_rate.json") - # urdb_label used https://apps.openei.org/IURDB/rate/view/539f6a23ec4f024411ec8bf9#2__Demand - # has a demand charge lookback of 35% for all months with 2 different demand charges based on which month - data["ElectricLoad"]["loads_kw"] = ones(8760) - data["ElectricLoad"]["loads_kw"][8] = 100.0 - inputs = REoptInputs(Scenario(data)) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt(m, inputs) - # Expected result is 100 kW demand for January, 35% of that for all other months and - # with 5x other $10.5/kW cold months and 6x $11.5/kW warm months - @test results["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ 100 * (10.5 + 0.35*10.5*5 + 0.35*11.5*6) - - # 2. Testing custom rate from user with demand_lookback_months - d = JSON.parsefile("./scenarios/lookback_rate.json") - d["ElectricTariff"] = Dict() - d["ElectricTariff"]["demand_lookback_percent"] = 0.75 - d["ElectricLoad"]["loads_kw"] = [100 for i in range(1,8760)] - d["ElectricLoad"]["loads_kw"][22] = 200 # Jan peak - d["ElectricLoad"]["loads_kw"][2403] = 400 # April peak (Should set dvPeakDemandLookback) - d["ElectricLoad"]["loads_kw"][4088] = 500 # June peak (not in peak month lookback) - d["ElectricLoad"]["loads_kw"][8333] = 300 # Dec peak - d["ElectricTariff"]["monthly_demand_rates"] = [10,10,20,50,20,10,20,20,20,20,20,5] - d["ElectricTariff"]["demand_lookback_months"] = [1,0,0,1,0,0,0,0,0,0,0,1] # Jan, April, Dec - d["ElectricTariff"]["blended_annual_energy_rate"] = 0.01 - - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt(m, REoptInputs(Scenario(d))) - - monthly_peaks = [300,300,300,400,300,500,300,300,300,300,300,300] # 300 = 400*0.75. Sets peak in all months excpet April and June - expected_demand_cost = sum(monthly_peaks.*d["ElectricTariff"]["monthly_demand_rates"]) - @test r["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ expected_demand_cost - - # 3. Testing custom rate from user with demand_lookback_range - d = JSON.parsefile("./scenarios/lookback_rate.json") - d["ElectricTariff"] = Dict() - d["ElectricTariff"]["demand_lookback_percent"] = 0.75 - d["ElectricLoad"]["loads_kw"] = [100 for i in range(1,8760)] - d["ElectricLoad"]["loads_kw"][22] = 200 # Jan peak - d["ElectricLoad"]["loads_kw"][2403] = 400 # April peak (Should set dvPeakDemandLookback) - d["ElectricLoad"]["loads_kw"][4088] = 500 # June peak (not in peak month lookback) - d["ElectricLoad"]["loads_kw"][8333] = 300 # Dec peak - d["ElectricTariff"]["monthly_demand_rates"] = [10,10,20,50,20,10,20,20,20,20,20,5] - d["ElectricTariff"]["blended_annual_energy_rate"] = 0.01 - d["ElectricTariff"]["demand_lookback_range"] = 6 - - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt(m, REoptInputs(Scenario(d))) - - monthly_peaks = [225, 225, 225, 400, 300, 500, 375, 375, 375, 375, 375, 375] - expected_demand_cost = sum(monthly_peaks.*d["ElectricTariff"]["monthly_demand_rates"]) - @test r["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ expected_demand_cost + @testset "Multiple Sites" begin + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + ps = [ + REoptInputs("./scenarios/pv_storage.json"), + REoptInputs("./scenarios/monthly_rate.json"), + ]; + results = run_reopt(m, ps) + @test results[3]["Financial"]["lcc"] + results[10]["Financial"]["lcc"] ≈ 1.2830872235e7 rtol=1e-5 + end - end + @testset "MPC" begin + model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_mpc(model, "./scenarios/mpc.json") + @test maximum(r["ElectricUtility"]["to_load_series_kw"][1:15]) <= 98.0 + @test maximum(r["ElectricUtility"]["to_load_series_kw"][16:24]) <= 97.0 + @test sum(r["PV"]["to_grid_series_kw"]) ≈ 0 + grid_draw = r["ElectricUtility"]["to_load_series_kw"] .+ r["ElectricUtility"]["to_battery_series_kw"] + # the grid draw limit in the 10th time step is set to 90 + # without the 90 limit the grid draw is 98 in the 10th time step + @test grid_draw[10] <= 90 + end - @testset "Blended tariff" begin - model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt(model, "./scenarios/no_techs.json") - @test results["ElectricTariff"]["year_one_energy_cost_before_tax"] ≈ 1000.0 - @test results["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ 136.99 - end + @testset "Complex Incentives" begin + """ + This test was compared against the API test: + reo.tests.test_reopt_url.EntryResourceTest.test_complex_incentives + when using the hardcoded levelization_factor in this package's REoptInputs function. + The two LCC's matched within 0.00005%. (The Julia pkg LCC is 1.0971991e7) + """ + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(m, "./scenarios/incentives.json") + @test results["Financial"]["lcc"] ≈ 1.094596365e7 atol=5e4 + end - @testset "Coincident Peak Charges" begin - model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt(model, "./scenarios/coincident_peak.json") - @test results["ElectricTariff"]["year_one_coincident_peak_cost_before_tax"] ≈ 15.0 - end + @testset verbose = true "Rate Structures" begin - @testset "URDB sell rate" begin - #= The URDB contains at least one "Customer generation" tariff that only has a "sell" key in the energyratestructure (the tariff tested here) - =# - model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - p = REoptInputs("./scenarios/URDB_customer_generation.json") - results = run_reopt(model, p) - @test results["PV"]["size_kw"] ≈ p.max_sizes["PV"] - end + @testset "Tiered Energy" begin + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(m, "./scenarios/tiered_rate.json") + @test results["ElectricTariff"]["year_one_energy_cost_before_tax"] ≈ 2342.88 + @test results["ElectricUtility"]["annual_energy_supplied_kwh"] ≈ 24000.0 atol=0.1 + @test results["ElectricLoad"]["annual_calculated_kwh"] ≈ 24000.0 atol=0.1 + end - @testset "Custom URDB with Sub-Hourly" begin - # Testing a 15-min post with a urdb_response with multiple n_energy_tiers - model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.1)) - p = REoptInputs("./scenarios/subhourly_with_urdb.json") - results = run_reopt(model, p) - @test length(p.s.electric_tariff.export_rates[:WHL]) ≈ 8760*4 - @test results["PV"]["size_kw"] ≈ p.s.pvs[1].existing_kw - end + @testset "Lookback Demand Charges" begin + # 1. Testing rate from URDB + data = JSON.parsefile("./scenarios/lookback_rate.json") + # urdb_label used https://apps.openei.org/IURDB/rate/view/539f6a23ec4f024411ec8bf9#2__Demand + # has a demand charge lookback of 35% for all months with 2 different demand charges based on which month + data["ElectricLoad"]["loads_kw"] = ones(8760) + data["ElectricLoad"]["loads_kw"][8] = 100.0 + inputs = REoptInputs(Scenario(data)) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(m, inputs) + # Expected result is 100 kW demand for January, 35% of that for all other months and + # with 5x other $10.5/kW cold months and 6x $11.5/kW warm months + @test results["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ 100 * (10.5 + 0.35*10.5*5 + 0.35*11.5*6) + + # 2. Testing custom rate from user with demand_lookback_months + d = JSON.parsefile("./scenarios/lookback_rate.json") + d["ElectricTariff"] = Dict() + d["ElectricTariff"]["demand_lookback_percent"] = 0.75 + d["ElectricLoad"]["loads_kw"] = [100 for i in range(1,8760)] + d["ElectricLoad"]["loads_kw"][22] = 200 # Jan peak + d["ElectricLoad"]["loads_kw"][2403] = 400 # April peak (Should set dvPeakDemandLookback) + d["ElectricLoad"]["loads_kw"][4088] = 500 # June peak (not in peak month lookback) + d["ElectricLoad"]["loads_kw"][8333] = 300 # Dec peak + d["ElectricTariff"]["monthly_demand_rates"] = [10,10,20,50,20,10,20,20,20,20,20,5] + d["ElectricTariff"]["demand_lookback_months"] = [1,0,0,1,0,0,0,0,0,0,0,1] # Jan, April, Dec + d["ElectricTariff"]["blended_annual_energy_rate"] = 0.01 + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt(m, REoptInputs(Scenario(d))) + + monthly_peaks = [300,300,300,400,300,500,300,300,300,300,300,300] # 300 = 400*0.75. Sets peak in all months excpet April and June + expected_demand_cost = sum(monthly_peaks.*d["ElectricTariff"]["monthly_demand_rates"]) + @test r["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ expected_demand_cost + + # 3. Testing custom rate from user with demand_lookback_range + d = JSON.parsefile("./scenarios/lookback_rate.json") + d["ElectricTariff"] = Dict() + d["ElectricTariff"]["demand_lookback_percent"] = 0.75 + d["ElectricLoad"]["loads_kw"] = [100 for i in range(1,8760)] + d["ElectricLoad"]["loads_kw"][22] = 200 # Jan peak + d["ElectricLoad"]["loads_kw"][2403] = 400 # April peak (Should set dvPeakDemandLookback) + d["ElectricLoad"]["loads_kw"][4088] = 500 # June peak (not in peak month lookback) + d["ElectricLoad"]["loads_kw"][8333] = 300 # Dec peak + d["ElectricTariff"]["monthly_demand_rates"] = [10,10,20,50,20,10,20,20,20,20,20,5] + d["ElectricTariff"]["blended_annual_energy_rate"] = 0.01 + d["ElectricTariff"]["demand_lookback_range"] = 6 - # # tiered monthly demand rate TODO: expected results? - # m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - # data = JSON.parsefile("./scenarios/tiered_rate.json") - # data["ElectricTariff"]["urdb_label"] = "59bc22705457a3372642da67" - # s = Scenario(data) - # inputs = REoptInputs(s) - # results = run_reopt(m, inputs) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt(m, REoptInputs(Scenario(d))) + + monthly_peaks = [225, 225, 225, 400, 300, 500, 375, 375, 375, 375, 375, 375] + expected_demand_cost = sum(monthly_peaks.*d["ElectricTariff"]["monthly_demand_rates"]) + @test r["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ expected_demand_cost - # TODO test for tiered TOU demand rates end - @testset "EASIUR" begin - d = JSON.parsefile("./scenarios/pv.json") - d["Site"]["latitude"] = 30.2672 - d["Site"]["longitude"] = -97.7431 - scen = Scenario(d) - @test scen.financial.NOx_grid_cost_per_tonne ≈ 4534.032470 atol=0.1 + @testset "Blended tariff" begin + model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(model, "./scenarios/no_techs.json") + @test results["ElectricTariff"]["year_one_energy_cost_before_tax"] ≈ 1000.0 + @test results["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ 136.99 end - @testset "Wind" begin - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - d = JSON.parsefile("./scenarios/wind.json") - results = run_reopt(m, d) - @test results["Wind"]["size_kw"] ≈ 3752 atol=0.1 - @test results["Financial"]["lcc"] ≈ 8.591017e6 rtol=1e-5 - #= - 0.5% higher LCC in this package as compared to API ? 8,591,017 vs 8,551,172 - - both have zero curtailment - - same energy to grid: 5,839,317 vs 5,839,322 - - same energy to load: 4,160,683 vs 4,160,677 - - same city: Boulder - - same total wind prod factor - - REopt.jl has: - - bigger turbine: 3752 vs 3735 - - net_capital_costs_plus_om: 8,576,590 vs. 8,537,480 + @testset "Coincident Peak Charges" begin + model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(model, "./scenarios/coincident_peak.json") + @test results["ElectricTariff"]["year_one_coincident_peak_cost_before_tax"] ≈ 15.0 + end - TODO: will these discrepancies be addressed once NMIL binaries are added? + @testset "URDB sell rate" begin + #= The URDB contains at least one "Customer generation" tariff that only has a "sell" key in the energyratestructure (the tariff tested here) =# - - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - d["Site"]["land_acres"] = 60 # = 2 MW (with 0.03 acres/kW) - results = run_reopt(m, d) - @test results["Wind"]["size_kw"] == 2000.0 # Wind should be constrained by land_acres - - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - d["Wind"]["min_kw"] = 2001 # min_kw greater than land-constrained max should error - results = run_reopt(m, d) - @test "errors" ∈ keys(results["Messages"]) - @test length(results["Messages"]["errors"]) > 0 + model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + p = REoptInputs("./scenarios/URDB_customer_generation.json") + results = run_reopt(model, p) + @test results["PV"]["size_kw"] ≈ p.max_sizes["PV"] end - @testset "Multiple PVs" begin - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt([m1,m2], "./scenarios/multiple_pvs.json") - - ground_pv = results["PV"][findfirst(pv -> pv["name"] == "ground", results["PV"])] - roof_west = results["PV"][findfirst(pv -> pv["name"] == "roof_west", results["PV"])] - roof_east = results["PV"][findfirst(pv -> pv["name"] == "roof_east", results["PV"])] - - @test ground_pv["size_kw"] ≈ 15 atol=0.1 - @test roof_west["size_kw"] ≈ 7 atol=0.1 - @test roof_east["size_kw"] ≈ 4 atol=0.1 - @test ground_pv["lifecycle_om_cost_after_tax_bau"] ≈ 782.0 atol=0.1 - @test roof_west["lifecycle_om_cost_after_tax_bau"] ≈ 782.0 atol=0.1 - @test ground_pv["annual_energy_produced_kwh_bau"] ≈ 8933.09 atol=0.1 - @test roof_west["annual_energy_produced_kwh_bau"] ≈ 7656.11 atol=0.1 - @test ground_pv["annual_energy_produced_kwh"] ≈ 26799.26 atol=0.1 - @test roof_west["annual_energy_produced_kwh"] ≈ 10719.51 atol=0.1 - @test roof_east["annual_energy_produced_kwh"] ≈ 6685.95 atol=0.1 + @testset "Custom URDB with Sub-Hourly" begin + # Testing a 15-min post with a urdb_response with multiple n_energy_tiers + model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.1)) + p = REoptInputs("./scenarios/subhourly_with_urdb.json") + results = run_reopt(model, p) + @test length(p.s.electric_tariff.export_rates[:WHL]) ≈ 8760*4 + @test results["PV"]["size_kw"] ≈ p.s.pvs[1].existing_kw end - @testset "Thermal Energy Storage + Absorption Chiller" begin - model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - data = JSON.parsefile("./scenarios/thermal_storage.json") - s = Scenario(data) - p = REoptInputs(s) - - #test for get_absorption_chiller_defaults consistency with inputs data and Scenario s. - htf_defaults_response = get_absorption_chiller_defaults(; - thermal_consumption_hot_water_or_steam=get(data["AbsorptionChiller"], "thermal_consumption_hot_water_or_steam", nothing), - boiler_type=get(data["ExistingBoiler"], "production_type", nothing), - load_max_tons=maximum(s.cooling_load.loads_kw_thermal / REopt.KWH_THERMAL_PER_TONHOUR) - ) - - expected_installed_cost_per_ton = htf_defaults_response["default_inputs"]["installed_cost_per_ton"] - expected_om_cost_per_ton = htf_defaults_response["default_inputs"]["om_cost_per_ton"] - - @test p.s.absorption_chiller.installed_cost_per_kw ≈ expected_installed_cost_per_ton / REopt.KWH_THERMAL_PER_TONHOUR atol=0.001 - @test p.s.absorption_chiller.om_cost_per_kw ≈ expected_om_cost_per_ton / REopt.KWH_THERMAL_PER_TONHOUR atol=0.001 - @test p.s.absorption_chiller.cop_thermal ≈ htf_defaults_response["default_inputs"]["cop_thermal"] atol=0.001 - - #load test values - p.s.absorption_chiller.installed_cost_per_kw = 500.0 / REopt.KWH_THERMAL_PER_TONHOUR - p.s.absorption_chiller.om_cost_per_kw = 0.5 / REopt.KWH_THERMAL_PER_TONHOUR - p.s.absorption_chiller.cop_thermal = 0.7 + + # # tiered monthly demand rate TODO: expected results? + # m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + # data = JSON.parsefile("./scenarios/tiered_rate.json") + # data["ElectricTariff"]["urdb_label"] = "59bc22705457a3372642da67" + # s = Scenario(data) + # inputs = REoptInputs(s) + # results = run_reopt(m, inputs) + + # TODO test for tiered TOU demand rates + end + + @testset "EASIUR" begin + d = JSON.parsefile("./scenarios/pv.json") + d["Site"]["latitude"] = 30.2672 + d["Site"]["longitude"] = -97.7431 + scen = Scenario(d) + @test scen.financial.NOx_grid_cost_per_tonne ≈ 4534.032470 atol=0.1 + end + + @testset "Wind" begin + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + d = JSON.parsefile("./scenarios/wind.json") + results = run_reopt(m, d) + @test results["Wind"]["size_kw"] ≈ 3752 atol=0.1 + @test results["Financial"]["lcc"] ≈ 8.591017e6 rtol=1e-5 + #= + 0.5% higher LCC in this package as compared to API ? 8,591,017 vs 8,551,172 + - both have zero curtailment + - same energy to grid: 5,839,317 vs 5,839,322 + - same energy to load: 4,160,683 vs 4,160,677 + - same city: Boulder + - same total wind prod factor + + REopt.jl has: + - bigger turbine: 3752 vs 3735 + - net_capital_costs_plus_om: 8,576,590 vs. 8,537,480 + + TODO: will these discrepancies be addressed once NMIL binaries are added? + =# + + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + d["Site"]["land_acres"] = 60 # = 2 MW (with 0.03 acres/kW) + results = run_reopt(m, d) + @test results["Wind"]["size_kw"] == 2000.0 # Wind should be constrained by land_acres + + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + d["Wind"]["min_kw"] = 2001 # min_kw greater than land-constrained max should error + results = run_reopt(m, d) + @test "errors" ∈ keys(results["Messages"]) + @test length(results["Messages"]["errors"]) > 0 + end + + @testset "Multiple PVs" begin + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt([m1,m2], "./scenarios/multiple_pvs.json") + + ground_pv = results["PV"][findfirst(pv -> pv["name"] == "ground", results["PV"])] + roof_west = results["PV"][findfirst(pv -> pv["name"] == "roof_west", results["PV"])] + roof_east = results["PV"][findfirst(pv -> pv["name"] == "roof_east", results["PV"])] + + @test ground_pv["size_kw"] ≈ 15 atol=0.1 + @test roof_west["size_kw"] ≈ 7 atol=0.1 + @test roof_east["size_kw"] ≈ 4 atol=0.1 + @test ground_pv["lifecycle_om_cost_after_tax_bau"] ≈ 782.0 atol=0.1 + @test roof_west["lifecycle_om_cost_after_tax_bau"] ≈ 782.0 atol=0.1 + @test ground_pv["annual_energy_produced_kwh_bau"] ≈ 8933.09 atol=0.1 + @test roof_west["annual_energy_produced_kwh_bau"] ≈ 7656.11 atol=0.1 + @test ground_pv["annual_energy_produced_kwh"] ≈ 26799.26 atol=0.1 + @test roof_west["annual_energy_produced_kwh"] ≈ 10719.51 atol=0.1 + @test roof_east["annual_energy_produced_kwh"] ≈ 6685.95 atol=0.1 + end + + @testset "Thermal Energy Storage + Absorption Chiller" begin + model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + data = JSON.parsefile("./scenarios/thermal_storage.json") + s = Scenario(data) + p = REoptInputs(s) - #Make every other hour zero fuel and electric cost; storage should charge and discharge in each period - for ts in p.time_steps - #heating and cooling loads only - if ts % 2 == 0 #in even periods, there is a nonzero load and energy is higher cost, and storage should discharge - p.s.electric_load.loads_kw[ts] = 10 - p.s.dhw_load.loads_kw[ts] = 5 - p.s.space_heating_load.loads_kw[ts] = 5 - p.s.cooling_load.loads_kw_thermal[ts] = 10 - p.fuel_cost_per_kwh["ExistingBoiler"][ts] = 100 - for tier in 1:p.s.electric_tariff.n_energy_tiers - p.s.electric_tariff.energy_rates[ts, tier] = 100 - end - else #in odd periods, there is no load and energy is cheaper - storage should charge - p.s.electric_load.loads_kw[ts] = 0 - p.s.dhw_load.loads_kw[ts] = 0 - p.s.space_heating_load.loads_kw[ts] = 0 - p.s.cooling_load.loads_kw_thermal[ts] = 0 - p.fuel_cost_per_kwh["ExistingBoiler"][ts] = 1 - for tier in 1:p.s.electric_tariff.n_energy_tiers - p.s.electric_tariff.energy_rates[ts, tier] = 50 - end + #test for get_absorption_chiller_defaults consistency with inputs data and Scenario s. + htf_defaults_response = get_absorption_chiller_defaults(; + thermal_consumption_hot_water_or_steam=get(data["AbsorptionChiller"], "thermal_consumption_hot_water_or_steam", nothing), + boiler_type=get(data["ExistingBoiler"], "production_type", nothing), + load_max_tons=maximum(s.cooling_load.loads_kw_thermal / REopt.KWH_THERMAL_PER_TONHOUR) + ) + + expected_installed_cost_per_ton = htf_defaults_response["default_inputs"]["installed_cost_per_ton"] + expected_om_cost_per_ton = htf_defaults_response["default_inputs"]["om_cost_per_ton"] + + @test p.s.absorption_chiller.installed_cost_per_kw ≈ expected_installed_cost_per_ton / REopt.KWH_THERMAL_PER_TONHOUR atol=0.001 + @test p.s.absorption_chiller.om_cost_per_kw ≈ expected_om_cost_per_ton / REopt.KWH_THERMAL_PER_TONHOUR atol=0.001 + @test p.s.absorption_chiller.cop_thermal ≈ htf_defaults_response["default_inputs"]["cop_thermal"] atol=0.001 + + #load test values + p.s.absorption_chiller.installed_cost_per_kw = 500.0 / REopt.KWH_THERMAL_PER_TONHOUR + p.s.absorption_chiller.om_cost_per_kw = 0.5 / REopt.KWH_THERMAL_PER_TONHOUR + p.s.absorption_chiller.cop_thermal = 0.7 + + #Make every other hour zero fuel and electric cost; storage should charge and discharge in each period + for ts in p.time_steps + #heating and cooling loads only + if ts % 2 == 0 #in even periods, there is a nonzero load and energy is higher cost, and storage should discharge + p.s.electric_load.loads_kw[ts] = 10 + p.s.dhw_load.loads_kw[ts] = 5 + p.s.space_heating_load.loads_kw[ts] = 5 + p.s.cooling_load.loads_kw_thermal[ts] = 10 + p.fuel_cost_per_kwh["ExistingBoiler"][ts] = 100 + for tier in 1:p.s.electric_tariff.n_energy_tiers + p.s.electric_tariff.energy_rates[ts, tier] = 100 + end + else #in odd periods, there is no load and energy is cheaper - storage should charge + p.s.electric_load.loads_kw[ts] = 0 + p.s.dhw_load.loads_kw[ts] = 0 + p.s.space_heating_load.loads_kw[ts] = 0 + p.s.cooling_load.loads_kw_thermal[ts] = 0 + p.fuel_cost_per_kwh["ExistingBoiler"][ts] = 1 + for tier in 1:p.s.electric_tariff.n_energy_tiers + p.s.electric_tariff.energy_rates[ts, tier] = 50 end end - - r = run_reopt(model, p) - - #dispatch to load should be 10kW every other period = 4,380 * 10 - @test sum(r["HotThermalStorage"]["storage_to_load_series_mmbtu_per_hour"]) ≈ 149.45 atol=0.1 - @test sum(r["ColdThermalStorage"]["storage_to_load_series_ton"]) ≈ 12454.33 atol=0.1 - #size should be just over 10kW in gallons, accounting for efficiency losses and min SOC - @test r["HotThermalStorage"]["size_gal"] ≈ 233.0 atol=0.1 - @test r["ColdThermalStorage"]["size_gal"] ≈ 378.0 atol=0.1 - #No production from existing chiller, only absorption chiller, which is sized at ~5kW to manage electric demand charge & capital cost. - @test r["ExistingChiller"]["annual_thermal_production_tonhour"] ≈ 0.0 atol=0.1 - @test r["AbsorptionChiller"]["annual_thermal_production_tonhour"] ≈ 12464.15 atol=0.1 - @test r["AbsorptionChiller"]["size_ton"] ≈ 2.846 atol=0.01 end + + r = run_reopt(model, p) + + #dispatch to load should be 10kW every other period = 4,380 * 10 + @test sum(r["HotThermalStorage"]["storage_to_load_series_mmbtu_per_hour"]) ≈ 149.45 atol=0.1 + @test sum(r["ColdThermalStorage"]["storage_to_load_series_ton"]) ≈ 12454.33 atol=0.1 + #size should be just over 10kW in gallons, accounting for efficiency losses and min SOC + @test r["HotThermalStorage"]["size_gal"] ≈ 233.0 atol=0.1 + @test r["ColdThermalStorage"]["size_gal"] ≈ 378.0 atol=0.1 + #No production from existing chiller, only absorption chiller, which is sized at ~5kW to manage electric demand charge & capital cost. + @test r["ExistingChiller"]["annual_thermal_production_tonhour"] ≈ 0.0 atol=0.1 + @test r["AbsorptionChiller"]["annual_thermal_production_tonhour"] ≈ 12464.15 atol=0.1 + @test r["AbsorptionChiller"]["size_ton"] ≈ 2.846 atol=0.01 + end - @testset "Heat and cool energy balance" begin - """ + @testset "Heat and cool energy balance" begin + """ - This is an "energy balance" type of test which tests the model formulation/math as opposed - to a specific scenario. This test is robust to changes in the model "MIPRELSTOP" or "MAXTIME" setting + This is an "energy balance" type of test which tests the model formulation/math as opposed + to a specific scenario. This test is robust to changes in the model "MIPRELSTOP" or "MAXTIME" setting - Validation to ensure that: - 1) The electric and absorption chillers are supplying 100% of the cooling thermal load plus losses from ColdThermalStorage - 2) The boiler and CHP are supplying the heating load plus additional absorption chiller thermal load - 3) The Cold and Hot TES efficiency (charge loss and thermal decay) are being tracked properly + Validation to ensure that: + 1) The electric and absorption chillers are supplying 100% of the cooling thermal load plus losses from ColdThermalStorage + 2) The boiler and CHP are supplying the heating load plus additional absorption chiller thermal load + 3) The Cold and Hot TES efficiency (charge loss and thermal decay) are being tracked properly - """ - input_data = JSON.parsefile("./scenarios/heat_cool_energy_balance_inputs.json") - s = Scenario(input_data) - inputs = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - results = run_reopt(m, inputs) + """ + input_data = JSON.parsefile("./scenarios/heat_cool_energy_balance_inputs.json") + s = Scenario(input_data) + inputs = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + results = run_reopt(m, inputs) + + # Annual cooling **thermal** energy load of CRB is based on annual cooling electric energy (from CRB models) and a conditional COP depending on the peak cooling thermal load + # When the user specifies inputs["ExistingChiller"]["cop"], this changes the **electric** consumption of the chiller to meet that cooling thermal load + crb_cop = REopt.get_existing_chiller_default_cop(; + existing_chiller_max_thermal_factor_on_peak_load=s.existing_chiller.max_thermal_factor_on_peak_load, + max_load_kw_thermal=maximum(s.cooling_load.loads_kw_thermal)) + cooling_thermal_load_tonhour_total = 1427329.0 * crb_cop / REopt.KWH_THERMAL_PER_TONHOUR # From CRB models, in heating_cooling_loads.jl, BuiltInCoolingLoad data for location (SanFrancisco Hospital) + cooling_electric_load_total_mod_cop_kwh = cooling_thermal_load_tonhour_total / inputs.s.existing_chiller.cop * REopt.KWH_THERMAL_PER_TONHOUR + + #Test cooling load results + @test round(cooling_thermal_load_tonhour_total, digits=1) ≈ results["CoolingLoad"]["annual_calculated_tonhour"] atol=1.0 + + # Convert fuel input to thermal using user input boiler efficiency + boiler_thermal_load_mmbtu_total = (671.40531 + 11570.9155) * input_data["ExistingBoiler"]["efficiency"] # From CRB models, in heating_cooling_loads.jl, BuiltInDomesticHotWaterLoad + BuiltInSpaceHeatingLoad data for location (SanFrancisco Hospital) + boiler_fuel_consumption_total_mod_efficiency = boiler_thermal_load_mmbtu_total / inputs.s.existing_boiler.efficiency + + # Cooling outputs + cooling_elecchl_tons_to_load_series = results["ExistingChiller"]["thermal_to_load_series_ton"] + cooling_elecchl_tons_to_tes_series = results["ExistingChiller"]["thermal_to_storage_series_ton"] + cooling_absorpchl_tons_to_load_series = results["AbsorptionChiller"]["thermal_to_load_series_ton"] + cooling_absorpchl_tons_to_tes_series = results["AbsorptionChiller"]["thermal_to_storage_series_ton"] + cooling_tonhour_to_load_tech_total = sum(cooling_elecchl_tons_to_load_series) + sum(cooling_absorpchl_tons_to_load_series) + cooling_tonhour_to_tes_total = sum(cooling_elecchl_tons_to_tes_series) + sum(cooling_absorpchl_tons_to_tes_series) + cooling_tes_tons_to_load_series = results["ColdThermalStorage"]["storage_to_load_series_ton"] + cooling_extra_from_tes_losses = cooling_tonhour_to_tes_total - sum(cooling_tes_tons_to_load_series) + tes_effic_with_decay = sum(cooling_tes_tons_to_load_series) / cooling_tonhour_to_tes_total + cooling_total_prod_from_techs = cooling_tonhour_to_load_tech_total + cooling_tonhour_to_tes_total + cooling_load_plus_tes_losses = cooling_thermal_load_tonhour_total + cooling_extra_from_tes_losses + + # Absorption Chiller electric consumption addition + absorpchl_total_cooling_produced_series_ton = cooling_absorpchl_tons_to_load_series .+ cooling_absorpchl_tons_to_tes_series + absorpchl_total_cooling_produced_ton_hour = sum(absorpchl_total_cooling_produced_series_ton) + absorpchl_electric_consumption_total_kwh = results["AbsorptionChiller"]["annual_electric_consumption_kwh"] + absorpchl_cop_elec = s.absorption_chiller.cop_electric + + # Check if sum of electric and absorption chillers equals cooling thermal total + @test tes_effic_with_decay < 0.97 + @test round(cooling_total_prod_from_techs, digits=0) ≈ cooling_load_plus_tes_losses atol=5.0 + @test round(absorpchl_electric_consumption_total_kwh, digits=0) ≈ absorpchl_total_cooling_produced_ton_hour * REopt.KWH_THERMAL_PER_TONHOUR / absorpchl_cop_elec atol=1.0 + + # Heating outputs + boiler_fuel_consumption_calculated = results["ExistingBoiler"]["annual_fuel_consumption_mmbtu"] + boiler_thermal_series = results["ExistingBoiler"]["thermal_production_series_mmbtu_per_hour"] + boiler_to_load_series = results["ExistingBoiler"]["thermal_to_load_series_mmbtu_per_hour"] + boiler_thermal_to_tes_series = results["ExistingBoiler"]["thermal_to_storage_series_mmbtu_per_hour"] + chp_thermal_to_load_series = results["CHP"]["thermal_to_load_series_mmbtu_per_hour"] + chp_thermal_to_tes_series = results["CHP"]["thermal_to_storage_series_mmbtu_per_hour"] + chp_thermal_to_waste_series = results["CHP"]["thermal_curtailed_series_mmbtu_per_hour"] + absorpchl_thermal_series = results["AbsorptionChiller"]["thermal_consumption_series_mmbtu_per_hour"] + hot_tes_mmbtu_per_hour_to_load_series = results["HotThermalStorage"]["storage_to_load_series_mmbtu_per_hour"] + tes_inflows = sum(chp_thermal_to_tes_series) + sum(boiler_thermal_to_tes_series) + total_chp_production = sum(chp_thermal_to_load_series) + sum(chp_thermal_to_waste_series) + sum(chp_thermal_to_tes_series) + tes_outflows = sum(hot_tes_mmbtu_per_hour_to_load_series) + total_thermal_expected = boiler_thermal_load_mmbtu_total + sum(chp_thermal_to_waste_series) + tes_inflows + sum(absorpchl_thermal_series) + boiler_fuel_expected = (total_thermal_expected - total_chp_production - tes_outflows) / inputs.s.existing_boiler.efficiency + total_thermal_mmbtu_calculated = sum(boiler_thermal_series) + total_chp_production + tes_outflows + + @test round(boiler_fuel_consumption_calculated, digits=0) ≈ boiler_fuel_expected atol=8.0 + @test round(total_thermal_mmbtu_calculated, digits=0) ≈ total_thermal_expected atol=8.0 + + # Test CHP["cooling_thermal_factor"] = 0.8, AbsorptionChiller["cop_thermal"] = 0.7 (from inputs .json) + absorpchl_heat_in_kwh = results["AbsorptionChiller"]["annual_thermal_consumption_mmbtu"] * REopt.KWH_PER_MMBTU + absorpchl_cool_out_kwh = results["AbsorptionChiller"]["annual_thermal_production_tonhour"] * REopt.KWH_THERMAL_PER_TONHOUR + absorpchl_cop = absorpchl_cool_out_kwh / absorpchl_heat_in_kwh + + @test round(absorpchl_cop, digits=5) ≈ 0.8*0.7 rtol=1e-4 + end - # Annual cooling **thermal** energy load of CRB is based on annual cooling electric energy (from CRB models) and a conditional COP depending on the peak cooling thermal load - # When the user specifies inputs["ExistingChiller"]["cop"], this changes the **electric** consumption of the chiller to meet that cooling thermal load - crb_cop = REopt.get_existing_chiller_default_cop(; - existing_chiller_max_thermal_factor_on_peak_load=s.existing_chiller.max_thermal_factor_on_peak_load, - max_load_kw_thermal=maximum(s.cooling_load.loads_kw_thermal)) - cooling_thermal_load_tonhour_total = 1427329.0 * crb_cop / REopt.KWH_THERMAL_PER_TONHOUR # From CRB models, in heating_cooling_loads.jl, BuiltInCoolingLoad data for location (SanFrancisco Hospital) - cooling_electric_load_total_mod_cop_kwh = cooling_thermal_load_tonhour_total / inputs.s.existing_chiller.cop * REopt.KWH_THERMAL_PER_TONHOUR + @testset "Heating and cooling inputs + CHP defaults" begin + """ - #Test cooling load results - @test round(cooling_thermal_load_tonhour_total, digits=1) ≈ results["CoolingLoad"]["annual_calculated_tonhour"] atol=1.0 - - # Convert fuel input to thermal using user input boiler efficiency - boiler_thermal_load_mmbtu_total = (671.40531 + 11570.9155) * input_data["ExistingBoiler"]["efficiency"] # From CRB models, in heating_cooling_loads.jl, BuiltInDomesticHotWaterLoad + BuiltInSpaceHeatingLoad data for location (SanFrancisco Hospital) - boiler_fuel_consumption_total_mod_efficiency = boiler_thermal_load_mmbtu_total / inputs.s.existing_boiler.efficiency - - # Cooling outputs - cooling_elecchl_tons_to_load_series = results["ExistingChiller"]["thermal_to_load_series_ton"] - cooling_elecchl_tons_to_tes_series = results["ExistingChiller"]["thermal_to_storage_series_ton"] - cooling_absorpchl_tons_to_load_series = results["AbsorptionChiller"]["thermal_to_load_series_ton"] - cooling_absorpchl_tons_to_tes_series = results["AbsorptionChiller"]["thermal_to_storage_series_ton"] - cooling_tonhour_to_load_tech_total = sum(cooling_elecchl_tons_to_load_series) + sum(cooling_absorpchl_tons_to_load_series) - cooling_tonhour_to_tes_total = sum(cooling_elecchl_tons_to_tes_series) + sum(cooling_absorpchl_tons_to_tes_series) - cooling_tes_tons_to_load_series = results["ColdThermalStorage"]["storage_to_load_series_ton"] - cooling_extra_from_tes_losses = cooling_tonhour_to_tes_total - sum(cooling_tes_tons_to_load_series) - tes_effic_with_decay = sum(cooling_tes_tons_to_load_series) / cooling_tonhour_to_tes_total - cooling_total_prod_from_techs = cooling_tonhour_to_load_tech_total + cooling_tonhour_to_tes_total - cooling_load_plus_tes_losses = cooling_thermal_load_tonhour_total + cooling_extra_from_tes_losses - - # Absorption Chiller electric consumption addition - absorpchl_total_cooling_produced_series_ton = cooling_absorpchl_tons_to_load_series .+ cooling_absorpchl_tons_to_tes_series - absorpchl_total_cooling_produced_ton_hour = sum(absorpchl_total_cooling_produced_series_ton) - absorpchl_electric_consumption_total_kwh = results["AbsorptionChiller"]["annual_electric_consumption_kwh"] - absorpchl_cop_elec = s.absorption_chiller.cop_electric - - # Check if sum of electric and absorption chillers equals cooling thermal total - @test tes_effic_with_decay < 0.97 - @test round(cooling_total_prod_from_techs, digits=0) ≈ cooling_load_plus_tes_losses atol=5.0 - @test round(absorpchl_electric_consumption_total_kwh, digits=0) ≈ absorpchl_total_cooling_produced_ton_hour * REopt.KWH_THERMAL_PER_TONHOUR / absorpchl_cop_elec atol=1.0 - - # Heating outputs - boiler_fuel_consumption_calculated = results["ExistingBoiler"]["annual_fuel_consumption_mmbtu"] - boiler_thermal_series = results["ExistingBoiler"]["thermal_production_series_mmbtu_per_hour"] - boiler_to_load_series = results["ExistingBoiler"]["thermal_to_load_series_mmbtu_per_hour"] - boiler_thermal_to_tes_series = results["ExistingBoiler"]["thermal_to_storage_series_mmbtu_per_hour"] - chp_thermal_to_load_series = results["CHP"]["thermal_to_load_series_mmbtu_per_hour"] - chp_thermal_to_tes_series = results["CHP"]["thermal_to_storage_series_mmbtu_per_hour"] - chp_thermal_to_waste_series = results["CHP"]["thermal_curtailed_series_mmbtu_per_hour"] - absorpchl_thermal_series = results["AbsorptionChiller"]["thermal_consumption_series_mmbtu_per_hour"] - hot_tes_mmbtu_per_hour_to_load_series = results["HotThermalStorage"]["storage_to_load_series_mmbtu_per_hour"] - tes_inflows = sum(chp_thermal_to_tes_series) + sum(boiler_thermal_to_tes_series) - total_chp_production = sum(chp_thermal_to_load_series) + sum(chp_thermal_to_waste_series) + sum(chp_thermal_to_tes_series) - tes_outflows = sum(hot_tes_mmbtu_per_hour_to_load_series) - total_thermal_expected = boiler_thermal_load_mmbtu_total + sum(chp_thermal_to_waste_series) + tes_inflows + sum(absorpchl_thermal_series) - boiler_fuel_expected = (total_thermal_expected - total_chp_production - tes_outflows) / inputs.s.existing_boiler.efficiency - total_thermal_mmbtu_calculated = sum(boiler_thermal_series) + total_chp_production + tes_outflows - - @test round(boiler_fuel_consumption_calculated, digits=0) ≈ boiler_fuel_expected atol=8.0 - @test round(total_thermal_mmbtu_calculated, digits=0) ≈ total_thermal_expected atol=8.0 - - # Test CHP["cooling_thermal_factor"] = 0.8, AbsorptionChiller["cop_thermal"] = 0.7 (from inputs .json) - absorpchl_heat_in_kwh = results["AbsorptionChiller"]["annual_thermal_consumption_mmbtu"] * REopt.KWH_PER_MMBTU - absorpchl_cool_out_kwh = results["AbsorptionChiller"]["annual_thermal_production_tonhour"] * REopt.KWH_THERMAL_PER_TONHOUR - absorpchl_cop = absorpchl_cool_out_kwh / absorpchl_heat_in_kwh - - @test round(absorpchl_cop, digits=5) ≈ 0.8*0.7 rtol=1e-4 - end + This tests the various ways to input heating and cooling loads to make sure they are processed correctly. + There are no "new" technologies in this test, so heating is served by ExistingBoiler, and + cooling is served by ExistingCooler. Since this is just inputs processing tests, no optimization is needed. - @testset "Heating and cooling inputs + CHP defaults" begin - """ + """ + input_data = JSON.parsefile("./scenarios/heating_cooling_load_inputs.json") + s = Scenario(input_data) + inputs = REoptInputs(s) - This tests the various ways to input heating and cooling loads to make sure they are processed correctly. - There are no "new" technologies in this test, so heating is served by ExistingBoiler, and - cooling is served by ExistingCooler. Since this is just inputs processing tests, no optimization is needed. + # Heating load is input as **fuel**, not thermal + # If boiler efficiency is not input, we use REopt.EXISTING_BOILER_EFFICIENCY to convert fuel to thermal + expected_fuel = input_data["SpaceHeatingLoad"]["annual_mmbtu"] + input_data["DomesticHotWaterLoad"]["annual_mmbtu"] + total_boiler_heating_thermal_load_mmbtu = (sum(inputs.s.space_heating_load.loads_kw) + sum(inputs.s.dhw_load.loads_kw)) / REopt.KWH_PER_MMBTU + @test round(total_boiler_heating_thermal_load_mmbtu, digits=0) ≈ expected_fuel * REopt.EXISTING_BOILER_EFFICIENCY atol=1.0 + total_boiler_heating_fuel_load_mmbtu = total_boiler_heating_thermal_load_mmbtu / inputs.s.existing_boiler.efficiency + @test round(total_boiler_heating_fuel_load_mmbtu, digits=0) ≈ expected_fuel * REopt.EXISTING_BOILER_EFFICIENCY / inputs.s.existing_boiler.efficiency atol=1.0 + # If boiler efficiency is input, use that with annual or monthly mmbtu input to convert fuel to thermal + input_data["ExistingBoiler"]["efficiency"] = 0.72 + s = Scenario(input_data) + inputs = REoptInputs(s) + total_boiler_heating_thermal_load_mmbtu = (sum(inputs.s.space_heating_load.loads_kw) + sum(inputs.s.dhw_load.loads_kw)) / REopt.KWH_PER_MMBTU + @test round(total_boiler_heating_thermal_load_mmbtu, digits=0) ≈ expected_fuel * input_data["ExistingBoiler"]["efficiency"] atol=1.0 + total_boiler_heating_fuel_load_mmbtu = total_boiler_heating_thermal_load_mmbtu / inputs.s.existing_boiler.efficiency + @test round(total_boiler_heating_fuel_load_mmbtu, digits=0) ≈ expected_fuel * input_data["ExistingBoiler"]["efficiency"] / inputs.s.existing_boiler.efficiency atol=1.0 - """ - input_data = JSON.parsefile("./scenarios/heating_cooling_load_inputs.json") - s = Scenario(input_data) - inputs = REoptInputs(s) + # The expected cooling load is based on the default **fraction of total electric** profile for the doe_reference_name when annual_tonhour is NOT input + # the 320540.0 kWh number is from the default LargeOffice fraction of total electric profile applied to the Hospital default total electric profile + total_chiller_electric_consumption = sum(inputs.s.cooling_load.loads_kw_thermal) / inputs.s.existing_chiller.cop + @test round(total_chiller_electric_consumption, digits=0) ≈ 320544.0 atol=1.0 # loads_kw is **electric**, loads_kw_thermal is **thermal** - # Heating load is input as **fuel**, not thermal - # If boiler efficiency is not input, we use REopt.EXISTING_BOILER_EFFICIENCY to convert fuel to thermal - expected_fuel = input_data["SpaceHeatingLoad"]["annual_mmbtu"] + input_data["DomesticHotWaterLoad"]["annual_mmbtu"] - total_boiler_heating_thermal_load_mmbtu = (sum(inputs.s.space_heating_load.loads_kw) + sum(inputs.s.dhw_load.loads_kw)) / REopt.KWH_PER_MMBTU - @test round(total_boiler_heating_thermal_load_mmbtu, digits=0) ≈ expected_fuel * REopt.EXISTING_BOILER_EFFICIENCY atol=1.0 - total_boiler_heating_fuel_load_mmbtu = total_boiler_heating_thermal_load_mmbtu / inputs.s.existing_boiler.efficiency - @test round(total_boiler_heating_fuel_load_mmbtu, digits=0) ≈ expected_fuel * REopt.EXISTING_BOILER_EFFICIENCY / inputs.s.existing_boiler.efficiency atol=1.0 - # If boiler efficiency is input, use that with annual or monthly mmbtu input to convert fuel to thermal - input_data["ExistingBoiler"]["efficiency"] = 0.72 - s = Scenario(input_data) - inputs = REoptInputs(s) - total_boiler_heating_thermal_load_mmbtu = (sum(inputs.s.space_heating_load.loads_kw) + sum(inputs.s.dhw_load.loads_kw)) / REopt.KWH_PER_MMBTU - @test round(total_boiler_heating_thermal_load_mmbtu, digits=0) ≈ expected_fuel * input_data["ExistingBoiler"]["efficiency"] atol=1.0 - total_boiler_heating_fuel_load_mmbtu = total_boiler_heating_thermal_load_mmbtu / inputs.s.existing_boiler.efficiency - @test round(total_boiler_heating_fuel_load_mmbtu, digits=0) ≈ expected_fuel * input_data["ExistingBoiler"]["efficiency"] / inputs.s.existing_boiler.efficiency atol=1.0 - - # The expected cooling load is based on the default **fraction of total electric** profile for the doe_reference_name when annual_tonhour is NOT input - # the 320540.0 kWh number is from the default LargeOffice fraction of total electric profile applied to the Hospital default total electric profile - total_chiller_electric_consumption = sum(inputs.s.cooling_load.loads_kw_thermal) / inputs.s.existing_chiller.cop - @test round(total_chiller_electric_consumption, digits=0) ≈ 320544.0 atol=1.0 # loads_kw is **electric**, loads_kw_thermal is **thermal** - - #Test CHP defaults use average fuel load, size class 2 for recip_engine - @test inputs.s.chp.min_allowable_kw ≈ 50.0 atol=0.01 - @test inputs.s.chp.om_cost_per_kwh ≈ 0.0235 atol=0.0001 - - delete!(input_data, "SpaceHeatingLoad") - delete!(input_data, "DomesticHotWaterLoad") - annual_fraction_of_electric_load_input = 0.5 - input_data["CoolingLoad"] = Dict{Any, Any}("annual_fraction_of_electric_load" => annual_fraction_of_electric_load_input) - - s = Scenario(input_data) - inputs = REoptInputs(s) + #Test CHP defaults use average fuel load, size class 2 for recip_engine + @test inputs.s.chp.min_allowable_kw ≈ 50.0 atol=0.01 + @test inputs.s.chp.om_cost_per_kwh ≈ 0.0235 atol=0.0001 - expected_cooling_electricity = sum(inputs.s.electric_load.loads_kw) * annual_fraction_of_electric_load_input - total_chiller_electric_consumption = sum(inputs.s.cooling_load.loads_kw_thermal) / inputs.s.cooling_load.existing_chiller_cop - @test round(total_chiller_electric_consumption, digits=0) ≈ round(expected_cooling_electricity) atol=1.0 - @test round(total_chiller_electric_consumption, digits=0) ≈ 3876410 atol=1.0 + delete!(input_data, "SpaceHeatingLoad") + delete!(input_data, "DomesticHotWaterLoad") + annual_fraction_of_electric_load_input = 0.5 + input_data["CoolingLoad"] = Dict{Any, Any}("annual_fraction_of_electric_load" => annual_fraction_of_electric_load_input) - # Check that without heating load or max_kw input, CHP.max_kw gets set based on peak electric load - @test inputs.s.chp.max_kw ≈ maximum(inputs.s.electric_load.loads_kw) atol=0.01 + s = Scenario(input_data) + inputs = REoptInputs(s) - input_data["SpaceHeatingLoad"] = Dict{Any, Any}("monthly_mmbtu" => repeat([1000.0], 12)) - input_data["DomesticHotWaterLoad"] = Dict{Any, Any}("monthly_mmbtu" => repeat([1000.0], 12)) - input_data["CoolingLoad"] = Dict{Any, Any}("monthly_fractions_of_electric_load" => repeat([0.1], 12)) + expected_cooling_electricity = sum(inputs.s.electric_load.loads_kw) * annual_fraction_of_electric_load_input + total_chiller_electric_consumption = sum(inputs.s.cooling_load.loads_kw_thermal) / inputs.s.cooling_load.existing_chiller_cop + @test round(total_chiller_electric_consumption, digits=0) ≈ round(expected_cooling_electricity) atol=1.0 + @test round(total_chiller_electric_consumption, digits=0) ≈ 3876410 atol=1.0 - s = Scenario(input_data) - inputs = REoptInputs(s) + # Check that without heating load or max_kw input, CHP.max_kw gets set based on peak electric load + @test inputs.s.chp.max_kw ≈ maximum(inputs.s.electric_load.loads_kw) atol=0.01 - #Test CHP defaults use average fuel load, size class changes to 3 - @test inputs.s.chp.min_allowable_kw ≈ 125.0 atol=0.1 - @test inputs.s.chp.om_cost_per_kwh ≈ 0.021 atol=0.0001 - #Update CHP prime_mover and test new defaults - input_data["CHP"]["prime_mover"] = "combustion_turbine" - input_data["CHP"]["size_class"] = 1 - # Set max_kw higher than peak electric load so min_allowable_kw doesn't get assigned to max_kw - input_data["CHP"]["max_kw"] = 2500.0 + input_data["SpaceHeatingLoad"] = Dict{Any, Any}("monthly_mmbtu" => repeat([1000.0], 12)) + input_data["DomesticHotWaterLoad"] = Dict{Any, Any}("monthly_mmbtu" => repeat([1000.0], 12)) + input_data["CoolingLoad"] = Dict{Any, Any}("monthly_fractions_of_electric_load" => repeat([0.1], 12)) - s = Scenario(input_data) - inputs = REoptInputs(s) + s = Scenario(input_data) + inputs = REoptInputs(s) - @test inputs.s.chp.min_allowable_kw ≈ 2000.0 atol=0.1 - @test inputs.s.chp.om_cost_per_kwh ≈ 0.014499999999999999 atol=0.0001 + #Test CHP defaults use average fuel load, size class changes to 3 + @test inputs.s.chp.min_allowable_kw ≈ 125.0 atol=0.1 + @test inputs.s.chp.om_cost_per_kwh ≈ 0.021 atol=0.0001 + #Update CHP prime_mover and test new defaults + input_data["CHP"]["prime_mover"] = "combustion_turbine" + input_data["CHP"]["size_class"] = 1 + # Set max_kw higher than peak electric load so min_allowable_kw doesn't get assigned to max_kw + input_data["CHP"]["max_kw"] = 2500.0 - total_heating_fuel_load_mmbtu = (sum(inputs.s.space_heating_load.loads_kw) + - sum(inputs.s.dhw_load.loads_kw)) / input_data["ExistingBoiler"]["efficiency"] / REopt.KWH_PER_MMBTU - @test round(total_heating_fuel_load_mmbtu, digits=0) ≈ 24000 atol=1.0 - total_chiller_electric_consumption = sum(inputs.s.cooling_load.loads_kw_thermal) / inputs.s.cooling_load.existing_chiller_cop - @test round(total_chiller_electric_consumption, digits=0) ≈ 775282 atol=1.0 + s = Scenario(input_data) + inputs = REoptInputs(s) - input_data["SpaceHeatingLoad"] = Dict{Any, Any}("fuel_loads_mmbtu_per_hour" => repeat([0.5], 8760)) - input_data["DomesticHotWaterLoad"] = Dict{Any, Any}("fuel_loads_mmbtu_per_hour" => repeat([0.5], 8760)) - input_data["CoolingLoad"] = Dict{Any, Any}("per_time_step_fractions_of_electric_load" => repeat([0.01], 8760)) + @test inputs.s.chp.min_allowable_kw ≈ 2000.0 atol=0.1 + @test inputs.s.chp.om_cost_per_kwh ≈ 0.014499999999999999 atol=0.0001 - s = Scenario(input_data) - inputs = REoptInputs(s) + total_heating_fuel_load_mmbtu = (sum(inputs.s.space_heating_load.loads_kw) + + sum(inputs.s.dhw_load.loads_kw)) / input_data["ExistingBoiler"]["efficiency"] / REopt.KWH_PER_MMBTU + @test round(total_heating_fuel_load_mmbtu, digits=0) ≈ 24000 atol=1.0 + total_chiller_electric_consumption = sum(inputs.s.cooling_load.loads_kw_thermal) / inputs.s.cooling_load.existing_chiller_cop + @test round(total_chiller_electric_consumption, digits=0) ≈ 775282 atol=1.0 - total_heating_fuel_load_mmbtu = (sum(inputs.s.space_heating_load.loads_kw) + - sum(inputs.s.dhw_load.loads_kw)) / input_data["ExistingBoiler"]["efficiency"] / REopt.KWH_PER_MMBTU - @test round(total_heating_fuel_load_mmbtu, digits=0) ≈ 8760 atol=0.1 - @test round(sum(inputs.s.cooling_load.loads_kw_thermal) / inputs.s.cooling_load.existing_chiller_cop, digits=0) ≈ 77528.0 atol=1.0 + input_data["SpaceHeatingLoad"] = Dict{Any, Any}("fuel_loads_mmbtu_per_hour" => repeat([0.5], 8760)) + input_data["DomesticHotWaterLoad"] = Dict{Any, Any}("fuel_loads_mmbtu_per_hour" => repeat([0.5], 8760)) + input_data["CoolingLoad"] = Dict{Any, Any}("per_time_step_fractions_of_electric_load" => repeat([0.01], 8760)) - # Make sure annual_tonhour is preserved with conditional existing_chiller_default logic, where guess-and-correct method is applied - input_data["SpaceHeatingLoad"] = Dict{Any, Any}() - input_data["DomesticHotWaterLoad"] = Dict{Any, Any}() - annual_tonhour = 25000.0 - input_data["CoolingLoad"] = Dict{Any, Any}("doe_reference_name" => "Hospital", - "annual_tonhour" => annual_tonhour) - input_data["ExistingChiller"] = Dict{Any, Any}() + s = Scenario(input_data) + inputs = REoptInputs(s) - s = Scenario(input_data) - inputs = REoptInputs(s) + total_heating_fuel_load_mmbtu = (sum(inputs.s.space_heating_load.loads_kw) + + sum(inputs.s.dhw_load.loads_kw)) / input_data["ExistingBoiler"]["efficiency"] / REopt.KWH_PER_MMBTU + @test round(total_heating_fuel_load_mmbtu, digits=0) ≈ 8760 atol=0.1 + @test round(sum(inputs.s.cooling_load.loads_kw_thermal) / inputs.s.cooling_load.existing_chiller_cop, digits=0) ≈ 77528.0 atol=1.0 - @test round(sum(inputs.s.cooling_load.loads_kw_thermal) / REopt.KWH_THERMAL_PER_TONHOUR, digits=0) ≈ annual_tonhour atol=1.0 - - # Test for prime generator CHP inputs (electric only) - # First get CHP cost to compare later with prime generator - input_data["ElectricLoad"] = Dict("doe_reference_name" => "FlatLoad", - "annual_kwh" => 876000) - input_data["ElectricTariff"] = Dict("blended_annual_energy_rate" => 0.06, - "blended_annual_demand_rate" => 0.0 ) - s_chp = Scenario(input_data) - inputs_chp = REoptInputs(s) - installed_cost_chp = s_chp.chp.installed_cost_per_kw - - # Now get prime generator (electric only) - input_data["CHP"]["is_electric_only"] = true - delete!(input_data["CHP"], "max_kw") - s = Scenario(input_data) - inputs = REoptInputs(s) - # Costs are 75% of CHP - @test inputs.s.chp.installed_cost_per_kw ≈ (0.75*installed_cost_chp) atol=1.0 - @test inputs.s.chp.om_cost_per_kwh ≈ (0.75*0.0145) atol=0.0001 - @test inputs.s.chp.federal_itc_fraction ≈ 0.0 atol=0.0001 - # Thermal efficiency set to zero - @test inputs.s.chp.thermal_efficiency_full_load == 0 - @test inputs.s.chp.thermal_efficiency_half_load == 0 - # Max size based on electric load, not heating load - @test inputs.s.chp.max_kw ≈ maximum(inputs.s.electric_load.loads_kw) atol=0.001 - end + # Make sure annual_tonhour is preserved with conditional existing_chiller_default logic, where guess-and-correct method is applied + input_data["SpaceHeatingLoad"] = Dict{Any, Any}() + input_data["DomesticHotWaterLoad"] = Dict{Any, Any}() + annual_tonhour = 25000.0 + input_data["CoolingLoad"] = Dict{Any, Any}("doe_reference_name" => "Hospital", + "annual_tonhour" => annual_tonhour) + input_data["ExistingChiller"] = Dict{Any, Any}() - @testset "Hybrid/blended heating and cooling loads" begin - """ + s = Scenario(input_data) + inputs = REoptInputs(s) - This tests the hybrid/campus loads for heating and cooling, where a blended_doe_reference_names - and blended_doe_reference_percents are given and blended to create an aggregate load profile + @test round(sum(inputs.s.cooling_load.loads_kw_thermal) / REopt.KWH_THERMAL_PER_TONHOUR, digits=0) ≈ annual_tonhour atol=1.0 + + # Test for prime generator CHP inputs (electric only) + # First get CHP cost to compare later with prime generator + input_data["ElectricLoad"] = Dict("doe_reference_name" => "FlatLoad", + "annual_kwh" => 876000) + input_data["ElectricTariff"] = Dict("blended_annual_energy_rate" => 0.06, + "blended_annual_demand_rate" => 0.0 ) + s_chp = Scenario(input_data) + inputs_chp = REoptInputs(s) + installed_cost_chp = s_chp.chp.installed_cost_per_kw + + # Now get prime generator (electric only) + input_data["CHP"]["is_electric_only"] = true + delete!(input_data["CHP"], "max_kw") + s = Scenario(input_data) + inputs = REoptInputs(s) + # Costs are 75% of CHP + @test inputs.s.chp.installed_cost_per_kw ≈ (0.75*installed_cost_chp) atol=1.0 + @test inputs.s.chp.om_cost_per_kwh ≈ (0.75*0.0145) atol=0.0001 + @test inputs.s.chp.federal_itc_fraction ≈ 0.0 atol=0.0001 + # Thermal efficiency set to zero + @test inputs.s.chp.thermal_efficiency_full_load == 0 + @test inputs.s.chp.thermal_efficiency_half_load == 0 + # Max size based on electric load, not heating load + @test inputs.s.chp.max_kw ≈ maximum(inputs.s.electric_load.loads_kw) atol=0.001 + end - """ - input_data = JSON.parsefile("./scenarios/hybrid_loads_heating_cooling_inputs.json") + @testset "Hybrid/blended heating and cooling loads" begin + """ - hospital_fraction = 0.75 - hotel_fraction = 1.0 - hospital_fraction + This tests the hybrid/campus loads for heating and cooling, where a blended_doe_reference_names + and blended_doe_reference_percents are given and blended to create an aggregate load profile - # Hospital only - input_data["ElectricLoad"]["annual_kwh"] = hospital_fraction * 100 - input_data["ElectricLoad"]["doe_reference_name"] = "Hospital" - input_data["SpaceHeatingLoad"]["annual_mmbtu"] = hospital_fraction * 100 - input_data["SpaceHeatingLoad"]["doe_reference_name"] = "Hospital" - input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = hospital_fraction * 100 - input_data["DomesticHotWaterLoad"]["doe_reference_name"] = "Hospital" - input_data["CoolingLoad"]["doe_reference_name"] = "Hospital" + """ + input_data = JSON.parsefile("./scenarios/hybrid_loads_heating_cooling_inputs.json") - s = Scenario(input_data) - inputs = REoptInputs(s) + hospital_fraction = 0.75 + hotel_fraction = 1.0 - hospital_fraction - elec_hospital = inputs.s.electric_load.loads_kw - space_hospital = inputs.s.space_heating_load.loads_kw # thermal - dhw_hospital = inputs.s.dhw_load.loads_kw # thermal - cooling_hospital = inputs.s.cooling_load.loads_kw_thermal # thermal - cooling_elec_frac_of_total_hospital = cooling_hospital / inputs.s.cooling_load.existing_chiller_cop ./ elec_hospital - - # Hotel only - input_data["ElectricLoad"]["annual_kwh"] = hotel_fraction * 100 - input_data["ElectricLoad"]["doe_reference_name"] = "LargeHotel" - input_data["SpaceHeatingLoad"]["annual_mmbtu"] = hotel_fraction * 100 - input_data["SpaceHeatingLoad"]["doe_reference_name"] = "LargeHotel" - input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = hotel_fraction * 100 - input_data["DomesticHotWaterLoad"]["doe_reference_name"] = "LargeHotel" - input_data["CoolingLoad"]["doe_reference_name"] = "LargeHotel" - - s = Scenario(input_data) - inputs = REoptInputs(s) + # Hospital only + input_data["ElectricLoad"]["annual_kwh"] = hospital_fraction * 100 + input_data["ElectricLoad"]["doe_reference_name"] = "Hospital" + input_data["SpaceHeatingLoad"]["annual_mmbtu"] = hospital_fraction * 100 + input_data["SpaceHeatingLoad"]["doe_reference_name"] = "Hospital" + input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = hospital_fraction * 100 + input_data["DomesticHotWaterLoad"]["doe_reference_name"] = "Hospital" + input_data["CoolingLoad"]["doe_reference_name"] = "Hospital" - elec_hotel = inputs.s.electric_load.loads_kw - space_hotel = inputs.s.space_heating_load.loads_kw # thermal - dhw_hotel = inputs.s.dhw_load.loads_kw # thermal - cooling_hotel = inputs.s.cooling_load.loads_kw_thermal # thermal - cooling_elec_frac_of_total_hotel = cooling_hotel / inputs.s.cooling_load.existing_chiller_cop ./ elec_hotel + s = Scenario(input_data) + inputs = REoptInputs(s) - # Hybrid mix of hospital and hotel - # Remove previous assignment of doe_reference_name - for load in ["ElectricLoad", "SpaceHeatingLoad", "DomesticHotWaterLoad", "CoolingLoad"] - delete!(input_data[load], "doe_reference_name") - end - annual_energy = (hospital_fraction + hotel_fraction) * 100 - building_list = ["Hospital", "LargeHotel"] - percent_share_list = [hospital_fraction, hotel_fraction] - input_data["ElectricLoad"]["annual_kwh"] = annual_energy - input_data["ElectricLoad"]["blended_doe_reference_names"] = building_list - input_data["ElectricLoad"]["blended_doe_reference_percents"] = percent_share_list - - input_data["SpaceHeatingLoad"]["annual_mmbtu"] = annual_energy - input_data["SpaceHeatingLoad"]["blended_doe_reference_names"] = building_list - input_data["SpaceHeatingLoad"]["blended_doe_reference_percents"] = percent_share_list - input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = annual_energy - input_data["DomesticHotWaterLoad"]["blended_doe_reference_names"] = building_list - input_data["DomesticHotWaterLoad"]["blended_doe_reference_percents"] = percent_share_list - - # CoolingLoad now use a weighted fraction of total electric profile if no annual_tonhour is provided - input_data["CoolingLoad"]["blended_doe_reference_names"] = building_list - input_data["CoolingLoad"]["blended_doe_reference_percents"] = percent_share_list - - s = Scenario(input_data) - inputs = REoptInputs(s) + elec_hospital = inputs.s.electric_load.loads_kw + space_hospital = inputs.s.space_heating_load.loads_kw # thermal + dhw_hospital = inputs.s.dhw_load.loads_kw # thermal + cooling_hospital = inputs.s.cooling_load.loads_kw_thermal # thermal + cooling_elec_frac_of_total_hospital = cooling_hospital / inputs.s.cooling_load.existing_chiller_cop ./ elec_hospital + + # Hotel only + input_data["ElectricLoad"]["annual_kwh"] = hotel_fraction * 100 + input_data["ElectricLoad"]["doe_reference_name"] = "LargeHotel" + input_data["SpaceHeatingLoad"]["annual_mmbtu"] = hotel_fraction * 100 + input_data["SpaceHeatingLoad"]["doe_reference_name"] = "LargeHotel" + input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = hotel_fraction * 100 + input_data["DomesticHotWaterLoad"]["doe_reference_name"] = "LargeHotel" + input_data["CoolingLoad"]["doe_reference_name"] = "LargeHotel" - elec_hybrid = inputs.s.electric_load.loads_kw - space_hybrid = inputs.s.space_heating_load.loads_kw # thermal - dhw_hybrid = inputs.s.dhw_load.loads_kw # thermal - cooling_hybrid = inputs.s.cooling_load.loads_kw_thermal # thermal - cooling_elec_hybrid = cooling_hybrid / inputs.s.cooling_load.existing_chiller_cop # electric - cooling_elec_frac_of_total_hybrid = cooling_hybrid / inputs.s.cooling_load.existing_chiller_cop ./ elec_hybrid - - # Check that the combined/hybrid load is the same as the sum of the individual loads in each time_step - - @test round(sum(elec_hybrid .- (elec_hospital .+ elec_hotel)), digits=1) ≈ 0.0 atol=0.1 - @test round(sum(space_hybrid .- (space_hospital .+ space_hotel)), digits=1) ≈ 0.0 atol=0.1 - @test round(sum(dhw_hybrid .- (dhw_hospital .+ dhw_hotel)), digits=1) ≈ 0.0 atol=0.1 - # Check that the cooling load is the weighted average of the default CRB fraction of total electric profiles - cooling_electric_hybrid_expected = elec_hybrid .* (cooling_elec_frac_of_total_hospital * hospital_fraction .+ - cooling_elec_frac_of_total_hotel * hotel_fraction) - @test round(sum(cooling_electric_hybrid_expected .- cooling_elec_hybrid), digits=1) ≈ 0.0 atol=0.1 - end + s = Scenario(input_data) + inputs = REoptInputs(s) - @testset "Boiler (new) test" begin - input_data = JSON.parsefile("scenarios/boiler_new_inputs.json") - input_data["SpaceHeatingLoad"]["annual_mmbtu"] = 0.5 * 8760 - input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = 0.5 * 8760 - s = Scenario(input_data) - inputs = REoptInputs(s) - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt([m1,m2], inputs) - - # BAU boiler loads - load_thermal_mmbtu_bau = sum(s.space_heating_load.loads_kw + s.dhw_load.loads_kw) / REopt.KWH_PER_MMBTU - existing_boiler_mmbtu = sum(results["ExistingBoiler"]["thermal_production_series_mmbtu_per_hour"]) - boiler_thermal_mmbtu = sum(results["Boiler"]["thermal_production_series_mmbtu_per_hour"]) - - # Used monthly fuel cost for ExistingBoiler and Boiler, where ExistingBoiler has lower fuel cost only - # in February (28 days), so expect ExistingBoiler to serve the flat/constant load 28 days of the year - @test existing_boiler_mmbtu ≈ load_thermal_mmbtu_bau * 28 / 365 atol=0.00001 - @test boiler_thermal_mmbtu ≈ load_thermal_mmbtu_bau - existing_boiler_mmbtu atol=0.00001 - end + elec_hotel = inputs.s.electric_load.loads_kw + space_hotel = inputs.s.space_heating_load.loads_kw # thermal + dhw_hotel = inputs.s.dhw_load.loads_kw # thermal + cooling_hotel = inputs.s.cooling_load.loads_kw_thermal # thermal + cooling_elec_frac_of_total_hotel = cooling_hotel / inputs.s.cooling_load.existing_chiller_cop ./ elec_hotel - @testset "OffGrid" begin - ## Scenario 1: Solar, Storage, Fixed Generator - post_name = "off_grid.json" - post = JSON.parsefile("./scenarios/$post_name") - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt(m, post) - scen = Scenario(post) - - # Test default values - @test scen.electric_utility.outage_start_time_step ≈ 1 - @test scen.electric_utility.outage_end_time_step ≈ 8760 * scen.settings.time_steps_per_hour - @test scen.storage.attr["ElectricStorage"].soc_init_fraction ≈ 1 - @test scen.storage.attr["ElectricStorage"].can_grid_charge ≈ false - @test scen.generator.fuel_avail_gal ≈ 1.0e9 - @test scen.generator.min_turn_down_fraction ≈ 0.15 - @test sum(scen.electric_load.loads_kw) - sum(scen.electric_load.critical_loads_kw) ≈ 0 # critical loads should equal loads_kw - @test scen.financial.microgrid_upgrade_cost_fraction ≈ 0 - - # Test outputs - @test r["ElectricUtility"]["annual_energy_supplied_kwh"] ≈ 0 # no interaction with grid - @test r["Financial"]["lifecycle_offgrid_other_capital_costs"] ≈ 2617.092 atol=0.01 # Check straight line depreciation calc - @test sum(r["ElectricLoad"]["offgrid_annual_oper_res_provided_series_kwh"]) >= sum(r["ElectricLoad"]["offgrid_annual_oper_res_required_series_kwh"]) # OR provided >= required - @test r["ElectricLoad"]["offgrid_load_met_fraction"] >= scen.electric_load.min_load_met_annual_fraction - @test r["PV"]["size_kw"] ≈ 5050.0 - f = r["Financial"] - @test f["lifecycle_generation_tech_capital_costs"] + f["lifecycle_storage_capital_costs"] + f["lifecycle_om_costs_after_tax"] + - f["lifecycle_fuel_costs_after_tax"] + f["lifecycle_chp_standby_cost_after_tax"] + f["lifecycle_elecbill_after_tax"] + - f["lifecycle_offgrid_other_annual_costs_after_tax"] + f["lifecycle_offgrid_other_capital_costs"] + - f["lifecycle_outage_cost"] + f["lifecycle_MG_upgrade_and_fuel_cost"] - - f["lifecycle_production_incentive_after_tax"] ≈ f["lcc"] atol=1.0 - - ## Scenario 2: Fixed Generator only - post["ElectricLoad"]["annual_kwh"] = 100.0 - post["PV"]["max_kw"] = 0.0 - post["ElectricStorage"]["max_kw"] = 0.0 - post["Generator"]["min_turn_down_fraction"] = 0.0 + # Hybrid mix of hospital and hotel + # Remove previous assignment of doe_reference_name + for load in ["ElectricLoad", "SpaceHeatingLoad", "DomesticHotWaterLoad", "CoolingLoad"] + delete!(input_data[load], "doe_reference_name") + end + annual_energy = (hospital_fraction + hotel_fraction) * 100 + building_list = ["Hospital", "LargeHotel"] + percent_share_list = [hospital_fraction, hotel_fraction] + input_data["ElectricLoad"]["annual_kwh"] = annual_energy + input_data["ElectricLoad"]["blended_doe_reference_names"] = building_list + input_data["ElectricLoad"]["blended_doe_reference_percents"] = percent_share_list + + input_data["SpaceHeatingLoad"]["annual_mmbtu"] = annual_energy + input_data["SpaceHeatingLoad"]["blended_doe_reference_names"] = building_list + input_data["SpaceHeatingLoad"]["blended_doe_reference_percents"] = percent_share_list + input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = annual_energy + input_data["DomesticHotWaterLoad"]["blended_doe_reference_names"] = building_list + input_data["DomesticHotWaterLoad"]["blended_doe_reference_percents"] = percent_share_list + + # CoolingLoad now use a weighted fraction of total electric profile if no annual_tonhour is provided + input_data["CoolingLoad"]["blended_doe_reference_names"] = building_list + input_data["CoolingLoad"]["blended_doe_reference_percents"] = percent_share_list - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt(m, post) - - # Test generator outputs - @test r["Generator"]["annual_fuel_consumption_gal"] ≈ 7.52 # 99 kWh * 0.076 gal/kWh - @test r["Generator"]["annual_energy_produced_kwh"] ≈ 99.0 - @test r["Generator"]["year_one_fuel_cost_before_tax"] ≈ 22.57 - @test r["Generator"]["lifecycle_fuel_cost_after_tax"] ≈ 205.35 - @test r["Financial"]["initial_capital_costs"] ≈ 100*(700) - @test r["Financial"]["lifecycle_capital_costs"] ≈ 100*(700+324.235442*(1-0.26)) atol=0.1 # replacement in yr 10 is considered tax deductible - @test r["Financial"]["initial_capital_costs_after_incentives"] ≈ 700*100 atol=0.1 - @test r["Financial"]["replacements_future_cost_after_tax"] ≈ 700*100 - @test r["Financial"]["replacements_present_cost_after_tax"] ≈ 100*(324.235442*(1-0.26)) atol=0.1 - - ## Scenario 3: Fixed Generator that can meet load, but cannot meet load operating reserve requirement - ## This test ensures the load operating reserve requirement is being enforced - post["ElectricLoad"]["doe_reference_name"] = "FlatLoad" - post["ElectricLoad"]["annual_kwh"] = 876000.0 # requires 100 kW gen - post["ElectricLoad"]["min_load_met_annual_fraction"] = 1.0 # requires additional generator capacity - post["PV"]["max_kw"] = 0.0 - post["ElectricStorage"]["max_kw"] = 0.0 - post["Generator"]["min_turn_down_fraction"] = 0.0 + s = Scenario(input_data) + inputs = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt(m, post) + elec_hybrid = inputs.s.electric_load.loads_kw + space_hybrid = inputs.s.space_heating_load.loads_kw # thermal + dhw_hybrid = inputs.s.dhw_load.loads_kw # thermal + cooling_hybrid = inputs.s.cooling_load.loads_kw_thermal # thermal + cooling_elec_hybrid = cooling_hybrid / inputs.s.cooling_load.existing_chiller_cop # electric + cooling_elec_frac_of_total_hybrid = cooling_hybrid / inputs.s.cooling_load.existing_chiller_cop ./ elec_hybrid + + # Check that the combined/hybrid load is the same as the sum of the individual loads in each time_step + + @test round(sum(elec_hybrid .- (elec_hospital .+ elec_hotel)), digits=1) ≈ 0.0 atol=0.1 + @test round(sum(space_hybrid .- (space_hospital .+ space_hotel)), digits=1) ≈ 0.0 atol=0.1 + @test round(sum(dhw_hybrid .- (dhw_hospital .+ dhw_hotel)), digits=1) ≈ 0.0 atol=0.1 + # Check that the cooling load is the weighted average of the default CRB fraction of total electric profiles + cooling_electric_hybrid_expected = elec_hybrid .* (cooling_elec_frac_of_total_hospital * hospital_fraction .+ + cooling_elec_frac_of_total_hotel * hotel_fraction) + @test round(sum(cooling_electric_hybrid_expected .- cooling_elec_hybrid), digits=1) ≈ 0.0 atol=0.1 + end - # Test generator outputs - @test typeof(r) == Model # this is true when the model is infeasible + @testset "Boiler (new) test" begin + input_data = JSON.parsefile("scenarios/boiler_new_inputs.json") + input_data["SpaceHeatingLoad"]["annual_mmbtu"] = 0.5 * 8760 + input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = 0.5 * 8760 + s = Scenario(input_data) + inputs = REoptInputs(s) + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt([m1,m2], inputs) + + # BAU boiler loads + load_thermal_mmbtu_bau = sum(s.space_heating_load.loads_kw + s.dhw_load.loads_kw) / REopt.KWH_PER_MMBTU + existing_boiler_mmbtu = sum(results["ExistingBoiler"]["thermal_production_series_mmbtu_per_hour"]) + boiler_thermal_mmbtu = sum(results["Boiler"]["thermal_production_series_mmbtu_per_hour"]) + + # Used monthly fuel cost for ExistingBoiler and Boiler, where ExistingBoiler has lower fuel cost only + # in February (28 days), so expect ExistingBoiler to serve the flat/constant load 28 days of the year + @test existing_boiler_mmbtu ≈ load_thermal_mmbtu_bau * 28 / 365 atol=0.00001 + @test boiler_thermal_mmbtu ≈ load_thermal_mmbtu_bau - existing_boiler_mmbtu atol=0.00001 + end - ### Scenario 3: Indonesia. Wind (custom prod) and Generator only - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) - post_name = "wind_intl_offgrid.json" - post = JSON.parsefile("./scenarios/$post_name") - post["ElectricLoad"]["loads_kw"] = [10.0 for i in range(1,8760)] - scen = Scenario(post) - post["Wind"]["production_factor_series"] = reduce(vcat, readdlm("./data/example_wind_prod_factor_kw.csv", '\n', header=true)[1]) + @testset "OffGrid" begin + ## Scenario 1: Solar, Storage, Fixed Generator + post_name = "off_grid.json" + post = JSON.parsefile("./scenarios/$post_name") + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt(m, post) + scen = Scenario(post) + + # Test default values + @test scen.electric_utility.outage_start_time_step ≈ 1 + @test scen.electric_utility.outage_end_time_step ≈ 8760 * scen.settings.time_steps_per_hour + @test scen.storage.attr["ElectricStorage"].soc_init_fraction ≈ 1 + @test scen.storage.attr["ElectricStorage"].can_grid_charge ≈ false + @test scen.generator.fuel_avail_gal ≈ 1.0e9 + @test scen.generator.min_turn_down_fraction ≈ 0.15 + @test sum(scen.electric_load.loads_kw) - sum(scen.electric_load.critical_loads_kw) ≈ 0 # critical loads should equal loads_kw + @test scen.financial.microgrid_upgrade_cost_fraction ≈ 0 + + # Test outputs + @test r["ElectricUtility"]["annual_energy_supplied_kwh"] ≈ 0 # no interaction with grid + @test r["Financial"]["lifecycle_offgrid_other_capital_costs"] ≈ 2617.092 atol=0.01 # Check straight line depreciation calc + @test sum(r["ElectricLoad"]["offgrid_annual_oper_res_provided_series_kwh"]) >= sum(r["ElectricLoad"]["offgrid_annual_oper_res_required_series_kwh"]) # OR provided >= required + @test r["ElectricLoad"]["offgrid_load_met_fraction"] >= scen.electric_load.min_load_met_annual_fraction + @test r["PV"]["size_kw"] ≈ 5050.0 + f = r["Financial"] + @test f["lifecycle_generation_tech_capital_costs"] + f["lifecycle_storage_capital_costs"] + f["lifecycle_om_costs_after_tax"] + + f["lifecycle_fuel_costs_after_tax"] + f["lifecycle_chp_standby_cost_after_tax"] + f["lifecycle_elecbill_after_tax"] + + f["lifecycle_offgrid_other_annual_costs_after_tax"] + f["lifecycle_offgrid_other_capital_costs"] + + f["lifecycle_outage_cost"] + f["lifecycle_MG_upgrade_and_fuel_cost"] - + f["lifecycle_production_incentive_after_tax"] ≈ f["lcc"] atol=1.0 + + ## Scenario 2: Fixed Generator only + post["ElectricLoad"]["annual_kwh"] = 100.0 + post["PV"]["max_kw"] = 0.0 + post["ElectricStorage"]["max_kw"] = 0.0 + post["Generator"]["min_turn_down_fraction"] = 0.0 + + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt(m, post) + + # Test generator outputs + @test r["Generator"]["annual_fuel_consumption_gal"] ≈ 7.52 # 99 kWh * 0.076 gal/kWh + @test r["Generator"]["annual_energy_produced_kwh"] ≈ 99.0 + @test r["Generator"]["year_one_fuel_cost_before_tax"] ≈ 22.57 + @test r["Generator"]["lifecycle_fuel_cost_after_tax"] ≈ 205.35 + @test r["Financial"]["initial_capital_costs"] ≈ 100*(700) + @test r["Financial"]["lifecycle_capital_costs"] ≈ 100*(700+324.235442*(1-0.26)) atol=0.1 # replacement in yr 10 is considered tax deductible + @test r["Financial"]["initial_capital_costs_after_incentives"] ≈ 700*100 atol=0.1 + @test r["Financial"]["replacements_future_cost_after_tax"] ≈ 700*100 + @test r["Financial"]["replacements_present_cost_after_tax"] ≈ 100*(324.235442*(1-0.26)) atol=0.1 + + ## Scenario 3: Fixed Generator that can meet load, but cannot meet load operating reserve requirement + ## This test ensures the load operating reserve requirement is being enforced + post["ElectricLoad"]["doe_reference_name"] = "FlatLoad" + post["ElectricLoad"]["annual_kwh"] = 876000.0 # requires 100 kW gen + post["ElectricLoad"]["min_load_met_annual_fraction"] = 1.0 # requires additional generator capacity + post["PV"]["max_kw"] = 0.0 + post["ElectricStorage"]["max_kw"] = 0.0 + post["Generator"]["min_turn_down_fraction"] = 0.0 + + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt(m, post) + + # Test generator outputs + @test typeof(r) == Model # this is true when the model is infeasible + + ### Scenario 3: Indonesia. Wind (custom prod) and Generator only + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) + post_name = "wind_intl_offgrid.json" + post = JSON.parsefile("./scenarios/$post_name") + post["ElectricLoad"]["loads_kw"] = [10.0 for i in range(1,8760)] + scen = Scenario(post) + post["Wind"]["production_factor_series"] = reduce(vcat, readdlm("./data/example_wind_prod_factor_kw.csv", '\n', header=true)[1]) - results = run_reopt(m, post) - - @test results["ElectricLoad"]["offgrid_load_met_fraction"] >= scen.electric_load.min_load_met_annual_fraction - f = results["Financial"] - @test f["lifecycle_generation_tech_capital_costs"] + f["lifecycle_storage_capital_costs"] + f["lifecycle_om_costs_after_tax"] + - f["lifecycle_fuel_costs_after_tax"] + f["lifecycle_chp_standby_cost_after_tax"] + f["lifecycle_elecbill_after_tax"] + - f["lifecycle_offgrid_other_annual_costs_after_tax"] + f["lifecycle_offgrid_other_capital_costs"] + - f["lifecycle_outage_cost"] + f["lifecycle_MG_upgrade_and_fuel_cost"] - - f["lifecycle_production_incentive_after_tax"] ≈ f["lcc"] atol=1.0 - - windOR = sum(results["Wind"]["electric_to_load_series_kw"] * post["Wind"]["operating_reserve_required_fraction"]) - loadOR = sum(post["ElectricLoad"]["loads_kw"] * scen.electric_load.operating_reserve_required_fraction) - @test sum(results["ElectricLoad"]["offgrid_annual_oper_res_required_series_kwh"]) ≈ loadOR + windOR atol=1.0 + results = run_reopt(m, post) + + @test results["ElectricLoad"]["offgrid_load_met_fraction"] >= scen.electric_load.min_load_met_annual_fraction + f = results["Financial"] + @test f["lifecycle_generation_tech_capital_costs"] + f["lifecycle_storage_capital_costs"] + f["lifecycle_om_costs_after_tax"] + + f["lifecycle_fuel_costs_after_tax"] + f["lifecycle_chp_standby_cost_after_tax"] + f["lifecycle_elecbill_after_tax"] + + f["lifecycle_offgrid_other_annual_costs_after_tax"] + f["lifecycle_offgrid_other_capital_costs"] + + f["lifecycle_outage_cost"] + f["lifecycle_MG_upgrade_and_fuel_cost"] - + f["lifecycle_production_incentive_after_tax"] ≈ f["lcc"] atol=1.0 + + windOR = sum(results["Wind"]["electric_to_load_series_kw"] * post["Wind"]["operating_reserve_required_fraction"]) + loadOR = sum(post["ElectricLoad"]["loads_kw"] * scen.electric_load.operating_reserve_required_fraction) + @test sum(results["ElectricLoad"]["offgrid_annual_oper_res_required_series_kwh"]) ≈ loadOR + windOR atol=1.0 - end + end - @testset "GHP" begin - """ + @testset "GHP" begin + """ - This tests multiple unique aspects of GHP: - 1. REopt takes the output data of GhpGhx, creates multiple GHP options, and chooses the expected one - 2. GHP with heating and cooling "..efficiency_thermal_factors" reduces the net thermal load - 3. GHP serves only the SpaceHeatingLoad by default unless it is allowed to serve DHW - 4. GHP serves all the Cooling load - 5. Input of a custom COP map for GHP and check the GHP performance to make sure it's using it correctly - 6. Hybrid GHP capability functions as expected + This tests multiple unique aspects of GHP: + 1. REopt takes the output data of GhpGhx, creates multiple GHP options, and chooses the expected one + 2. GHP with heating and cooling "..efficiency_thermal_factors" reduces the net thermal load + 3. GHP serves only the SpaceHeatingLoad by default unless it is allowed to serve DHW + 4. GHP serves all the Cooling load + 5. Input of a custom COP map for GHP and check the GHP performance to make sure it's using it correctly + 6. Hybrid GHP capability functions as expected - """ - # Load base inputs - input_data = JSON.parsefile("scenarios/ghp_inputs.json") - - # Modify ["GHP"]["ghpghx_inputs"] for running GhpGhx.jl - # Heat pump performance maps - cop_map_mat_header = readdlm("scenarios/ghp_cop_map_custom.csv", ',', header=true) - data = cop_map_mat_header[1] - headers = cop_map_mat_header[2] - # Generate a "records" style dictionary from the - cop_map_list = [] - for i in axes(data,1) - dict_record = Dict(name=>data[i, col] for (col, name) in enumerate(headers)) - push!(cop_map_list, dict_record) - end - input_data["GHP"]["ghpghx_inputs"][1]["cop_map_eft_heating_cooling"] = cop_map_list - - # Due to GhpGhx not being a registered package (no OSI-approved license), - # the registered REopt package cannot have GhpGhx as a "normal" dependency; - # Therefore, we only use a "ghpghx_response" (the output of GhpGhx) as an - # input to REopt to avoid GhpGhx module calls - response_1 = JSON.parsefile("scenarios/ghpghx_response.json") - response_2 = deepcopy(response_1) - # Reduce the electric consumption of response 2 which should then be the chosen system - response_2["outputs"]["yearly_total_electric_consumption_series_kw"] *= 0.5 - input_data["GHP"]["ghpghx_responses"] = [response_1, response_2] - - # Heating load - input_data["SpaceHeatingLoad"]["doe_reference_name"] = "Hospital" - input_data["SpaceHeatingLoad"]["monthly_mmbtu"] = fill(1000.0, 12) - input_data["SpaceHeatingLoad"]["monthly_mmbtu"][1] = 500.0 - input_data["SpaceHeatingLoad"]["monthly_mmbtu"][end] = 1500.0 - - # Call REopt - s = Scenario(input_data) - inputs = REoptInputs(s) - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - results = run_reopt([m1,m2], inputs) - - ghp_option_chosen = results["GHP"]["ghp_option_chosen"] - @test ghp_option_chosen == 2 - - # Test GHP heating and cooling load reduced - hot_load_reduced_mmbtu = sum(results["GHP"]["space_heating_thermal_load_reduction_with_ghp_mmbtu_per_hour"]) - cold_load_reduced_tonhour = sum(results["GHP"]["cooling_thermal_load_reduction_with_ghp_ton"]) - @test hot_load_reduced_mmbtu ≈ 1440.00 atol=0.1 - @test cold_load_reduced_tonhour ≈ 761382.78 atol=0.1 - - # Test GHP serving space heating with VAV thermal efficiency improvements - heating_served_mmbtu = sum(s.ghp_option_list[ghp_option_chosen].heating_thermal_kw / REopt.KWH_PER_MMBTU) - expected_heating_served_mmbtu = 12000 * 0.8 * 0.85 # (fuel_mmbtu * boiler_effic * space_heating_efficiency_thermal_factor) - @test round(heating_served_mmbtu, digits=1) ≈ expected_heating_served_mmbtu atol=1.0 - - # Boiler serves all of the DHW load, no DHW thermal reduction due to GHP retrofit - boiler_served_mmbtu = sum(results["ExistingBoiler"]["thermal_production_series_mmbtu_per_hour"]) - expected_boiler_served_mmbtu = 3000 * 0.8 # (fuel_mmbtu * boiler_effic) - @test round(boiler_served_mmbtu, digits=1) ≈ expected_boiler_served_mmbtu atol=1.0 - - # LoadProfileChillerThermal cooling thermal is 1/cooling_efficiency_thermal_factor of GHP cooling thermal production - bau_chiller_thermal_tonhour = sum(s.cooling_load.loads_kw_thermal / REopt.KWH_THERMAL_PER_TONHOUR) - ghp_cooling_thermal_tonhour = sum(inputs.ghp_cooling_thermal_load_served_kw[1,:] / REopt.KWH_THERMAL_PER_TONHOUR) - @test round(bau_chiller_thermal_tonhour) ≈ ghp_cooling_thermal_tonhour/0.6 atol=1.0 - - # Custom heat pump COP map is used properly - ghp_option_chosen = results["GHP"]["ghp_option_chosen"] - heating_cop_avg = s.ghp_option_list[ghp_option_chosen].ghpghx_response["outputs"]["heating_cop_avg"] - cooling_cop_avg = s.ghp_option_list[ghp_option_chosen].ghpghx_response["outputs"]["cooling_cop_avg"] - # Average COP which includes pump power should be lower than Heat Pump only COP specified by the map - @test heating_cop_avg <= 4.0 - @test cooling_cop_avg <= 8.0 + """ + # Load base inputs + input_data = JSON.parsefile("scenarios/ghp_inputs.json") + + # Modify ["GHP"]["ghpghx_inputs"] for running GhpGhx.jl + # Heat pump performance maps + cop_map_mat_header = readdlm("scenarios/ghp_cop_map_custom.csv", ',', header=true) + data = cop_map_mat_header[1] + headers = cop_map_mat_header[2] + # Generate a "records" style dictionary from the + cop_map_list = [] + for i in axes(data,1) + dict_record = Dict(name=>data[i, col] for (col, name) in enumerate(headers)) + push!(cop_map_list, dict_record) end + input_data["GHP"]["ghpghx_inputs"][1]["cop_map_eft_heating_cooling"] = cop_map_list + + # Due to GhpGhx not being a registered package (no OSI-approved license), + # the registered REopt package cannot have GhpGhx as a "normal" dependency; + # Therefore, we only use a "ghpghx_response" (the output of GhpGhx) as an + # input to REopt to avoid GhpGhx module calls + response_1 = JSON.parsefile("scenarios/ghpghx_response.json") + response_2 = deepcopy(response_1) + # Reduce the electric consumption of response 2 which should then be the chosen system + response_2["outputs"]["yearly_total_electric_consumption_series_kw"] *= 0.5 + input_data["GHP"]["ghpghx_responses"] = [response_1, response_2] + + # Heating load + input_data["SpaceHeatingLoad"]["doe_reference_name"] = "Hospital" + input_data["SpaceHeatingLoad"]["monthly_mmbtu"] = fill(1000.0, 12) + input_data["SpaceHeatingLoad"]["monthly_mmbtu"][1] = 500.0 + input_data["SpaceHeatingLoad"]["monthly_mmbtu"][end] = 1500.0 + + # Call REopt + s = Scenario(input_data) + inputs = REoptInputs(s) + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + results = run_reopt([m1,m2], inputs) + + ghp_option_chosen = results["GHP"]["ghp_option_chosen"] + @test ghp_option_chosen == 2 + + # Test GHP heating and cooling load reduced + hot_load_reduced_mmbtu = sum(results["GHP"]["space_heating_thermal_load_reduction_with_ghp_mmbtu_per_hour"]) + cold_load_reduced_tonhour = sum(results["GHP"]["cooling_thermal_load_reduction_with_ghp_ton"]) + @test hot_load_reduced_mmbtu ≈ 1440.00 atol=0.1 + @test cold_load_reduced_tonhour ≈ 761382.78 atol=0.1 + + # Test GHP serving space heating with VAV thermal efficiency improvements + heating_served_mmbtu = sum(s.ghp_option_list[ghp_option_chosen].heating_thermal_kw / REopt.KWH_PER_MMBTU) + expected_heating_served_mmbtu = 12000 * 0.8 * 0.85 # (fuel_mmbtu * boiler_effic * space_heating_efficiency_thermal_factor) + @test round(heating_served_mmbtu, digits=1) ≈ expected_heating_served_mmbtu atol=1.0 + + # Boiler serves all of the DHW load, no DHW thermal reduction due to GHP retrofit + boiler_served_mmbtu = sum(results["ExistingBoiler"]["thermal_production_series_mmbtu_per_hour"]) + expected_boiler_served_mmbtu = 3000 * 0.8 # (fuel_mmbtu * boiler_effic) + @test round(boiler_served_mmbtu, digits=1) ≈ expected_boiler_served_mmbtu atol=1.0 + + # LoadProfileChillerThermal cooling thermal is 1/cooling_efficiency_thermal_factor of GHP cooling thermal production + bau_chiller_thermal_tonhour = sum(s.cooling_load.loads_kw_thermal / REopt.KWH_THERMAL_PER_TONHOUR) + ghp_cooling_thermal_tonhour = sum(inputs.ghp_cooling_thermal_load_served_kw[1,:] / REopt.KWH_THERMAL_PER_TONHOUR) + @test round(bau_chiller_thermal_tonhour) ≈ ghp_cooling_thermal_tonhour/0.6 atol=1.0 + + # Custom heat pump COP map is used properly + ghp_option_chosen = results["GHP"]["ghp_option_chosen"] + heating_cop_avg = s.ghp_option_list[ghp_option_chosen].ghpghx_response["outputs"]["heating_cop_avg"] + cooling_cop_avg = s.ghp_option_list[ghp_option_chosen].ghpghx_response["outputs"]["cooling_cop_avg"] + # Average COP which includes pump power should be lower than Heat Pump only COP specified by the map + @test heating_cop_avg <= 4.0 + @test cooling_cop_avg <= 8.0 + end - @testset "Hybrid GHX and GHP calculated costs validation" begin - ## Hybrid GHP validation. - # Load base inputs - input_data = JSON.parsefile("scenarios/ghp_financial_hybrid.json") + @testset "Hybrid GHX and GHP calculated costs validation" begin + ## Hybrid GHP validation. + # Load base inputs + input_data = JSON.parsefile("scenarios/ghp_financial_hybrid.json") - inputs = REoptInputs(input_data) + inputs = REoptInputs(input_data) - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - results = run_reopt([m1,m2], inputs) + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + results = run_reopt([m1,m2], inputs) - calculated_ghp_capital_costs = ((input_data["GHP"]["ghpghx_responses"][1]["outputs"]["number_of_boreholes"]* - input_data["GHP"]["ghpghx_responses"][1]["outputs"]["length_boreholes_ft"]* - inputs.s.ghp_option_list[1].installed_cost_ghx_per_ft) + - (inputs.s.ghp_option_list[1].installed_cost_heatpump_per_ton* - input_data["GHP"]["ghpghx_responses"][1]["outputs"]["peak_combined_heatpump_thermal_ton"]* - inputs.s.ghp_option_list[1].heatpump_capacity_sizing_factor_on_peak_load) + - (inputs.s.ghp_option_list[1].building_sqft* - inputs.s.ghp_option_list[1].installed_cost_building_hydronic_loop_per_sqft)) + calculated_ghp_capital_costs = ((input_data["GHP"]["ghpghx_responses"][1]["outputs"]["number_of_boreholes"]* + input_data["GHP"]["ghpghx_responses"][1]["outputs"]["length_boreholes_ft"]* + inputs.s.ghp_option_list[1].installed_cost_ghx_per_ft) + + (inputs.s.ghp_option_list[1].installed_cost_heatpump_per_ton* + input_data["GHP"]["ghpghx_responses"][1]["outputs"]["peak_combined_heatpump_thermal_ton"]* + inputs.s.ghp_option_list[1].heatpump_capacity_sizing_factor_on_peak_load) + + (inputs.s.ghp_option_list[1].building_sqft* + inputs.s.ghp_option_list[1].installed_cost_building_hydronic_loop_per_sqft)) - @test results["Financial"]["initial_capital_costs"] ≈ calculated_ghp_capital_costs atol=0.1 - - calculated_om_costs = inputs.s.ghp_option_list[1].building_sqft* - inputs.s.ghp_option_list[1].om_cost_per_sqft_year * inputs.third_party_factor * inputs.pwf_om + @test results["Financial"]["initial_capital_costs"] ≈ calculated_ghp_capital_costs atol=0.1 + + calculated_om_costs = inputs.s.ghp_option_list[1].building_sqft* + inputs.s.ghp_option_list[1].om_cost_per_sqft_year * inputs.third_party_factor * inputs.pwf_om - @test results["Financial"]["lifecycle_om_costs_before_tax"] ≈ calculated_om_costs atol=0.1 + @test results["Financial"]["lifecycle_om_costs_before_tax"] ≈ calculated_om_costs atol=0.1 - calc_om_cost_after_tax = calculated_om_costs*(1-inputs.s.financial.owner_tax_rate_fraction) - @test results["Financial"]["lifecycle_om_costs_after_tax"] - calc_om_cost_after_tax < 0.0001 + calc_om_cost_after_tax = calculated_om_costs*(1-inputs.s.financial.owner_tax_rate_fraction) + @test results["Financial"]["lifecycle_om_costs_after_tax"] - calc_om_cost_after_tax < 0.0001 - @test abs(results["Financial"]["lifecycle_capital_costs_plus_om_after_tax"] - (calc_om_cost_after_tax + 0.7*results["Financial"]["initial_capital_costs"])) < 150.0 + @test abs(results["Financial"]["lifecycle_capital_costs_plus_om_after_tax"] - (calc_om_cost_after_tax + 0.7*results["Financial"]["initial_capital_costs"])) < 150.0 - @test abs(results["Financial"]["lifecycle_capital_costs"] - 0.7*results["Financial"]["initial_capital_costs"]) < 150.0 + @test abs(results["Financial"]["lifecycle_capital_costs"] - 0.7*results["Financial"]["initial_capital_costs"]) < 150.0 - @test abs(results["Financial"]["npv"] - 840621) < 1.0 - @test results["Financial"]["simple_payback_years"] - 5.09 < 0.1 - @test results["Financial"]["internal_rate_of_return"] - 0.18 < 0.01 + @test abs(results["Financial"]["npv"] - 840621) < 1.0 + @test results["Financial"]["simple_payback_years"] - 5.09 < 0.1 + @test results["Financial"]["internal_rate_of_return"] - 0.18 < 0.01 - @test haskey(results["ExistingBoiler"], "year_one_fuel_cost_before_tax_bau") + @test haskey(results["ExistingBoiler"], "year_one_fuel_cost_before_tax_bau") - ## Hybrid - input_data["GHP"]["ghpghx_responses"] = [JSON.parsefile("scenarios/ghpghx_hybrid_results.json")] - input_data["GHP"]["avoided_capex_by_ghp_present_value"] = 1.0e6 - input_data["GHP"]["ghx_useful_life_years"] = 35 + ## Hybrid + input_data["GHP"]["ghpghx_responses"] = [JSON.parsefile("scenarios/ghpghx_hybrid_results.json")] + input_data["GHP"]["avoided_capex_by_ghp_present_value"] = 1.0e6 + input_data["GHP"]["ghx_useful_life_years"] = 35 - inputs = REoptInputs(input_data) + inputs = REoptInputs(input_data) - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - results = run_reopt([m1,m2], inputs) + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + results = run_reopt([m1,m2], inputs) - pop!(input_data["GHP"], "ghpghx_inputs", nothing) - pop!(input_data["GHP"], "ghpghx_responses", nothing) - ghp_obj = REopt.GHP(JSON.parsefile("scenarios/ghpghx_hybrid_results.json"), input_data["GHP"]) + pop!(input_data["GHP"], "ghpghx_inputs", nothing) + pop!(input_data["GHP"], "ghpghx_responses", nothing) + ghp_obj = REopt.GHP(JSON.parsefile("scenarios/ghpghx_hybrid_results.json"), input_data["GHP"]) - calculated_ghx_residual_value = ghp_obj.ghx_only_capital_cost* - ( - (ghp_obj.ghx_useful_life_years - inputs.s.financial.analysis_years)/ghp_obj.ghx_useful_life_years - )/( - (1 + inputs.s.financial.offtaker_discount_rate_fraction)^inputs.s.financial.analysis_years - ) - - @test results["GHP"]["ghx_residual_value_present_value"] ≈ calculated_ghx_residual_value atol=0.1 - @test inputs.s.ghp_option_list[1].is_ghx_hybrid = true + calculated_ghx_residual_value = ghp_obj.ghx_only_capital_cost* + ( + (ghp_obj.ghx_useful_life_years - inputs.s.financial.analysis_years)/ghp_obj.ghx_useful_life_years + )/( + (1 + inputs.s.financial.offtaker_discount_rate_fraction)^inputs.s.financial.analysis_years + ) + + @test results["GHP"]["ghx_residual_value_present_value"] ≈ calculated_ghx_residual_value atol=0.1 + @test inputs.s.ghp_option_list[1].is_ghx_hybrid = true - # Test centralized GHP cost calculations - input_data_wwhp = JSON.parsefile("scenarios/ghp_inputs_wwhp.json") - response_wwhp = JSON.parsefile("scenarios/ghpghx_response_wwhp.json") - input_data_wwhp["GHP"]["ghpghx_responses"] = [response_wwhp] + # Test centralized GHP cost calculations + input_data_wwhp = JSON.parsefile("scenarios/ghp_inputs_wwhp.json") + response_wwhp = JSON.parsefile("scenarios/ghpghx_response_wwhp.json") + input_data_wwhp["GHP"]["ghpghx_responses"] = [response_wwhp] - s_wwhp = Scenario(input_data_wwhp) - inputs_wwhp = REoptInputs(s_wwhp) - m3 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - results_wwhp = run_reopt(m3, inputs_wwhp) + s_wwhp = Scenario(input_data_wwhp) + inputs_wwhp = REoptInputs(s_wwhp) + m3 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + results_wwhp = run_reopt(m3, inputs_wwhp) - heating_hp_cost = input_data_wwhp["GHP"]["installed_cost_wwhp_heating_pump_per_ton"] * - input_data_wwhp["GHP"]["heatpump_capacity_sizing_factor_on_peak_load"] * - results_wwhp["GHP"]["ghpghx_chosen_outputs"]["peak_heating_heatpump_thermal_ton"] + heating_hp_cost = input_data_wwhp["GHP"]["installed_cost_wwhp_heating_pump_per_ton"] * + input_data_wwhp["GHP"]["heatpump_capacity_sizing_factor_on_peak_load"] * + results_wwhp["GHP"]["ghpghx_chosen_outputs"]["peak_heating_heatpump_thermal_ton"] - cooling_hp_cost = input_data_wwhp["GHP"]["installed_cost_wwhp_cooling_pump_per_ton"] * - input_data_wwhp["GHP"]["heatpump_capacity_sizing_factor_on_peak_load"] * - results_wwhp["GHP"]["ghpghx_chosen_outputs"]["peak_cooling_heatpump_thermal_ton"] + cooling_hp_cost = input_data_wwhp["GHP"]["installed_cost_wwhp_cooling_pump_per_ton"] * + input_data_wwhp["GHP"]["heatpump_capacity_sizing_factor_on_peak_load"] * + results_wwhp["GHP"]["ghpghx_chosen_outputs"]["peak_cooling_heatpump_thermal_ton"] - ghx_cost = input_data_wwhp["GHP"]["installed_cost_ghx_per_ft"] * - results_wwhp["GHP"]["ghpghx_chosen_outputs"]["number_of_boreholes"] * - results_wwhp["GHP"]["ghpghx_chosen_outputs"]["length_boreholes_ft"] + ghx_cost = input_data_wwhp["GHP"]["installed_cost_ghx_per_ft"] * + results_wwhp["GHP"]["ghpghx_chosen_outputs"]["number_of_boreholes"] * + results_wwhp["GHP"]["ghpghx_chosen_outputs"]["length_boreholes_ft"] - # CAPEX reduction factor for 30% ITC, 5-year MACRS, assuming 26% tax rate and 8.3% discount - capex_reduction_factor = 0.455005797 + # CAPEX reduction factor for 30% ITC, 5-year MACRS, assuming 26% tax rate and 8.3% discount + capex_reduction_factor = 0.455005797 - calculated_ghp_capex = (heating_hp_cost + cooling_hp_cost + ghx_cost) * (1 - capex_reduction_factor) + calculated_ghp_capex = (heating_hp_cost + cooling_hp_cost + ghx_cost) * (1 - capex_reduction_factor) - reopt_ghp_capex = results_wwhp["Financial"]["lifecycle_capital_costs"] - @test calculated_ghp_capex ≈ reopt_ghp_capex atol=300 - end + reopt_ghp_capex = results_wwhp["Financial"]["lifecycle_capital_costs"] + @test calculated_ghp_capex ≈ reopt_ghp_capex atol=300 + end - @testset "Cambium Emissions" begin - """ - 1) Location in contiguous US - - Correct data from Cambium (returned location and values) - - Adjusted for load year vs. Cambium year (which starts on Sunday) vs. AVERT year (2022 currently) - - co2 pct increase should be zero - 2) HI and AK locations - - Should use AVERT data and give an "info" message - - Adjust for load year vs. AVERT year - - co2 pct increase should be the default value unless user provided value - 3) International - - all emissions should be zero unless provided - """ - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - - post_name = "cambium.json" - post = JSON.parsefile("./scenarios/$post_name") - - cities = Dict( - "Denver" => (39.7413753050447, -104.99965032911328), - "Fairbanks" => (64.84053664406181, -147.71913656313163), - "Santiago" => (-33.44485437650408, -70.69031905547853) - ) - - # 1) Location in contiguous US - city = "Denver" - post["Site"]["latitude"] = cities[city][1] - post["Site"]["longitude"] = cities[city][2] - post["ElectricLoad"]["loads_kw"] = [20 for i in range(1,8760)] - post["ElectricLoad"]["year"] = 2021 # 2021 First day is Fri - scen = Scenario(post) - - @test scen.electric_utility.avert_emissions_region == "Rocky Mountains" - @test scen.electric_utility.distance_to_avert_emissions_region_meters ≈ 0 atol=1e-5 - @test scen.electric_utility.cambium_emissions_region == "RMPAc" - @test sum(scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh) / 8760 ≈ 0.394608 rtol=1e-3 - @test scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh[1] ≈ 0.677942 rtol=1e-4 # Should start on Friday - @test scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh[8760] ≈ 0.6598207198 rtol=1e-5 # Should end on Friday - @test sum(scen.electric_utility.emissions_factor_series_lb_SO2_per_kwh) / 8760 ≈ 0.00061165 rtol=1e-5 # check avg from AVERT data for RM region - @test scen.electric_utility.emissions_factor_CO2_decrease_fraction ≈ 0 atol=1e-5 # should be 0 with Cambium data - @test scen.electric_utility.emissions_factor_SO2_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["SO2"] # should be 2.163% for AVERT data - @test scen.electric_utility.emissions_factor_NOx_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["NOx"] - @test scen.electric_utility.emissions_factor_PM25_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["PM25"] - - # 2) AK location - city = "Fairbanks" - post["Site"]["latitude"] = cities[city][1] - post["Site"]["longitude"] = cities[city][2] - scen = Scenario(post) - - @test scen.electric_utility.avert_emissions_region == "Alaska" - @test scen.electric_utility.distance_to_avert_emissions_region_meters ≈ 0 atol=1e-5 - @test scen.electric_utility.cambium_emissions_region == "NA - Cambium data not used for climate emissions" - @test sum(scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh) / 8760 ≈ 1.29199999 rtol=1e-3 # check that data from eGRID (AVERT data file) is used - @test scen.electric_utility.emissions_factor_CO2_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["CO2e"] # should get updated to this value - @test scen.electric_utility.emissions_factor_SO2_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["SO2"] # should be 2.163% for AVERT data - @test scen.electric_utility.emissions_factor_NOx_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["NOx"] - @test scen.electric_utility.emissions_factor_PM25_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["PM25"] - - # 3) International location - city = "Santiago" - post["Site"]["latitude"] = cities[city][1] - post["Site"]["longitude"] = cities[city][2] - scen = Scenario(post) - - @test scen.electric_utility.avert_emissions_region == "" - @test scen.electric_utility.distance_to_avert_emissions_region_meters ≈ 5.521032136418236e6 atol=1.0 - @test scen.electric_utility.cambium_emissions_region == "NA - Cambium data not used for climate emissions" - @test sum(scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh) ≈ 0 - @test sum(scen.electric_utility.emissions_factor_series_lb_NOx_per_kwh) ≈ 0 - @test sum(scen.electric_utility.emissions_factor_series_lb_SO2_per_kwh) ≈ 0 - @test sum(scen.electric_utility.emissions_factor_series_lb_PM25_per_kwh) ≈ 0 + @testset "Cambium Emissions" begin + """ + 1) Location in contiguous US + - Correct data from Cambium (returned location and values) + - Adjusted for load year vs. Cambium year (which starts on Sunday) vs. AVERT year (2022 currently) + - co2 pct increase should be zero + 2) HI and AK locations + - Should use AVERT data and give an "info" message + - Adjust for load year vs. AVERT year + - co2 pct increase should be the default value unless user provided value + 3) International + - all emissions should be zero unless provided + """ + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + + post_name = "cambium.json" + post = JSON.parsefile("./scenarios/$post_name") + + cities = Dict( + "Denver" => (39.7413753050447, -104.99965032911328), + "Fairbanks" => (64.84053664406181, -147.71913656313163), + "Santiago" => (-33.44485437650408, -70.69031905547853) + ) + + # 1) Location in contiguous US + city = "Denver" + post["Site"]["latitude"] = cities[city][1] + post["Site"]["longitude"] = cities[city][2] + post["ElectricLoad"]["loads_kw"] = [20 for i in range(1,8760)] + post["ElectricLoad"]["year"] = 2021 # 2021 First day is Fri + scen = Scenario(post) + + @test scen.electric_utility.avert_emissions_region == "Rocky Mountains" + @test scen.electric_utility.distance_to_avert_emissions_region_meters ≈ 0 atol=1e-5 + @test scen.electric_utility.cambium_emissions_region == "RMPAc" + @test sum(scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh) / 8760 ≈ 0.394608 rtol=1e-3 + @test scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh[1] ≈ 0.677942 rtol=1e-4 # Should start on Friday + @test scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh[8760] ≈ 0.6598207198 rtol=1e-5 # Should end on Friday + @test sum(scen.electric_utility.emissions_factor_series_lb_SO2_per_kwh) / 8760 ≈ 0.00061165 rtol=1e-5 # check avg from AVERT data for RM region + @test scen.electric_utility.emissions_factor_CO2_decrease_fraction ≈ 0 atol=1e-5 # should be 0 with Cambium data + @test scen.electric_utility.emissions_factor_SO2_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["SO2"] # should be 2.163% for AVERT data + @test scen.electric_utility.emissions_factor_NOx_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["NOx"] + @test scen.electric_utility.emissions_factor_PM25_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["PM25"] + + # 2) AK location + city = "Fairbanks" + post["Site"]["latitude"] = cities[city][1] + post["Site"]["longitude"] = cities[city][2] + scen = Scenario(post) + + @test scen.electric_utility.avert_emissions_region == "Alaska" + @test scen.electric_utility.distance_to_avert_emissions_region_meters ≈ 0 atol=1e-5 + @test scen.electric_utility.cambium_emissions_region == "NA - Cambium data not used for climate emissions" + @test sum(scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh) / 8760 ≈ 1.29199999 rtol=1e-3 # check that data from eGRID (AVERT data file) is used + @test scen.electric_utility.emissions_factor_CO2_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["CO2e"] # should get updated to this value + @test scen.electric_utility.emissions_factor_SO2_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["SO2"] # should be 2.163% for AVERT data + @test scen.electric_utility.emissions_factor_NOx_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["NOx"] + @test scen.electric_utility.emissions_factor_PM25_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["PM25"] + + # 3) International location + city = "Santiago" + post["Site"]["latitude"] = cities[city][1] + post["Site"]["longitude"] = cities[city][2] + scen = Scenario(post) - end + @test scen.electric_utility.avert_emissions_region == "" + @test scen.electric_utility.distance_to_avert_emissions_region_meters ≈ 5.521032136418236e6 atol=1.0 + @test scen.electric_utility.cambium_emissions_region == "NA - Cambium data not used for climate emissions" + @test sum(scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh) ≈ 0 + @test sum(scen.electric_utility.emissions_factor_series_lb_NOx_per_kwh) ≈ 0 + @test sum(scen.electric_utility.emissions_factor_series_lb_SO2_per_kwh) ≈ 0 + @test sum(scen.electric_utility.emissions_factor_series_lb_PM25_per_kwh) ≈ 0 + + end - @testset "Emissions and Renewable Energy Percent" begin - #renewable energy and emissions reduction targets - include_exported_RE_in_total = [true,false,true] - include_exported_ER_in_total = [true,false,true] - RE_target = [0.8,nothing,nothing] - ER_target = [nothing,0.8,nothing] - with_outage = [true,false,false] - - for i in range(1, stop=3) - if i == 3 - inputs = JSON.parsefile("./scenarios/re_emissions_with_thermal.json") - else - inputs = JSON.parsefile("./scenarios/re_emissions_elec_only.json") - end - if i == 1 - inputs["Site"]["latitude"] = 37.746 - inputs["Site"]["longitude"] = -122.448 - # inputs["ElectricUtility"]["emissions_region"] = "California" - end - inputs["Site"]["include_exported_renewable_electricity_in_total"] = include_exported_RE_in_total[i] - inputs["Site"]["include_exported_elec_emissions_in_total"] = include_exported_ER_in_total[i] - inputs["Site"]["renewable_electricity_min_fraction"] = if isnothing(RE_target[i]) 0.0 else RE_target[i] end - inputs["Site"]["renewable_electricity_max_fraction"] = RE_target[i] - inputs["Site"]["CO2_emissions_reduction_min_fraction"] = ER_target[i] - inputs["Site"]["CO2_emissions_reduction_max_fraction"] = ER_target[i] - if with_outage[i] - outage_start_hour = 4032 - outage_duration = 2000 #hrs - inputs["ElectricUtility"]["outage_start_time_step"] = outage_start_hour + 1 - inputs["ElectricUtility"]["outage_end_time_step"] = outage_start_hour + 1 + outage_duration - inputs["Generator"]["max_kw"] = 20 - inputs["Generator"]["existing_kw"] = 2 - inputs["Generator"]["fuel_avail_gal"] = 1000 - end + @testset "Emissions and Renewable Energy Percent" begin + #renewable energy and emissions reduction targets + include_exported_RE_in_total = [true,false,true] + include_exported_ER_in_total = [true,false,true] + RE_target = [0.8,nothing,nothing] + ER_target = [nothing,0.8,nothing] + with_outage = [true,false,false] + + for i in range(1, stop=3) + if i == 3 + inputs = JSON.parsefile("./scenarios/re_emissions_with_thermal.json") + else + inputs = JSON.parsefile("./scenarios/re_emissions_elec_only.json") + end + if i == 1 + inputs["Site"]["latitude"] = 37.746 + inputs["Site"]["longitude"] = -122.448 + # inputs["ElectricUtility"]["emissions_region"] = "California" + end + inputs["Site"]["include_exported_renewable_electricity_in_total"] = include_exported_RE_in_total[i] + inputs["Site"]["include_exported_elec_emissions_in_total"] = include_exported_ER_in_total[i] + inputs["Site"]["renewable_electricity_min_fraction"] = if isnothing(RE_target[i]) 0.0 else RE_target[i] end + inputs["Site"]["renewable_electricity_max_fraction"] = RE_target[i] + inputs["Site"]["CO2_emissions_reduction_min_fraction"] = ER_target[i] + inputs["Site"]["CO2_emissions_reduction_max_fraction"] = ER_target[i] + if with_outage[i] + outage_start_hour = 4032 + outage_duration = 2000 #hrs + inputs["ElectricUtility"]["outage_start_time_step"] = outage_start_hour + 1 + inputs["ElectricUtility"]["outage_end_time_step"] = outage_start_hour + 1 + outage_duration + inputs["Generator"]["max_kw"] = 20 + inputs["Generator"]["existing_kw"] = 2 + inputs["Generator"]["fuel_avail_gal"] = 1000 + end + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + results = run_reopt([m1, m2], inputs) + + if !isnothing(ER_target[i]) + ER_fraction_out = results["Site"]["lifecycle_emissions_reduction_CO2_fraction"] + @test ER_target[i] ≈ ER_fraction_out atol=1e-3 + lifecycle_emissions_tonnes_CO2_out = results["Site"]["lifecycle_emissions_tonnes_CO2"] + lifecycle_emissions_bau_tonnes_CO2_out = results["Site"]["lifecycle_emissions_tonnes_CO2_bau"] + ER_fraction_calced_out = (lifecycle_emissions_bau_tonnes_CO2_out-lifecycle_emissions_tonnes_CO2_out)/lifecycle_emissions_bau_tonnes_CO2_out + ER_fraction_diff = abs(ER_fraction_calced_out-ER_fraction_out) + @test ER_fraction_diff ≈ 0.0 atol=1e-2 + end + + annual_emissions_tonnes_CO2_out = results["Site"]["annual_emissions_tonnes_CO2"] + yr1_fuel_emissions_tonnes_CO2_out = results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] + yr1_grid_emissions_tonnes_CO2_out = results["ElectricUtility"]["annual_emissions_tonnes_CO2"] + yr1_total_emissions_calced_tonnes_CO2 = yr1_fuel_emissions_tonnes_CO2_out + yr1_grid_emissions_tonnes_CO2_out + @test annual_emissions_tonnes_CO2_out ≈ yr1_total_emissions_calced_tonnes_CO2 atol=1e-1 + if haskey(results["Financial"],"breakeven_cost_of_emissions_reduction_per_tonne_CO2") + @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] >= 0.0 + end + + if i == 1 + @test results["PV"]["size_kw"] ≈ 59.7222 atol=1e-1 + @test results["ElectricStorage"]["size_kw"] ≈ 0.0 atol=1e-1 + @test results["ElectricStorage"]["size_kwh"] ≈ 0.0 atol=1e-1 + @test results["Generator"]["size_kw"] ≈ 9.13 atol=1e-1 + @test results["Site"]["total_renewable_energy_fraction"] ≈ 0.8 + @test results["Site"]["total_renewable_energy_fraction_bau"] ≈ 0.148375 atol=1e-4 + @test results["Site"]["lifecycle_emissions_reduction_CO2_fraction"] ≈ 0.57403012 atol=1e-4 + @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] ≈ 332.4 atol=1 + @test results["Site"]["annual_emissions_tonnes_CO2"] ≈ 11.85 atol=1e-2 + @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] ≈ 7.427 + @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2_bau"] ≈ 0.0 + @test results["Financial"]["lifecycle_emissions_cost_climate"] ≈ 8459.45 atol=1 + @test results["Site"]["lifecycle_emissions_tonnes_CO2"] ≈ 236.95 + @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2"] ≈ 148.54 + @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2_bau"] ≈ 0.0 + @test results["ElectricUtility"]["annual_emissions_tonnes_CO2_bau"] ≈ 27.813 atol=1e-1 + @test results["ElectricUtility"]["lifecycle_emissions_tonnes_CO2_bau"] ≈ 556.26 + elseif i == 2 + #commented out values are results using same levelization factor as API + @test results["PV"]["size_kw"] ≈ 106.13 atol=1 + @test results["ElectricStorage"]["size_kw"] ≈ 20.09 atol=1 # 20.29 + @test results["ElectricStorage"]["size_kwh"] ≈ 170.94 atol=1 + @test !haskey(results, "Generator") + # Renewable energy + @test results["Site"]["renewable_electricity_fraction"] ≈ 0.78586 atol=1e-3 + @test results["Site"]["renewable_electricity_fraction_bau"] ≈ 0.132118 atol=1e-3 #0.1354 atol=1e-3 + @test results["Site"]["annual_renewable_electricity_kwh_bau"] ≈ 13308.5 atol=10 # 13542.62 atol=10 + @test results["Site"]["total_renewable_energy_fraction_bau"] ≈ 0.132118 atol=1e-3 # 0.1354 atol=1e-3 + # CO2 emissions - totals ≈ from grid, from fuelburn, ER, $/tCO2 breakeven + @test results["Site"]["lifecycle_emissions_reduction_CO2_fraction"] ≈ 0.8 atol=1e-3 # 0.8 + @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] ≈ 491.5 atol=1e-1 + @test results["Site"]["annual_emissions_tonnes_CO2"] ≈ 11.662 atol=1 + @test results["Site"]["annual_emissions_tonnes_CO2_bau"] ≈ 58.3095 atol=1 + @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] ≈ 0.0 atol=1 # 0.0 + @test results["Financial"]["lifecycle_emissions_cost_climate"] ≈ 8397.85 atol=1 + @test results["Site"]["lifecycle_emissions_tonnes_CO2_bau"] ≈ 1166.19 atol=1 + @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2"] ≈ 0.0 atol=1 # 0.0 + @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2_bau"] ≈ 0.0 atol=1 # 0.0 + @test results["ElectricUtility"]["annual_emissions_tonnes_CO2_bau"] ≈ 58.3095 atol=1 + @test results["ElectricUtility"]["lifecycle_emissions_tonnes_CO2"] ≈ 233.24 atol=1 + + + #also test CO2 breakeven cost + inputs["PV"]["min_kw"] = results["PV"]["size_kw"] - inputs["PV"]["existing_kw"] + inputs["PV"]["max_kw"] = results["PV"]["size_kw"] - inputs["PV"]["existing_kw"] + inputs["ElectricStorage"]["min_kw"] = results["ElectricStorage"]["size_kw"] + inputs["ElectricStorage"]["max_kw"] = results["ElectricStorage"]["size_kw"] + inputs["ElectricStorage"]["min_kwh"] = results["ElectricStorage"]["size_kwh"] + inputs["ElectricStorage"]["max_kwh"] = results["ElectricStorage"]["size_kwh"] + inputs["Financial"]["CO2_cost_per_tonne"] = results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] + inputs["Settings"]["include_climate_in_objective"] = true m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) results = run_reopt([m1, m2], inputs) - - if !isnothing(ER_target[i]) - ER_fraction_out = results["Site"]["lifecycle_emissions_reduction_CO2_fraction"] - @test ER_target[i] ≈ ER_fraction_out atol=1e-3 - lifecycle_emissions_tonnes_CO2_out = results["Site"]["lifecycle_emissions_tonnes_CO2"] - lifecycle_emissions_bau_tonnes_CO2_out = results["Site"]["lifecycle_emissions_tonnes_CO2_bau"] - ER_fraction_calced_out = (lifecycle_emissions_bau_tonnes_CO2_out-lifecycle_emissions_tonnes_CO2_out)/lifecycle_emissions_bau_tonnes_CO2_out - ER_fraction_diff = abs(ER_fraction_calced_out-ER_fraction_out) - @test ER_fraction_diff ≈ 0.0 atol=1e-2 - end - - annual_emissions_tonnes_CO2_out = results["Site"]["annual_emissions_tonnes_CO2"] - yr1_fuel_emissions_tonnes_CO2_out = results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] - yr1_grid_emissions_tonnes_CO2_out = results["ElectricUtility"]["annual_emissions_tonnes_CO2"] - yr1_total_emissions_calced_tonnes_CO2 = yr1_fuel_emissions_tonnes_CO2_out + yr1_grid_emissions_tonnes_CO2_out - @test annual_emissions_tonnes_CO2_out ≈ yr1_total_emissions_calced_tonnes_CO2 atol=1e-1 - if haskey(results["Financial"],"breakeven_cost_of_emissions_reduction_per_tonne_CO2") - @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] >= 0.0 - end - - if i == 1 - @test results["PV"]["size_kw"] ≈ 59.7222 atol=1e-1 - @test results["ElectricStorage"]["size_kw"] ≈ 0.0 atol=1e-1 - @test results["ElectricStorage"]["size_kwh"] ≈ 0.0 atol=1e-1 - @test results["Generator"]["size_kw"] ≈ 9.13 atol=1e-1 - @test results["Site"]["total_renewable_energy_fraction"] ≈ 0.8 - @test results["Site"]["total_renewable_energy_fraction_bau"] ≈ 0.148375 atol=1e-4 - @test results["Site"]["lifecycle_emissions_reduction_CO2_fraction"] ≈ 0.57403012 atol=1e-4 - @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] ≈ 332.4 atol=1 - @test results["Site"]["annual_emissions_tonnes_CO2"] ≈ 11.85 atol=1e-2 - @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] ≈ 7.427 - @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2_bau"] ≈ 0.0 - @test results["Financial"]["lifecycle_emissions_cost_climate"] ≈ 8459.45 atol=1 - @test results["Site"]["lifecycle_emissions_tonnes_CO2"] ≈ 236.95 - @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2"] ≈ 148.54 - @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2_bau"] ≈ 0.0 - @test results["ElectricUtility"]["annual_emissions_tonnes_CO2_bau"] ≈ 27.813 atol=1e-1 - @test results["ElectricUtility"]["lifecycle_emissions_tonnes_CO2_bau"] ≈ 556.26 - elseif i == 2 - #commented out values are results using same levelization factor as API - @test results["PV"]["size_kw"] ≈ 106.13 atol=1 - @test results["ElectricStorage"]["size_kw"] ≈ 20.09 atol=1 # 20.29 - @test results["ElectricStorage"]["size_kwh"] ≈ 170.94 atol=1 - @test !haskey(results, "Generator") - # Renewable energy - @test results["Site"]["renewable_electricity_fraction"] ≈ 0.78586 atol=1e-3 - @test results["Site"]["renewable_electricity_fraction_bau"] ≈ 0.132118 atol=1e-3 #0.1354 atol=1e-3 - @test results["Site"]["annual_renewable_electricity_kwh_bau"] ≈ 13308.5 atol=10 # 13542.62 atol=10 - @test results["Site"]["total_renewable_energy_fraction_bau"] ≈ 0.132118 atol=1e-3 # 0.1354 atol=1e-3 - # CO2 emissions - totals ≈ from grid, from fuelburn, ER, $/tCO2 breakeven - @test results["Site"]["lifecycle_emissions_reduction_CO2_fraction"] ≈ 0.8 atol=1e-3 # 0.8 - @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] ≈ 491.5 atol=1e-1 - @test results["Site"]["annual_emissions_tonnes_CO2"] ≈ 11.662 atol=1 - @test results["Site"]["annual_emissions_tonnes_CO2_bau"] ≈ 58.3095 atol=1 - @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] ≈ 0.0 atol=1 # 0.0 - @test results["Financial"]["lifecycle_emissions_cost_climate"] ≈ 8397.85 atol=1 - @test results["Site"]["lifecycle_emissions_tonnes_CO2_bau"] ≈ 1166.19 atol=1 - @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2"] ≈ 0.0 atol=1 # 0.0 - @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2_bau"] ≈ 0.0 atol=1 # 0.0 - @test results["ElectricUtility"]["annual_emissions_tonnes_CO2_bau"] ≈ 58.3095 atol=1 - @test results["ElectricUtility"]["lifecycle_emissions_tonnes_CO2"] ≈ 233.24 atol=1 - - - #also test CO2 breakeven cost - inputs["PV"]["min_kw"] = results["PV"]["size_kw"] - inputs["PV"]["existing_kw"] - inputs["PV"]["max_kw"] = results["PV"]["size_kw"] - inputs["PV"]["existing_kw"] - inputs["ElectricStorage"]["min_kw"] = results["ElectricStorage"]["size_kw"] - inputs["ElectricStorage"]["max_kw"] = results["ElectricStorage"]["size_kw"] - inputs["ElectricStorage"]["min_kwh"] = results["ElectricStorage"]["size_kwh"] - inputs["ElectricStorage"]["max_kwh"] = results["ElectricStorage"]["size_kwh"] - inputs["Financial"]["CO2_cost_per_tonne"] = results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] - inputs["Settings"]["include_climate_in_objective"] = true - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - results = run_reopt([m1, m2], inputs) - @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] ≈ inputs["Financial"]["CO2_cost_per_tonne"] atol=1e-1 - elseif i == 3 - @test results["PV"]["size_kw"] ≈ 20.0 atol=1e-1 - @test !haskey(results, "Wind") - @test !haskey(results, "ElectricStorage") - @test !haskey(results, "Generator") - @test results["CHP"]["size_kw"] ≈ 200.0 atol=1e-1 - @test results["AbsorptionChiller"]["size_ton"] ≈ 400.0 atol=1e-1 - @test results["HotThermalStorage"]["size_gal"] ≈ 50000 atol=1e1 - @test results["ColdThermalStorage"]["size_gal"] ≈ 30000 atol=1e1 - yr1_nat_gas_mmbtu = results["ExistingBoiler"]["annual_fuel_consumption_mmbtu"] + results["CHP"]["annual_fuel_consumption_mmbtu"] - nat_gas_emissions_lb_per_mmbtu = Dict("CO2"=>117.03, "NOx"=>0.09139, "SO2"=>0.000578592, "PM25"=>0.007328833) - TONNE_PER_LB = 1/2204.62 - @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] ≈ nat_gas_emissions_lb_per_mmbtu["CO2"] * yr1_nat_gas_mmbtu * TONNE_PER_LB atol=1 - @test results["Site"]["annual_emissions_from_fuelburn_tonnes_NOx"] ≈ nat_gas_emissions_lb_per_mmbtu["NOx"] * yr1_nat_gas_mmbtu * TONNE_PER_LB atol=1e-2 - @test results["Site"]["annual_emissions_from_fuelburn_tonnes_SO2"] ≈ nat_gas_emissions_lb_per_mmbtu["SO2"] * yr1_nat_gas_mmbtu * TONNE_PER_LB atol=1e-2 - @test results["Site"]["annual_emissions_from_fuelburn_tonnes_PM25"] ≈ nat_gas_emissions_lb_per_mmbtu["PM25"] * yr1_nat_gas_mmbtu * TONNE_PER_LB atol=1e-2 - @test results["Site"]["lifecycle_emissions_tonnes_CO2"] ≈ results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2"] + results["ElectricUtility"]["lifecycle_emissions_tonnes_CO2"] atol=1 - @test results["Site"]["lifecycle_emissions_tonnes_NOx"] ≈ results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_NOx"] + results["ElectricUtility"]["lifecycle_emissions_tonnes_NOx"] atol=0.1 - @test results["Site"]["lifecycle_emissions_tonnes_SO2"] ≈ results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_SO2"] + results["ElectricUtility"]["lifecycle_emissions_tonnes_SO2"] atol=1e-2 - @test results["Site"]["lifecycle_emissions_tonnes_PM25"] ≈ results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_PM25"] + results["ElectricUtility"]["lifecycle_emissions_tonnes_PM25"] atol=1.5e-2 - @test results["Site"]["annual_renewable_electricity_kwh"] ≈ results["PV"]["annual_energy_produced_kwh"] + inputs["CHP"]["fuel_renewable_energy_fraction"] * results["CHP"]["annual_electric_production_kwh"] atol=1 - @test results["Site"]["renewable_electricity_fraction"] ≈ results["Site"]["annual_renewable_electricity_kwh"] / results["ElectricLoad"]["annual_calculated_kwh"] atol=1e-6#0.044285 atol=1e-4 - KWH_PER_MMBTU = 293.07107 - annual_RE_kwh = inputs["CHP"]["fuel_renewable_energy_fraction"] * results["CHP"]["annual_thermal_production_mmbtu"] * KWH_PER_MMBTU + results["Site"]["annual_renewable_electricity_kwh"] - annual_heat_kwh = (results["CHP"]["annual_thermal_production_mmbtu"] + results["ExistingBoiler"]["annual_thermal_production_mmbtu"]) * KWH_PER_MMBTU - @test results["Site"]["total_renewable_energy_fraction"] ≈ annual_RE_kwh / (annual_heat_kwh + results["ElectricLoad"]["annual_calculated_kwh"]) atol=1e-6 - end + @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] ≈ inputs["Financial"]["CO2_cost_per_tonne"] atol=1e-1 + elseif i == 3 + @test results["PV"]["size_kw"] ≈ 20.0 atol=1e-1 + @test !haskey(results, "Wind") + @test !haskey(results, "ElectricStorage") + @test !haskey(results, "Generator") + @test results["CHP"]["size_kw"] ≈ 200.0 atol=1e-1 + @test results["AbsorptionChiller"]["size_ton"] ≈ 400.0 atol=1e-1 + @test results["HotThermalStorage"]["size_gal"] ≈ 50000 atol=1e1 + @test results["ColdThermalStorage"]["size_gal"] ≈ 30000 atol=1e1 + yr1_nat_gas_mmbtu = results["ExistingBoiler"]["annual_fuel_consumption_mmbtu"] + results["CHP"]["annual_fuel_consumption_mmbtu"] + nat_gas_emissions_lb_per_mmbtu = Dict("CO2"=>117.03, "NOx"=>0.09139, "SO2"=>0.000578592, "PM25"=>0.007328833) + TONNE_PER_LB = 1/2204.62 + @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] ≈ nat_gas_emissions_lb_per_mmbtu["CO2"] * yr1_nat_gas_mmbtu * TONNE_PER_LB atol=1 + @test results["Site"]["annual_emissions_from_fuelburn_tonnes_NOx"] ≈ nat_gas_emissions_lb_per_mmbtu["NOx"] * yr1_nat_gas_mmbtu * TONNE_PER_LB atol=1e-2 + @test results["Site"]["annual_emissions_from_fuelburn_tonnes_SO2"] ≈ nat_gas_emissions_lb_per_mmbtu["SO2"] * yr1_nat_gas_mmbtu * TONNE_PER_LB atol=1e-2 + @test results["Site"]["annual_emissions_from_fuelburn_tonnes_PM25"] ≈ nat_gas_emissions_lb_per_mmbtu["PM25"] * yr1_nat_gas_mmbtu * TONNE_PER_LB atol=1e-2 + @test results["Site"]["lifecycle_emissions_tonnes_CO2"] ≈ results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2"] + results["ElectricUtility"]["lifecycle_emissions_tonnes_CO2"] atol=1 + @test results["Site"]["lifecycle_emissions_tonnes_NOx"] ≈ results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_NOx"] + results["ElectricUtility"]["lifecycle_emissions_tonnes_NOx"] atol=0.1 + @test results["Site"]["lifecycle_emissions_tonnes_SO2"] ≈ results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_SO2"] + results["ElectricUtility"]["lifecycle_emissions_tonnes_SO2"] atol=1e-2 + @test results["Site"]["lifecycle_emissions_tonnes_PM25"] ≈ results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_PM25"] + results["ElectricUtility"]["lifecycle_emissions_tonnes_PM25"] atol=1.5e-2 + @test results["Site"]["annual_renewable_electricity_kwh"] ≈ results["PV"]["annual_energy_produced_kwh"] + inputs["CHP"]["fuel_renewable_energy_fraction"] * results["CHP"]["annual_electric_production_kwh"] atol=1 + @test results["Site"]["renewable_electricity_fraction"] ≈ results["Site"]["annual_renewable_electricity_kwh"] / results["ElectricLoad"]["annual_calculated_kwh"] atol=1e-6#0.044285 atol=1e-4 + KWH_PER_MMBTU = 293.07107 + annual_RE_kwh = inputs["CHP"]["fuel_renewable_energy_fraction"] * results["CHP"]["annual_thermal_production_mmbtu"] * KWH_PER_MMBTU + results["Site"]["annual_renewable_electricity_kwh"] + annual_heat_kwh = (results["CHP"]["annual_thermal_production_mmbtu"] + results["ExistingBoiler"]["annual_thermal_production_mmbtu"]) * KWH_PER_MMBTU + @test results["Site"]["total_renewable_energy_fraction"] ≈ annual_RE_kwh / (annual_heat_kwh + results["ElectricLoad"]["annual_calculated_kwh"]) atol=1e-6 end end + end - @testset "Back pressure steam turbine" begin - """ - Validation to ensure that: - 1) ExistingBoiler provides the thermal energy (steam) to a backpressure SteamTurbine for CHP application - 2) SteamTurbine serves the heating load with the condensing steam + @testset "Back pressure steam turbine" begin + """ + Validation to ensure that: + 1) ExistingBoiler provides the thermal energy (steam) to a backpressure SteamTurbine for CHP application + 2) SteamTurbine serves the heating load with the condensing steam - """ - # Setup inputs, make heating load large to entice SteamTurbine - input_data = JSON.parsefile("scenarios/backpressure_steamturbine_inputs.json") - latitude = input_data["Site"]["latitude"] - longitude = input_data["Site"]["longitude"] - building = "Hospital" - elec_load_multiplier = 5.0 - heat_load_multiplier = 100.0 - input_data["ElectricLoad"]["doe_reference_name"] = building - input_data["SpaceHeatingLoad"]["doe_reference_name"] = building - input_data["DomesticHotWaterLoad"]["doe_reference_name"] = building - elec_load = REopt.ElectricLoad(latitude=latitude, longitude=longitude, doe_reference_name=building) - input_data["ElectricLoad"]["annual_kwh"] = elec_load_multiplier * sum(elec_load.loads_kw) - space_load = REopt.SpaceHeatingLoad(latitude=latitude, longitude=longitude, doe_reference_name=building, existing_boiler_efficiency=input_data["ExistingBoiler"]["efficiency"]) - input_data["SpaceHeatingLoad"]["annual_mmbtu"] = heat_load_multiplier * space_load.annual_mmbtu / input_data["ExistingBoiler"]["efficiency"] - dhw_load = REopt.DomesticHotWaterLoad(latitude=latitude, longitude=longitude, doe_reference_name=building, existing_boiler_efficiency=input_data["ExistingBoiler"]["efficiency"]) - input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = heat_load_multiplier * dhw_load.annual_mmbtu / input_data["ExistingBoiler"]["efficiency"] - s = Scenario(input_data) - inputs = REoptInputs(s) - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt([m1,m2], inputs) - - # The expected values below were directly copied from the REopt_API V2 expected values - @test results["Financial"]["lcc"] ≈ 189359280.0 rtol=0.001 - @test results["Financial"]["npv"] ≈ 8085233.0 rtol=0.01 - @test results["SteamTurbine"]["size_kw"] ≈ 2616.418 atol=1.0 - @test results["SteamTurbine"]["annual_thermal_consumption_mmbtu"] ≈ 1000557.6 rtol=0.001 - @test results["SteamTurbine"]["annual_electric_production_kwh"] ≈ 18970374.6 rtol=0.001 - @test results["SteamTurbine"]["annual_thermal_production_mmbtu"] ≈ 924045.1 rtol=0.001 - - # BAU boiler loads - load_boiler_fuel = (s.space_heating_load.loads_kw + s.dhw_load.loads_kw) ./ REopt.KWH_PER_MMBTU ./ s.existing_boiler.efficiency - load_boiler_thermal = load_boiler_fuel * s.existing_boiler.efficiency - - # ExistingBoiler and SteamTurbine production - boiler_to_load = results["ExistingBoiler"]["thermal_to_load_series_mmbtu_per_hour"] - boiler_to_st = results["ExistingBoiler"]["thermal_to_steamturbine_series_mmbtu_per_hour"] - boiler_total = boiler_to_load + boiler_to_st - st_to_load = results["SteamTurbine"]["thermal_to_load_series_mmbtu_per_hour"] - - # Fuel/thermal **consumption** - boiler_fuel = results["ExistingBoiler"]["fuel_consumption_series_mmbtu_per_hour"] - steamturbine_thermal_in = results["SteamTurbine"]["thermal_consumption_series_mmbtu_per_hour"] - - # Check that all thermal supply to load meets the BAU load - thermal_to_load = sum(boiler_to_load) + sum(st_to_load) - @test thermal_to_load ≈ sum(load_boiler_thermal) atol=1.0 - - # Check the net electric efficiency of Boiler->SteamTurbine (electric out/fuel in) with the expected value from the Fact Sheet - steamturbine_electric = results["SteamTurbine"]["electric_production_series_kw"] - net_electric_efficiency = sum(steamturbine_electric) / (sum(boiler_fuel) * REopt.KWH_PER_MMBTU) - @test net_electric_efficiency ≈ 0.052 atol=0.005 - - # Check that the max production of the boiler is still less than peak heating load times thermal factor - factor = input_data["ExistingBoiler"]["max_thermal_factor_on_peak_load"] - boiler_capacity = maximum(load_boiler_thermal) * factor - @test maximum(boiler_total) <= boiler_capacity - end + """ + # Setup inputs, make heating load large to entice SteamTurbine + input_data = JSON.parsefile("scenarios/backpressure_steamturbine_inputs.json") + latitude = input_data["Site"]["latitude"] + longitude = input_data["Site"]["longitude"] + building = "Hospital" + elec_load_multiplier = 5.0 + heat_load_multiplier = 100.0 + input_data["ElectricLoad"]["doe_reference_name"] = building + input_data["SpaceHeatingLoad"]["doe_reference_name"] = building + input_data["DomesticHotWaterLoad"]["doe_reference_name"] = building + elec_load = REopt.ElectricLoad(latitude=latitude, longitude=longitude, doe_reference_name=building) + input_data["ElectricLoad"]["annual_kwh"] = elec_load_multiplier * sum(elec_load.loads_kw) + space_load = REopt.SpaceHeatingLoad(latitude=latitude, longitude=longitude, doe_reference_name=building, existing_boiler_efficiency=input_data["ExistingBoiler"]["efficiency"]) + input_data["SpaceHeatingLoad"]["annual_mmbtu"] = heat_load_multiplier * space_load.annual_mmbtu / input_data["ExistingBoiler"]["efficiency"] + dhw_load = REopt.DomesticHotWaterLoad(latitude=latitude, longitude=longitude, doe_reference_name=building, existing_boiler_efficiency=input_data["ExistingBoiler"]["efficiency"]) + input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = heat_load_multiplier * dhw_load.annual_mmbtu / input_data["ExistingBoiler"]["efficiency"] + s = Scenario(input_data) + inputs = REoptInputs(s) + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt([m1,m2], inputs) + + # The expected values below were directly copied from the REopt_API V2 expected values + @test results["Financial"]["lcc"] ≈ 189359280.0 rtol=0.001 + @test results["Financial"]["npv"] ≈ 8085233.0 rtol=0.01 + @test results["SteamTurbine"]["size_kw"] ≈ 2616.418 atol=1.0 + @test results["SteamTurbine"]["annual_thermal_consumption_mmbtu"] ≈ 1000557.6 rtol=0.001 + @test results["SteamTurbine"]["annual_electric_production_kwh"] ≈ 18970374.6 rtol=0.001 + @test results["SteamTurbine"]["annual_thermal_production_mmbtu"] ≈ 924045.1 rtol=0.001 + + # BAU boiler loads + load_boiler_fuel = (s.space_heating_load.loads_kw + s.dhw_load.loads_kw) ./ REopt.KWH_PER_MMBTU ./ s.existing_boiler.efficiency + load_boiler_thermal = load_boiler_fuel * s.existing_boiler.efficiency + + # ExistingBoiler and SteamTurbine production + boiler_to_load = results["ExistingBoiler"]["thermal_to_load_series_mmbtu_per_hour"] + boiler_to_st = results["ExistingBoiler"]["thermal_to_steamturbine_series_mmbtu_per_hour"] + boiler_total = boiler_to_load + boiler_to_st + st_to_load = results["SteamTurbine"]["thermal_to_load_series_mmbtu_per_hour"] + + # Fuel/thermal **consumption** + boiler_fuel = results["ExistingBoiler"]["fuel_consumption_series_mmbtu_per_hour"] + steamturbine_thermal_in = results["SteamTurbine"]["thermal_consumption_series_mmbtu_per_hour"] + + # Check that all thermal supply to load meets the BAU load + thermal_to_load = sum(boiler_to_load) + sum(st_to_load) + @test thermal_to_load ≈ sum(load_boiler_thermal) atol=1.0 + + # Check the net electric efficiency of Boiler->SteamTurbine (electric out/fuel in) with the expected value from the Fact Sheet + steamturbine_electric = results["SteamTurbine"]["electric_production_series_kw"] + net_electric_efficiency = sum(steamturbine_electric) / (sum(boiler_fuel) * REopt.KWH_PER_MMBTU) + @test net_electric_efficiency ≈ 0.052 atol=0.005 + + # Check that the max production of the boiler is still less than peak heating load times thermal factor + factor = input_data["ExistingBoiler"]["max_thermal_factor_on_peak_load"] + boiler_capacity = maximum(load_boiler_thermal) * factor + @test maximum(boiler_total) <= boiler_capacity + end - @testset "All heating supply/demand/storage energy balance" begin - """ - Validation to ensure that: - 1) Heat balance is correct with SteamTurbine (backpressure), CHP, HotTES, and AbsorptionChiller included - 2) The sum of a all thermal from techs supplying SteamTurbine is equal to SteamTurbine thermal consumption - 3) Techs are not supplying SteamTurbine with thermal if can_supply_steam_turbine = False - - :return: - """ - - # Start with steam turbine inputs, but adding a bunch below - input_data = JSON.parsefile("scenarios/backpressure_steamturbine_inputs.json") - input_data["ElectricLoad"]["doe_reference_name"] = "Hospital" - # Add SpaceHeatingLoad building for heating loads, ignore DomesticHotWaterLoad for simplicity of energy balance checks - input_data["SpaceHeatingLoad"]["doe_reference_name"] = "Hospital" - delete!(input_data, "DomesticHotWaterLoad") - - # Fix size of SteamTurbine, even if smaller than practical, because we're just looking at energy balances - input_data["SteamTurbine"]["min_kw"] = 30.0 - input_data["SteamTurbine"]["max_kw"] = 30.0 - - # Add CHP - input_data["CHP"] = Dict{Any, Any}([ - ("prime_mover", "recip_engine"), - ("size_class", 4), - ("min_kw", 250.0), - ("min_allowable_kw", 0.0), - ("max_kw", 250.0), - ("can_supply_steam_turbine", false), - ("fuel_cost_per_mmbtu", 8.0), - ("cooling_thermal_factor", 1.0) + @testset "All heating supply/demand/storage energy balance" begin + """ + Validation to ensure that: + 1) Heat balance is correct with SteamTurbine (backpressure), CHP, HotTES, and AbsorptionChiller included + 2) The sum of a all thermal from techs supplying SteamTurbine is equal to SteamTurbine thermal consumption + 3) Techs are not supplying SteamTurbine with thermal if can_supply_steam_turbine = False + + :return: + """ + + # Start with steam turbine inputs, but adding a bunch below + input_data = JSON.parsefile("scenarios/backpressure_steamturbine_inputs.json") + input_data["ElectricLoad"]["doe_reference_name"] = "Hospital" + # Add SpaceHeatingLoad building for heating loads, ignore DomesticHotWaterLoad for simplicity of energy balance checks + input_data["SpaceHeatingLoad"]["doe_reference_name"] = "Hospital" + delete!(input_data, "DomesticHotWaterLoad") + + # Fix size of SteamTurbine, even if smaller than practical, because we're just looking at energy balances + input_data["SteamTurbine"]["min_kw"] = 30.0 + input_data["SteamTurbine"]["max_kw"] = 30.0 + + # Add CHP + input_data["CHP"] = Dict{Any, Any}([ + ("prime_mover", "recip_engine"), + ("size_class", 4), + ("min_kw", 250.0), + ("min_allowable_kw", 0.0), + ("max_kw", 250.0), + ("can_supply_steam_turbine", false), + ("fuel_cost_per_mmbtu", 8.0), + ("cooling_thermal_factor", 1.0) + ]) + + input_data["Financial"]["chp_fuel_cost_escalation_rate_fraction"] = 0.034 + + # Add CoolingLoad and AbsorptionChiller so we can test the energy balance on AbsorptionChiller too (thermal consumption) + input_data["CoolingLoad"] = Dict{Any, Any}("doe_reference_name" => "Hospital") + input_data["AbsorptionChiller"] = Dict{Any, Any}([ + ("min_ton", 600.0), + ("max_ton", 600.0), + ("cop_thermal", 0.7), + ("installed_cost_per_ton", 500.0), + ("om_cost_per_ton", 0.5) + ]) + + # Add Hot TES + input_data["HotThermalStorage"] = Dict{Any, Any}([ + ("min_gal", 50000.0), + ("max_gal", 50000.0) ]) - - input_data["Financial"]["chp_fuel_cost_escalation_rate_fraction"] = 0.034 - - # Add CoolingLoad and AbsorptionChiller so we can test the energy balance on AbsorptionChiller too (thermal consumption) - input_data["CoolingLoad"] = Dict{Any, Any}("doe_reference_name" => "Hospital") - input_data["AbsorptionChiller"] = Dict{Any, Any}([ - ("min_ton", 600.0), - ("max_ton", 600.0), - ("cop_thermal", 0.7), - ("installed_cost_per_ton", 500.0), - ("om_cost_per_ton", 0.5) - ]) - - # Add Hot TES - input_data["HotThermalStorage"] = Dict{Any, Any}([ - ("min_gal", 50000.0), - ("max_gal", 50000.0) - ]) - - s = Scenario(input_data) - inputs = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - results = run_reopt(m, inputs) - - thermal_techs = ["ExistingBoiler", "CHP", "SteamTurbine"] - thermal_loads = ["load", "storage", "steamturbine", "waste"] # We don't track AbsorptionChiller thermal consumption by tech - tech_to_thermal_load = Dict{Any, Any}() - for tech in thermal_techs - tech_to_thermal_load[tech] = Dict{Any, Any}() - for load in thermal_loads - if (tech == "SteamTurbine" && load == "steamturbine") || (load == "waste" && tech != "CHP") - tech_to_thermal_load[tech][load] = [0.0] * 8760 + + s = Scenario(input_data) + inputs = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + results = run_reopt(m, inputs) + + thermal_techs = ["ExistingBoiler", "CHP", "SteamTurbine"] + thermal_loads = ["load", "storage", "steamturbine", "waste"] # We don't track AbsorptionChiller thermal consumption by tech + tech_to_thermal_load = Dict{Any, Any}() + for tech in thermal_techs + tech_to_thermal_load[tech] = Dict{Any, Any}() + for load in thermal_loads + if (tech == "SteamTurbine" && load == "steamturbine") || (load == "waste" && tech != "CHP") + tech_to_thermal_load[tech][load] = [0.0] * 8760 + else + if load == "waste" + tech_to_thermal_load[tech][load] = results[tech]["thermal_curtailed_series_mmbtu_per_hour"] else - if load == "waste" - tech_to_thermal_load[tech][load] = results[tech]["thermal_curtailed_series_mmbtu_per_hour"] - else - tech_to_thermal_load[tech][load] = results[tech]["thermal_to_"*load*"_series_mmbtu_per_hour"] - end + tech_to_thermal_load[tech][load] = results[tech]["thermal_to_"*load*"_series_mmbtu_per_hour"] end end end - # Hot TES is the other thermal supply - hottes_to_load = results["HotThermalStorage"]["storage_to_load_series_mmbtu_per_hour"] - - # BAU boiler loads - load_boiler_fuel = s.space_heating_load.loads_kw / input_data["ExistingBoiler"]["efficiency"] ./ REopt.KWH_PER_MMBTU - load_boiler_thermal = load_boiler_fuel .* input_data["ExistingBoiler"]["efficiency"] - - # Fuel/thermal **consumption** - boiler_fuel = results["ExistingBoiler"]["fuel_consumption_series_mmbtu_per_hour"] - chp_fuel_total = results["CHP"]["annual_fuel_consumption_mmbtu"] - steamturbine_thermal_in = results["SteamTurbine"]["thermal_consumption_series_mmbtu_per_hour"] - absorptionchiller_thermal_in = results["AbsorptionChiller"]["thermal_consumption_series_mmbtu_per_hour"] - - # Check that all thermal supply to load meets the BAU load plus AbsorptionChiller load which is not explicitly tracked - alltechs_thermal_to_load_total = sum([sum(tech_to_thermal_load[tech]["load"]) for tech in thermal_techs]) + sum(hottes_to_load) - thermal_load_total = sum(load_boiler_thermal) + sum(absorptionchiller_thermal_in) - @test alltechs_thermal_to_load_total ≈ thermal_load_total rtol=1e-5 - - # Check that all thermal to steam turbine is equal to steam turbine thermal consumption - alltechs_thermal_to_steamturbine_total = sum([sum(tech_to_thermal_load[tech]["steamturbine"]) for tech in ["ExistingBoiler", "CHP"]]) - @test alltechs_thermal_to_steamturbine_total ≈ sum(steamturbine_thermal_in) atol=3 - - # Check that "thermal_to_steamturbine" is zero for each tech which has input of can_supply_steam_turbine as False - for tech in ["ExistingBoiler", "CHP"] - if !(tech in inputs.techs.can_supply_steam_turbine) - @test sum(tech_to_thermal_load[tech]["steamturbine"]) == 0.0 - end - end end - - @testset "Electric Heater" begin - d = JSON.parsefile("./scenarios/electric_heater.json") - d["SpaceHeatingLoad"]["annual_mmbtu"] = 0.5 * 8760 - d["DomesticHotWaterLoad"]["annual_mmbtu"] = 0.5 * 8760 - s = Scenario(d) - p = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt(m, p) - - #first run: Boiler produces the required heat instead of the electric heater - electric heater should not be purchased - @test results["ElectricHeater"]["size_mmbtu_per_hour"] ≈ 0.0 atol=0.1 - @test results["ElectricHeater"]["annual_thermal_production_mmbtu"] ≈ 0.0 atol=0.1 - @test results["ElectricHeater"]["annual_electric_consumption_kwh"] ≈ 0.0 atol=0.1 - @test results["ElectricUtility"]["annual_energy_supplied_kwh"] ≈ 87600.0 atol=0.1 - - d["ExistingBoiler"]["fuel_cost_per_mmbtu"] = 100 - d["ElectricHeater"]["installed_cost_per_mmbtu_per_hour"] = 1.0 - d["ElectricTariff"]["monthly_energy_rates"] = [0,0,0,0,0,0,0,0,0,0,0,0] - s = Scenario(d) - p = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt(m, p) - - annual_thermal_prod = 0.8 * 8760 #80% efficient boiler --> 0.8 MMBTU of heat load per hour - annual_electric_heater_consumption = annual_thermal_prod * REopt.KWH_PER_MMBTU #1.0 COP - annual_energy_supplied = 87600 + annual_electric_heater_consumption - - #Second run: ElectricHeater produces the required heat with free electricity - @test results["ElectricHeater"]["size_mmbtu_per_hour"] ≈ 0.8 atol=0.1 - @test results["ElectricHeater"]["annual_thermal_production_mmbtu"] ≈ annual_thermal_prod rtol=1e-4 - @test results["ElectricHeater"]["annual_electric_consumption_kwh"] ≈ annual_electric_heater_consumption rtol=1e-4 - @test results["ElectricUtility"]["annual_energy_supplied_kwh"] ≈ annual_energy_supplied rtol=1e-4 - + # Hot TES is the other thermal supply + hottes_to_load = results["HotThermalStorage"]["storage_to_load_series_mmbtu_per_hour"] + + # BAU boiler loads + load_boiler_fuel = s.space_heating_load.loads_kw / input_data["ExistingBoiler"]["efficiency"] ./ REopt.KWH_PER_MMBTU + load_boiler_thermal = load_boiler_fuel .* input_data["ExistingBoiler"]["efficiency"] + + # Fuel/thermal **consumption** + boiler_fuel = results["ExistingBoiler"]["fuel_consumption_series_mmbtu_per_hour"] + chp_fuel_total = results["CHP"]["annual_fuel_consumption_mmbtu"] + steamturbine_thermal_in = results["SteamTurbine"]["thermal_consumption_series_mmbtu_per_hour"] + absorptionchiller_thermal_in = results["AbsorptionChiller"]["thermal_consumption_series_mmbtu_per_hour"] + + # Check that all thermal supply to load meets the BAU load plus AbsorptionChiller load which is not explicitly tracked + alltechs_thermal_to_load_total = sum([sum(tech_to_thermal_load[tech]["load"]) for tech in thermal_techs]) + sum(hottes_to_load) + thermal_load_total = sum(load_boiler_thermal) + sum(absorptionchiller_thermal_in) + @test alltechs_thermal_to_load_total ≈ thermal_load_total rtol=1e-5 + + # Check that all thermal to steam turbine is equal to steam turbine thermal consumption + alltechs_thermal_to_steamturbine_total = sum([sum(tech_to_thermal_load[tech]["steamturbine"]) for tech in ["ExistingBoiler", "CHP"]]) + @test alltechs_thermal_to_steamturbine_total ≈ sum(steamturbine_thermal_in) atol=3 + + # Check that "thermal_to_steamturbine" is zero for each tech which has input of can_supply_steam_turbine as False + for tech in ["ExistingBoiler", "CHP"] + if !(tech in inputs.techs.can_supply_steam_turbine) + @test sum(tech_to_thermal_load[tech]["steamturbine"]) == 0.0 + end end + end - @testset "Custom REopt logger" begin - - # Throw a handled error - d = JSON.parsefile("./scenarios/logger.json") - - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt([m1,m2], d) - @test r["status"] == "error" - @test "Messages" ∈ keys(r) - @test "errors" ∈ keys(r["Messages"]) - @test "warnings" ∈ keys(r["Messages"]) - @test length(r["Messages"]["errors"]) > 0 - @test length(r["Messages"]["warnings"]) > 0 - @test r["Messages"]["has_stacktrace"] == false - - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt(m, d) - @test r["status"] == "error" - @test "Messages" ∈ keys(r) - @test "errors" ∈ keys(r["Messages"]) - @test "warnings" ∈ keys(r["Messages"]) - @test length(r["Messages"]["errors"]) > 0 - @test length(r["Messages"]["warnings"]) > 0 - - # Type is dict when errors, otherwise type REoptInputs - @test isa(REoptInputs(d), Dict) - - # Using filepath - n1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - n2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt([n1,n2], "./scenarios/logger.json") - @test r["status"] == "error" - @test "Messages" ∈ keys(r) - @test "errors" ∈ keys(r["Messages"]) - @test "warnings" ∈ keys(r["Messages"]) - @test length(r["Messages"]["errors"]) > 0 - @test length(r["Messages"]["warnings"]) > 0 - - n = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt(n, "./scenarios/logger.json") - @test r["status"] == "error" - @test "Messages" ∈ keys(r) - @test "errors" ∈ keys(r["Messages"]) - @test "warnings" ∈ keys(r["Messages"]) - @test length(r["Messages"]["errors"]) > 0 - @test length(r["Messages"]["warnings"]) > 0 - - # Throw an unhandled error: Bad URDB rate -> stack gets returned for debugging - d["ElectricLoad"]["doe_reference_name"] = "MidriseApartment" - d["ElectricTariff"]["urdb_label"] = "62c70a6c40a0c425535d387x" + @testset "Electric Heater" begin + d = JSON.parsefile("./scenarios/electric_heater.json") + d["SpaceHeatingLoad"]["annual_mmbtu"] = 0.5 * 8760 + d["DomesticHotWaterLoad"]["annual_mmbtu"] = 0.5 * 8760 + s = Scenario(d) + p = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(m, p) + + #first run: Boiler produces the required heat instead of the electric heater - electric heater should not be purchased + @test results["ElectricHeater"]["size_mmbtu_per_hour"] ≈ 0.0 atol=0.1 + @test results["ElectricHeater"]["annual_thermal_production_mmbtu"] ≈ 0.0 atol=0.1 + @test results["ElectricHeater"]["annual_electric_consumption_kwh"] ≈ 0.0 atol=0.1 + @test results["ElectricUtility"]["annual_energy_supplied_kwh"] ≈ 87600.0 atol=0.1 + + d["ExistingBoiler"]["fuel_cost_per_mmbtu"] = 100 + d["ElectricHeater"]["installed_cost_per_mmbtu_per_hour"] = 1.0 + d["ElectricTariff"]["monthly_energy_rates"] = [0,0,0,0,0,0,0,0,0,0,0,0] + s = Scenario(d) + p = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(m, p) + + annual_thermal_prod = 0.8 * 8760 #80% efficient boiler --> 0.8 MMBTU of heat load per hour + annual_electric_heater_consumption = annual_thermal_prod * REopt.KWH_PER_MMBTU #1.0 COP + annual_energy_supplied = 87600 + annual_electric_heater_consumption + + #Second run: ElectricHeater produces the required heat with free electricity + @test results["ElectricHeater"]["size_mmbtu_per_hour"] ≈ 0.8 atol=0.1 + @test results["ElectricHeater"]["annual_thermal_production_mmbtu"] ≈ annual_thermal_prod rtol=1e-4 + @test results["ElectricHeater"]["annual_electric_consumption_kwh"] ≈ annual_electric_heater_consumption rtol=1e-4 + @test results["ElectricUtility"]["annual_energy_supplied_kwh"] ≈ annual_energy_supplied rtol=1e-4 - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt([m1,m2], d) - @test r["status"] == "error" - @test "Messages" ∈ keys(r) - @test "errors" ∈ keys(r["Messages"]) - @test "warnings" ∈ keys(r["Messages"]) - @test length(r["Messages"]["errors"]) > 0 - @test length(r["Messages"]["warnings"]) > 0 + end - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt(m, d) - @test r["status"] == "error" - @test "Messages" ∈ keys(r) - @test "errors" ∈ keys(r["Messages"]) - @test "warnings" ∈ keys(r["Messages"]) - @test length(r["Messages"]["errors"]) > 0 - @test length(r["Messages"]["warnings"]) > 0 - - # Type is dict when errors, otherwise type REoptInputs - @test isa(REoptInputs(d), Dict) - - # Using filepath - n1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - n2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt([n1,n2], "./scenarios/logger.json") - @test r["status"] == "error" - @test "Messages" ∈ keys(r) - @test "errors" ∈ keys(r["Messages"]) - @test "warnings" ∈ keys(r["Messages"]) - @test length(r["Messages"]["errors"]) > 0 - @test length(r["Messages"]["warnings"]) > 0 - - n = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt(n, "./scenarios/logger.json") - @test r["status"] == "error" - @test "Messages" ∈ keys(r) - @test "errors" ∈ keys(r["Messages"]) - @test "warnings" ∈ keys(r["Messages"]) - @test length(r["Messages"]["errors"]) > 0 - @test length(r["Messages"]["warnings"]) > 0 - end + @testset "Custom REopt logger" begin + + # Throw a handled error + d = JSON.parsefile("./scenarios/logger.json") + + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt([m1,m2], d) + @test r["status"] == "error" + @test "Messages" ∈ keys(r) + @test "errors" ∈ keys(r["Messages"]) + @test "warnings" ∈ keys(r["Messages"]) + @test length(r["Messages"]["errors"]) > 0 + @test length(r["Messages"]["warnings"]) > 0 + @test r["Messages"]["has_stacktrace"] == false + + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt(m, d) + @test r["status"] == "error" + @test "Messages" ∈ keys(r) + @test "errors" ∈ keys(r["Messages"]) + @test "warnings" ∈ keys(r["Messages"]) + @test length(r["Messages"]["errors"]) > 0 + @test length(r["Messages"]["warnings"]) > 0 + + # Type is dict when errors, otherwise type REoptInputs + @test isa(REoptInputs(d), Dict) + + # Using filepath + n1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + n2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt([n1,n2], "./scenarios/logger.json") + @test r["status"] == "error" + @test "Messages" ∈ keys(r) + @test "errors" ∈ keys(r["Messages"]) + @test "warnings" ∈ keys(r["Messages"]) + @test length(r["Messages"]["errors"]) > 0 + @test length(r["Messages"]["warnings"]) > 0 + + n = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt(n, "./scenarios/logger.json") + @test r["status"] == "error" + @test "Messages" ∈ keys(r) + @test "errors" ∈ keys(r["Messages"]) + @test "warnings" ∈ keys(r["Messages"]) + @test length(r["Messages"]["errors"]) > 0 + @test length(r["Messages"]["warnings"]) > 0 + + # Throw an unhandled error: Bad URDB rate -> stack gets returned for debugging + d["ElectricLoad"]["doe_reference_name"] = "MidriseApartment" + d["ElectricTariff"]["urdb_label"] = "62c70a6c40a0c425535d387x" + + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt([m1,m2], d) + @test r["status"] == "error" + @test "Messages" ∈ keys(r) + @test "errors" ∈ keys(r["Messages"]) + @test "warnings" ∈ keys(r["Messages"]) + @test length(r["Messages"]["errors"]) > 0 + @test length(r["Messages"]["warnings"]) > 0 + + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt(m, d) + @test r["status"] == "error" + @test "Messages" ∈ keys(r) + @test "errors" ∈ keys(r["Messages"]) + @test "warnings" ∈ keys(r["Messages"]) + @test length(r["Messages"]["errors"]) > 0 + @test length(r["Messages"]["warnings"]) > 0 + + # Type is dict when errors, otherwise type REoptInputs + @test isa(REoptInputs(d), Dict) + + # Using filepath + n1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + n2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt([n1,n2], "./scenarios/logger.json") + @test r["status"] == "error" + @test "Messages" ∈ keys(r) + @test "errors" ∈ keys(r["Messages"]) + @test "warnings" ∈ keys(r["Messages"]) + @test length(r["Messages"]["errors"]) > 0 + @test length(r["Messages"]["warnings"]) > 0 + + n = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt(n, "./scenarios/logger.json") + @test r["status"] == "error" + @test "Messages" ∈ keys(r) + @test "errors" ∈ keys(r["Messages"]) + @test "warnings" ∈ keys(r["Messages"]) + @test length(r["Messages"]["errors"]) > 0 + @test length(r["Messages"]["warnings"]) > 0 end end From 1b70783b6f7f739e4c5bd1b3c1243a4d8be5dc8b Mon Sep 17 00:00:00 2001 From: Zolan Date: Wed, 24 Apr 2024 14:57:17 -0600 Subject: [PATCH 07/13] Revert "rm "Imported Xpress Test Suite" testset marker (but keep tests)" This reverts commit b703384181e0a6e385b68b0e0661903275bb911d. --- test/runtests.jl | 3478 +++++++++++++++++++++++----------------------- 1 file changed, 1740 insertions(+), 1738 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index af4570319..f6494a55d 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -520,1889 +520,1891 @@ else # run HiGHS tests @test reliability_results["mean_cumulative_survival_final_time_step"] ≈ 0.817586 atol=0.001 end - @testset "Heating loads and addressable load fraction" begin - # Default LargeOffice CRB with SpaceHeatingLoad and DomesticHotWaterLoad are served by ExistingBoiler - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt(m, "./scenarios/thermal_load.json") - - @test round(results["ExistingBoiler"]["annual_fuel_consumption_mmbtu"], digits=0) ≈ 2904 - - # Hourly fuel load inputs with addressable_load_fraction are served as expected - data = JSON.parsefile("./scenarios/thermal_load.json") - data["DomesticHotWaterLoad"]["fuel_loads_mmbtu_per_hour"] = repeat([0.5], 8760) - data["DomesticHotWaterLoad"]["addressable_load_fraction"] = 0.6 - data["SpaceHeatingLoad"]["fuel_loads_mmbtu_per_hour"] = repeat([0.5], 8760) - data["SpaceHeatingLoad"]["addressable_load_fraction"] = 0.8 - s = Scenario(data) - inputs = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt(m, inputs) - @test round(results["ExistingBoiler"]["annual_fuel_consumption_mmbtu"], digits=0) ≈ 8760 * (0.5 * 0.6 + 0.5 * 0.8) + @testset "Imported Xpress Test Suite" begin + @testset "Heating loads and addressable load fraction" begin + # Default LargeOffice CRB with SpaceHeatingLoad and DomesticHotWaterLoad are served by ExistingBoiler + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(m, "./scenarios/thermal_load.json") - # Monthly fuel load input with addressable_load_fraction is processed to expected thermal load - data = JSON.parsefile("./scenarios/thermal_load.json") - data["DomesticHotWaterLoad"]["monthly_mmbtu"] = repeat([100], 12) - data["DomesticHotWaterLoad"]["addressable_load_fraction"] = repeat([0.6], 12) - data["SpaceHeatingLoad"]["monthly_mmbtu"] = repeat([200], 12) - data["SpaceHeatingLoad"]["addressable_load_fraction"] = repeat([0.8], 12) - - s = Scenario(data) - inputs = REoptInputs(s) - - dhw_thermal_load_expected = sum(data["DomesticHotWaterLoad"]["monthly_mmbtu"] .* data["DomesticHotWaterLoad"]["addressable_load_fraction"]) .* s.existing_boiler.efficiency - space_thermal_load_expected = sum(data["SpaceHeatingLoad"]["monthly_mmbtu"] .* data["SpaceHeatingLoad"]["addressable_load_fraction"]) .* s.existing_boiler.efficiency - @test round(sum(s.dhw_load.loads_kw) / REopt.KWH_PER_MMBTU) ≈ sum(dhw_thermal_load_expected) - @test round(sum(s.space_heating_load.loads_kw) / REopt.KWH_PER_MMBTU) ≈ sum(space_thermal_load_expected) - end - - @testset "CHP" begin - @testset "CHP Sizing" begin - # Sizing CHP with non-constant efficiency, no cost curve, no unavailability_periods - data_sizing = JSON.parsefile("./scenarios/chp_sizing.json") - s = Scenario(data_sizing) + @test round(results["ExistingBoiler"]["annual_fuel_consumption_mmbtu"], digits=0) ≈ 2904 + + # Hourly fuel load inputs with addressable_load_fraction are served as expected + data = JSON.parsefile("./scenarios/thermal_load.json") + data["DomesticHotWaterLoad"]["fuel_loads_mmbtu_per_hour"] = repeat([0.5], 8760) + data["DomesticHotWaterLoad"]["addressable_load_fraction"] = 0.6 + data["SpaceHeatingLoad"]["fuel_loads_mmbtu_per_hour"] = repeat([0.5], 8760) + data["SpaceHeatingLoad"]["addressable_load_fraction"] = 0.8 + s = Scenario(data) inputs = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) results = run_reopt(m, inputs) + @test round(results["ExistingBoiler"]["annual_fuel_consumption_mmbtu"], digits=0) ≈ 8760 * (0.5 * 0.6 + 0.5 * 0.8) + + # Monthly fuel load input with addressable_load_fraction is processed to expected thermal load + data = JSON.parsefile("./scenarios/thermal_load.json") + data["DomesticHotWaterLoad"]["monthly_mmbtu"] = repeat([100], 12) + data["DomesticHotWaterLoad"]["addressable_load_fraction"] = repeat([0.6], 12) + data["SpaceHeatingLoad"]["monthly_mmbtu"] = repeat([200], 12) + data["SpaceHeatingLoad"]["addressable_load_fraction"] = repeat([0.8], 12) - @test round(results["CHP"]["size_kw"], digits=0) ≈ 342.0 atol=1.0 - @test round(results["Financial"]["lcc"], digits=0) ≈ 1.3476e7 atol=1.0e7 - end - - @testset "CHP Cost Curve and Min Allowable Size" begin - # Fixed size CHP with cost curve, no unavailability_periods - data_cost_curve = JSON.parsefile("./scenarios/chp_sizing.json") - data_cost_curve["CHP"] = Dict() - data_cost_curve["CHP"]["prime_mover"] = "recip_engine" - data_cost_curve["CHP"]["size_class"] = 1 - data_cost_curve["CHP"]["fuel_cost_per_mmbtu"] = 8.0 - data_cost_curve["CHP"]["min_kw"] = 0 - data_cost_curve["CHP"]["min_allowable_kw"] = 555.5 - data_cost_curve["CHP"]["max_kw"] = 555.51 - data_cost_curve["CHP"]["installed_cost_per_kw"] = 1800.0 - data_cost_curve["CHP"]["installed_cost_per_kw"] = [2300.0, 1800.0, 1500.0] - data_cost_curve["CHP"]["tech_sizes_for_cost_curve"] = [100.0, 300.0, 1140.0] - - data_cost_curve["CHP"]["federal_itc_fraction"] = 0.1 - data_cost_curve["CHP"]["macrs_option_years"] = 0 - data_cost_curve["CHP"]["macrs_bonus_fraction"] = 0.0 - data_cost_curve["CHP"]["macrs_itc_reduction"] = 0.0 - - expected_x = data_cost_curve["CHP"]["min_allowable_kw"] - cap_cost_y = data_cost_curve["CHP"]["installed_cost_per_kw"] - cap_cost_x = data_cost_curve["CHP"]["tech_sizes_for_cost_curve"] - slope = (cap_cost_x[3] * cap_cost_y[3] - cap_cost_x[2] * cap_cost_y[2]) / (cap_cost_x[3] - cap_cost_x[2]) - init_capex_chp_expected = cap_cost_x[2] * cap_cost_y[2] + (expected_x - cap_cost_x[2]) * slope - lifecycle_capex_chp_expected = init_capex_chp_expected - - REopt.npv(data_cost_curve["Financial"]["offtaker_discount_rate_fraction"], - [0, init_capex_chp_expected * data_cost_curve["CHP"]["federal_itc_fraction"]]) - - #PV - data_cost_curve["PV"]["min_kw"] = 1500 - data_cost_curve["PV"]["max_kw"] = 1500 - data_cost_curve["PV"]["installed_cost_per_kw"] = 1600 - data_cost_curve["PV"]["federal_itc_fraction"] = 0.26 - data_cost_curve["PV"]["macrs_option_years"] = 0 - data_cost_curve["PV"]["macrs_bonus_fraction"] = 0.0 - data_cost_curve["PV"]["macrs_itc_reduction"] = 0.0 - - init_capex_pv_expected = data_cost_curve["PV"]["max_kw"] * data_cost_curve["PV"]["installed_cost_per_kw"] - lifecycle_capex_pv_expected = init_capex_pv_expected - - REopt.npv(data_cost_curve["Financial"]["offtaker_discount_rate_fraction"], - [0, init_capex_pv_expected * data_cost_curve["PV"]["federal_itc_fraction"]]) - - s = Scenario(data_cost_curve) + s = Scenario(data) inputs = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - results = run_reopt(m, inputs) - init_capex_total_expected = init_capex_chp_expected + init_capex_pv_expected - lifecycle_capex_total_expected = lifecycle_capex_chp_expected + lifecycle_capex_pv_expected + dhw_thermal_load_expected = sum(data["DomesticHotWaterLoad"]["monthly_mmbtu"] .* data["DomesticHotWaterLoad"]["addressable_load_fraction"]) .* s.existing_boiler.efficiency + space_thermal_load_expected = sum(data["SpaceHeatingLoad"]["monthly_mmbtu"] .* data["SpaceHeatingLoad"]["addressable_load_fraction"]) .* s.existing_boiler.efficiency + @test round(sum(s.dhw_load.loads_kw) / REopt.KWH_PER_MMBTU) ≈ sum(dhw_thermal_load_expected) + @test round(sum(s.space_heating_load.loads_kw) / REopt.KWH_PER_MMBTU) ≈ sum(space_thermal_load_expected) + end - init_capex_total = results["Financial"]["initial_capital_costs"] - lifecycle_capex_total = results["Financial"]["initial_capital_costs_after_incentives"] + @testset "CHP" begin + @testset "CHP Sizing" begin + # Sizing CHP with non-constant efficiency, no cost curve, no unavailability_periods + data_sizing = JSON.parsefile("./scenarios/chp_sizing.json") + s = Scenario(data_sizing) + inputs = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + results = run_reopt(m, inputs) + + @test round(results["CHP"]["size_kw"], digits=0) ≈ 342.0 atol=1.0 + @test round(results["Financial"]["lcc"], digits=0) ≈ 1.3476e7 atol=1.0e7 + end + @testset "CHP Cost Curve and Min Allowable Size" begin + # Fixed size CHP with cost curve, no unavailability_periods + data_cost_curve = JSON.parsefile("./scenarios/chp_sizing.json") + data_cost_curve["CHP"] = Dict() + data_cost_curve["CHP"]["prime_mover"] = "recip_engine" + data_cost_curve["CHP"]["size_class"] = 1 + data_cost_curve["CHP"]["fuel_cost_per_mmbtu"] = 8.0 + data_cost_curve["CHP"]["min_kw"] = 0 + data_cost_curve["CHP"]["min_allowable_kw"] = 555.5 + data_cost_curve["CHP"]["max_kw"] = 555.51 + data_cost_curve["CHP"]["installed_cost_per_kw"] = 1800.0 + data_cost_curve["CHP"]["installed_cost_per_kw"] = [2300.0, 1800.0, 1500.0] + data_cost_curve["CHP"]["tech_sizes_for_cost_curve"] = [100.0, 300.0, 1140.0] + + data_cost_curve["CHP"]["federal_itc_fraction"] = 0.1 + data_cost_curve["CHP"]["macrs_option_years"] = 0 + data_cost_curve["CHP"]["macrs_bonus_fraction"] = 0.0 + data_cost_curve["CHP"]["macrs_itc_reduction"] = 0.0 + + expected_x = data_cost_curve["CHP"]["min_allowable_kw"] + cap_cost_y = data_cost_curve["CHP"]["installed_cost_per_kw"] + cap_cost_x = data_cost_curve["CHP"]["tech_sizes_for_cost_curve"] + slope = (cap_cost_x[3] * cap_cost_y[3] - cap_cost_x[2] * cap_cost_y[2]) / (cap_cost_x[3] - cap_cost_x[2]) + init_capex_chp_expected = cap_cost_x[2] * cap_cost_y[2] + (expected_x - cap_cost_x[2]) * slope + lifecycle_capex_chp_expected = init_capex_chp_expected - + REopt.npv(data_cost_curve["Financial"]["offtaker_discount_rate_fraction"], + [0, init_capex_chp_expected * data_cost_curve["CHP"]["federal_itc_fraction"]]) + + #PV + data_cost_curve["PV"]["min_kw"] = 1500 + data_cost_curve["PV"]["max_kw"] = 1500 + data_cost_curve["PV"]["installed_cost_per_kw"] = 1600 + data_cost_curve["PV"]["federal_itc_fraction"] = 0.26 + data_cost_curve["PV"]["macrs_option_years"] = 0 + data_cost_curve["PV"]["macrs_bonus_fraction"] = 0.0 + data_cost_curve["PV"]["macrs_itc_reduction"] = 0.0 + + init_capex_pv_expected = data_cost_curve["PV"]["max_kw"] * data_cost_curve["PV"]["installed_cost_per_kw"] + lifecycle_capex_pv_expected = init_capex_pv_expected - + REopt.npv(data_cost_curve["Financial"]["offtaker_discount_rate_fraction"], + [0, init_capex_pv_expected * data_cost_curve["PV"]["federal_itc_fraction"]]) + + s = Scenario(data_cost_curve) + inputs = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + results = run_reopt(m, inputs) + + init_capex_total_expected = init_capex_chp_expected + init_capex_pv_expected + lifecycle_capex_total_expected = lifecycle_capex_chp_expected + lifecycle_capex_pv_expected + + init_capex_total = results["Financial"]["initial_capital_costs"] + lifecycle_capex_total = results["Financial"]["initial_capital_costs_after_incentives"] + + + # Check initial CapEx (pre-incentive/tax) and life cycle CapEx (post-incentive/tax) cost with expect + @test init_capex_total_expected ≈ init_capex_total atol=0.0001*init_capex_total_expected + @test lifecycle_capex_total_expected ≈ lifecycle_capex_total atol=0.0001*lifecycle_capex_total_expected + + # Test CHP.min_allowable_kw - the size would otherwise be ~100 kW less by setting min_allowable_kw to zero + @test results["CHP"]["size_kw"] ≈ data_cost_curve["CHP"]["min_allowable_kw"] atol=0.1 + end - # Check initial CapEx (pre-incentive/tax) and life cycle CapEx (post-incentive/tax) cost with expect - @test init_capex_total_expected ≈ init_capex_total atol=0.0001*init_capex_total_expected - @test lifecycle_capex_total_expected ≈ lifecycle_capex_total atol=0.0001*lifecycle_capex_total_expected + @testset "CHP Unavailability and Outage" begin + """ + Validation to ensure that: + 1) CHP meets load during outage without exporting + 2) CHP never exports if chp.can_wholesale and chp.can_net_meter inputs are False (default) + 3) CHP does not "curtail", i.e. send power to a load bank when chp.can_curtail is False (default) + 4) CHP min_turn_down_fraction is ignored during an outage + 5) Cooling tech production gets zeroed out during the outage period because we ignore the cooling load balance for outage + 6) Unavailability intervals that intersect with grid-outages get ignored + 7) Unavailability intervals that do not intersect with grid-outages result in no CHP production + """ + # Sizing CHP with non-constant efficiency, no cost curve, no unavailability_periods + data = JSON.parsefile("./scenarios/chp_unavailability_outage.json") + + # Add unavailability periods that 1) intersect (ignored) and 2) don't intersect with outage period + data["CHP"]["unavailability_periods"] = [Dict([("month", 1), ("start_week_of_month", 2), + ("start_day_of_week", 1), ("start_hour", 1), ("duration_hours", 8)]), + Dict([("month", 1), ("start_week_of_month", 2), + ("start_day_of_week", 3), ("start_hour", 9), ("duration_hours", 8)])] + + # Manually doing the math from the unavailability defined above + unavail_1_start = 24 + 1 + unavail_1_end = unavail_1_start + 8 - 1 + unavail_2_start = 24*3 + 9 + unavail_2_end = unavail_2_start + 8 - 1 + + # Specify the CHP.min_turn_down_fraction which is NOT used during an outage + data["CHP"]["min_turn_down_fraction"] = 0.5 + # Specify outage period; outage time_steps are 1-indexed + outage_start = unavail_1_start + data["ElectricUtility"]["outage_start_time_step"] = outage_start + outage_end = unavail_1_end + data["ElectricUtility"]["outage_end_time_step"] = outage_end + data["ElectricLoad"]["critical_load_fraction"] = 0.25 + + s = Scenario(data) + inputs = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + results = run_reopt(m, inputs) + + tot_elec_load = results["ElectricLoad"]["load_series_kw"] + chp_total_elec_prod = results["CHP"]["electric_production_series_kw"] + chp_to_load = results["CHP"]["electric_to_load_series_kw"] + chp_export = results["CHP"]["electric_to_grid_series_kw"] + cooling_elec_consumption = results["ExistingChiller"]["electric_consumption_series_kw"] + + # The values compared to the expected values + @test sum([(chp_to_load[i] - tot_elec_load[i]*data["ElectricLoad"]["critical_load_fraction"]) for i in outage_start:outage_end]) ≈ 0.0 atol=0.001 + critical_load = tot_elec_load[outage_start:outage_end] * data["ElectricLoad"]["critical_load_fraction"] + @test sum(chp_to_load[outage_start:outage_end]) ≈ sum(critical_load) atol=0.1 + @test sum(chp_export) == 0.0 + @test sum(chp_total_elec_prod) ≈ sum(chp_to_load) atol=1.0e-5*sum(chp_total_elec_prod) + @test sum(cooling_elec_consumption[outage_start:outage_end]) == 0.0 + @test sum(chp_total_elec_prod[unavail_2_start:unavail_2_end]) == 0.0 + end - # Test CHP.min_allowable_kw - the size would otherwise be ~100 kW less by setting min_allowable_kw to zero - @test results["CHP"]["size_kw"] ≈ data_cost_curve["CHP"]["min_allowable_kw"] atol=0.1 + @testset "CHP Supplementary firing and standby" begin + """ + Test to ensure that supplementary firing and standby charges work as intended. The thermal and + electrical loads are constant, and the CHP system size is fixed; the supplementary firing has a + similar cost to the boiler and is purcahsed and used when the boiler efficiency is set to a lower + value than that of the supplementary firing. The test also ensures that demand charges are + correctly calculated when CHP is and is not allowed to reduce demand charges. + """ + data = JSON.parsefile("./scenarios/chp_supplementary_firing.json") + data["CHP"]["supplementary_firing_capital_cost_per_kw"] = 10000 + data["ElectricLoad"]["loads_kw"] = repeat([800.0], 8760) + data["DomesticHotWaterLoad"]["fuel_loads_mmbtu_per_hour"] = repeat([6.0], 8760) + data["SpaceHeatingLoad"]["fuel_loads_mmbtu_per_hour"] = repeat([6.0], 8760) + #part 1: supplementary firing not used when less efficient than the boiler and expensive + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + s = Scenario(data) + inputs = REoptInputs(s) + results = run_reopt(m1, inputs) + @test results["CHP"]["size_kw"] == 800 + @test results["CHP"]["size_supplemental_firing_kw"] == 0 + @test results["CHP"]["annual_electric_production_kwh"] ≈ 800*8760 rtol=1e-5 + @test results["CHP"]["annual_thermal_production_mmbtu"] ≈ 800*(0.4418/0.3573)*8760/293.07107 rtol=1e-5 + @test results["ElectricTariff"]["lifecycle_demand_cost_after_tax"] == 0 + @test results["HeatingLoad"]["annual_calculated_total_heating_thermal_load_mmbtu"] == 12.0 * 8760 * data["ExistingBoiler"]["efficiency"] + @test results["HeatingLoad"]["annual_calculated_dhw_thermal_load_mmbtu"] == 6.0 * 8760 * data["ExistingBoiler"]["efficiency"] + @test results["HeatingLoad"]["annual_calculated_space_heating_thermal_load_mmbtu"] == 6.0 * 8760 * data["ExistingBoiler"]["efficiency"] + + #part 2: supplementary firing used when more efficient than the boiler and low-cost; demand charges not reduced by CHP + data["CHP"]["supplementary_firing_capital_cost_per_kw"] = 10 + data["CHP"]["reduces_demand_charges"] = false + data["ExistingBoiler"]["efficiency"] = 0.85 + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + s = Scenario(data) + inputs = REoptInputs(s) + results = run_reopt(m2, inputs) + @test results["CHP"]["size_supplemental_firing_kw"] ≈ 321.71 atol=0.1 + @test results["CHP"]["annual_thermal_production_mmbtu"] ≈ 149136.6 rtol=1e-5 + @test results["ElectricTariff"]["lifecycle_demand_cost_after_tax"] ≈ 5212.7 rtol=1e-5 + end end - - @testset "CHP Unavailability and Outage" begin - """ - Validation to ensure that: - 1) CHP meets load during outage without exporting - 2) CHP never exports if chp.can_wholesale and chp.can_net_meter inputs are False (default) - 3) CHP does not "curtail", i.e. send power to a load bank when chp.can_curtail is False (default) - 4) CHP min_turn_down_fraction is ignored during an outage - 5) Cooling tech production gets zeroed out during the outage period because we ignore the cooling load balance for outage - 6) Unavailability intervals that intersect with grid-outages get ignored - 7) Unavailability intervals that do not intersect with grid-outages result in no CHP production - """ - # Sizing CHP with non-constant efficiency, no cost curve, no unavailability_periods - data = JSON.parsefile("./scenarios/chp_unavailability_outage.json") - - # Add unavailability periods that 1) intersect (ignored) and 2) don't intersect with outage period - data["CHP"]["unavailability_periods"] = [Dict([("month", 1), ("start_week_of_month", 2), - ("start_day_of_week", 1), ("start_hour", 1), ("duration_hours", 8)]), - Dict([("month", 1), ("start_week_of_month", 2), - ("start_day_of_week", 3), ("start_hour", 9), ("duration_hours", 8)])] - # Manually doing the math from the unavailability defined above - unavail_1_start = 24 + 1 - unavail_1_end = unavail_1_start + 8 - 1 - unavail_2_start = 24*3 + 9 - unavail_2_end = unavail_2_start + 8 - 1 - - # Specify the CHP.min_turn_down_fraction which is NOT used during an outage - data["CHP"]["min_turn_down_fraction"] = 0.5 - # Specify outage period; outage time_steps are 1-indexed - outage_start = unavail_1_start - data["ElectricUtility"]["outage_start_time_step"] = outage_start - outage_end = unavail_1_end - data["ElectricUtility"]["outage_end_time_step"] = outage_end - data["ElectricLoad"]["critical_load_fraction"] = 0.25 - - s = Scenario(data) - inputs = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - results = run_reopt(m, inputs) - - tot_elec_load = results["ElectricLoad"]["load_series_kw"] - chp_total_elec_prod = results["CHP"]["electric_production_series_kw"] - chp_to_load = results["CHP"]["electric_to_load_series_kw"] - chp_export = results["CHP"]["electric_to_grid_series_kw"] - cooling_elec_consumption = results["ExistingChiller"]["electric_consumption_series_kw"] + @testset "FlexibleHVAC" begin + + @testset "Single RC Model heating only" begin + #= + Single RC model: + 1 state/control node + 2 inputs: Ta and Qheat + A = [1/(RC)], B = [1/(RC) 1/C], u = [Ta; Q] + NOTE exogenous_inputs (u) allows for parasitic heat, but it is input as zeros here + + We start with no technologies except ExistingBoiler and ExistingChiller. + FlexibleHVAC is only worth purchasing if its cost is neglible (i.e. below the lcc_bau * MIPTOL) + or if there is a time-varying fuel and/or electricity cost + (and the FlexibleHVAC installed_cost is less than the achievable savings). + =# + + # Austin, TX -> existing_chiller and existing_boiler added with FlexibleHVAC + pf, tamb = REopt.call_pvwatts_api(30.2672, -97.7431); + R = 0.00025 # K/kW + C = 1e5 # kJ/K + # the starting scenario has flat fuel and electricty costs + d = JSON.parsefile("./scenarios/thermal_load.json"); + A = reshape([-1/(R*C)], 1,1) + B = [1/(R*C) 1/C] + u = [tamb zeros(8760)]'; + d["FlexibleHVAC"] = Dict( + "control_node" => 1, + "initial_temperatures" => [21], + "temperature_upper_bound_degC" => 22.0, + "temperature_lower_bound_degC" => 19.8, + "installed_cost" => 300.0, # NOTE cost must be more then the MIPTOL * LCC 5e-5 * 5.79661e6 ≈ 290 to make FlexibleHVAC not worth it + "system_matrix" => A, + "input_matrix" => B, + "exogenous_inputs" => u + ) + + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt([m1,m2], d) + @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) + # @test Meta.parse(r["FlexibleHVAC"]["purchased"]) === false + # @test r["Financial"]["npv"] == 0 + + # put in a time varying fuel cost, which should make purchasing the FlexibleHVAC system economical + # with flat ElectricTariff the ExistingChiller does not benefit from FlexibleHVAC + d["ExistingBoiler"]["fuel_cost_per_mmbtu"] = rand(Float64, (8760))*(50-5).+5; + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + r = run_reopt([m1,m2], d) + @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) + # all of the savings are from the ExistingBoiler fuel costs + # @test Meta.parse(r["FlexibleHVAC"]["purchased"]) === true + # fuel_cost_savings = r["ExistingBoiler"]["lifecycle_fuel_cost_after_tax_bau"] - r["ExistingBoiler"]["lifecycle_fuel_cost_after_tax"] + # @test fuel_cost_savings - d["FlexibleHVAC"]["installed_cost"] ≈ r["Financial"]["npv"] atol=0.1 + + # now increase the FlexibleHVAC installed_cost to the fuel costs savings + 100 and expect that the FlexibleHVAC is not purchased + # d["FlexibleHVAC"]["installed_cost"] = fuel_cost_savings + 100 + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + r = run_reopt([m1,m2], d) + @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) + # @test Meta.parse(r["FlexibleHVAC"]["purchased"]) === false + # @test r["Financial"]["npv"] == 0 + + # add TOU ElectricTariff and expect to benefit from using ExistingChiller intelligently + d["ElectricTariff"] = Dict("urdb_label" => "5ed6c1a15457a3367add15ae") + + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt([m1,m2], d) + @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) + + # elec_cost_savings = r["ElectricTariff"]["lifecycle_demand_cost_after_tax_bau"] + + # r["ElectricTariff"]["lifecycle_energy_cost_after_tax_bau"] - + # r["ElectricTariff"]["lifecycle_demand_cost_after_tax"] - + # r["ElectricTariff"]["lifecycle_energy_cost_after_tax"] + + # fuel_cost_savings = r["ExistingBoiler"]["lifecycle_fuel_cost_after_tax_bau"] - r["ExistingBoiler"]["lifecycle_fuel_cost_after_tax"] + # @test fuel_cost_savings + elec_cost_savings - d["FlexibleHVAC"]["installed_cost"] ≈ r["Financial"]["npv"] atol=0.1 + + # now increase the FlexibleHVAC installed_cost to the fuel costs savings + elec_cost_savings + # + 100 and expect that the FlexibleHVAC is not purchased + # d["FlexibleHVAC"]["installed_cost"] = fuel_cost_savings + elec_cost_savings + 100 + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt([m1,m2], d) + @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) + # @test Meta.parse(r["FlexibleHVAC"]["purchased"]) === false + # @test r["Financial"]["npv"] == 0 - # The values compared to the expected values - @test sum([(chp_to_load[i] - tot_elec_load[i]*data["ElectricLoad"]["critical_load_fraction"]) for i in outage_start:outage_end]) ≈ 0.0 atol=0.001 - critical_load = tot_elec_load[outage_start:outage_end] * data["ElectricLoad"]["critical_load_fraction"] - @test sum(chp_to_load[outage_start:outage_end]) ≈ sum(critical_load) atol=0.1 - @test sum(chp_export) == 0.0 - @test sum(chp_total_elec_prod) ≈ sum(chp_to_load) atol=1.0e-5*sum(chp_total_elec_prod) - @test sum(cooling_elec_consumption[outage_start:outage_end]) == 0.0 - @test sum(chp_total_elec_prod[unavail_2_start:unavail_2_end]) == 0.0 + end end - - @testset "CHP Supplementary firing and standby" begin - """ - Test to ensure that supplementary firing and standby charges work as intended. The thermal and - electrical loads are constant, and the CHP system size is fixed; the supplementary firing has a - similar cost to the boiler and is purcahsed and used when the boiler efficiency is set to a lower - value than that of the supplementary firing. The test also ensures that demand charges are - correctly calculated when CHP is and is not allowed to reduce demand charges. - """ - data = JSON.parsefile("./scenarios/chp_supplementary_firing.json") - data["CHP"]["supplementary_firing_capital_cost_per_kw"] = 10000 - data["ElectricLoad"]["loads_kw"] = repeat([800.0], 8760) - data["DomesticHotWaterLoad"]["fuel_loads_mmbtu_per_hour"] = repeat([6.0], 8760) - data["SpaceHeatingLoad"]["fuel_loads_mmbtu_per_hour"] = repeat([6.0], 8760) - #part 1: supplementary firing not used when less efficient than the boiler and expensive - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - s = Scenario(data) - inputs = REoptInputs(s) - results = run_reopt(m1, inputs) - @test results["CHP"]["size_kw"] == 800 - @test results["CHP"]["size_supplemental_firing_kw"] == 0 - @test results["CHP"]["annual_electric_production_kwh"] ≈ 800*8760 rtol=1e-5 - @test results["CHP"]["annual_thermal_production_mmbtu"] ≈ 800*(0.4418/0.3573)*8760/293.07107 rtol=1e-5 - @test results["ElectricTariff"]["lifecycle_demand_cost_after_tax"] == 0 - @test results["HeatingLoad"]["annual_calculated_total_heating_thermal_load_mmbtu"] == 12.0 * 8760 * data["ExistingBoiler"]["efficiency"] - @test results["HeatingLoad"]["annual_calculated_dhw_thermal_load_mmbtu"] == 6.0 * 8760 * data["ExistingBoiler"]["efficiency"] - @test results["HeatingLoad"]["annual_calculated_space_heating_thermal_load_mmbtu"] == 6.0 * 8760 * data["ExistingBoiler"]["efficiency"] - - #part 2: supplementary firing used when more efficient than the boiler and low-cost; demand charges not reduced by CHP - data["CHP"]["supplementary_firing_capital_cost_per_kw"] = 10 - data["CHP"]["reduces_demand_charges"] = false - data["ExistingBoiler"]["efficiency"] = 0.85 - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + + #= + add a time-of-export rate that is greater than retail rate for the month of January, + check to make sure that PV does NOT export unless the site load is met first for the month of January. + =# + @testset "Do not allow_simultaneous_export_import" begin + model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + data = JSON.parsefile("./scenarios/monthly_rate.json") + + # create wholesale_rate with compensation in January > retail rate + jan_rate = data["ElectricTariff"]["monthly_energy_rates"][1] + data["ElectricTariff"]["wholesale_rate"] = + append!(repeat([jan_rate + 0.1], 31 * 24), repeat([0.0], 8760 - 31*24)) + data["ElectricTariff"]["monthly_demand_rates"] = repeat([0], 12) + data["ElectricUtility"] = Dict("allow_simultaneous_export_import" => false) + s = Scenario(data) inputs = REoptInputs(s) - results = run_reopt(m2, inputs) - @test results["CHP"]["size_supplemental_firing_kw"] ≈ 321.71 atol=0.1 - @test results["CHP"]["annual_thermal_production_mmbtu"] ≈ 149136.6 rtol=1e-5 - @test results["ElectricTariff"]["lifecycle_demand_cost_after_tax"] ≈ 5212.7 rtol=1e-5 + results = run_reopt(model, inputs) + + @test all(x == 0.0 for (i,x) in enumerate(results["ElectricUtility"]["electric_to_load_series_kw"][1:744]) + if results["PV"]["electric_to_grid_series_kw"][i] > 0) end - end - - @testset "FlexibleHVAC" begin - - @testset "Single RC Model heating only" begin - #= - Single RC model: - 1 state/control node - 2 inputs: Ta and Qheat - A = [1/(RC)], B = [1/(RC) 1/C], u = [Ta; Q] - NOTE exogenous_inputs (u) allows for parasitic heat, but it is input as zeros here - - We start with no technologies except ExistingBoiler and ExistingChiller. - FlexibleHVAC is only worth purchasing if its cost is neglible (i.e. below the lcc_bau * MIPTOL) - or if there is a time-varying fuel and/or electricity cost - (and the FlexibleHVAC installed_cost is less than the achievable savings). - =# - - # Austin, TX -> existing_chiller and existing_boiler added with FlexibleHVAC - pf, tamb = REopt.call_pvwatts_api(30.2672, -97.7431); - R = 0.00025 # K/kW - C = 1e5 # kJ/K - # the starting scenario has flat fuel and electricty costs - d = JSON.parsefile("./scenarios/thermal_load.json"); - A = reshape([-1/(R*C)], 1,1) - B = [1/(R*C) 1/C] - u = [tamb zeros(8760)]'; - d["FlexibleHVAC"] = Dict( - "control_node" => 1, - "initial_temperatures" => [21], - "temperature_upper_bound_degC" => 22.0, - "temperature_lower_bound_degC" => 19.8, - "installed_cost" => 300.0, # NOTE cost must be more then the MIPTOL * LCC 5e-5 * 5.79661e6 ≈ 290 to make FlexibleHVAC not worth it - "system_matrix" => A, - "input_matrix" => B, - "exogenous_inputs" => u - ) - + + @testset "Solar and ElectricStorage w/BAU and degradation" begin m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt([m1,m2], d) - @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) - # @test Meta.parse(r["FlexibleHVAC"]["purchased"]) === false - # @test r["Financial"]["npv"] == 0 - - # put in a time varying fuel cost, which should make purchasing the FlexibleHVAC system economical - # with flat ElectricTariff the ExistingChiller does not benefit from FlexibleHVAC - d["ExistingBoiler"]["fuel_cost_per_mmbtu"] = rand(Float64, (8760))*(50-5).+5; - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - r = run_reopt([m1,m2], d) - @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) - # all of the savings are from the ExistingBoiler fuel costs - # @test Meta.parse(r["FlexibleHVAC"]["purchased"]) === true - # fuel_cost_savings = r["ExistingBoiler"]["lifecycle_fuel_cost_after_tax_bau"] - r["ExistingBoiler"]["lifecycle_fuel_cost_after_tax"] - # @test fuel_cost_savings - d["FlexibleHVAC"]["installed_cost"] ≈ r["Financial"]["npv"] atol=0.1 - - # now increase the FlexibleHVAC installed_cost to the fuel costs savings + 100 and expect that the FlexibleHVAC is not purchased - # d["FlexibleHVAC"]["installed_cost"] = fuel_cost_savings + 100 - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - r = run_reopt([m1,m2], d) - @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) - # @test Meta.parse(r["FlexibleHVAC"]["purchased"]) === false - # @test r["Financial"]["npv"] == 0 - - # add TOU ElectricTariff and expect to benefit from using ExistingChiller intelligently - d["ElectricTariff"] = Dict("urdb_label" => "5ed6c1a15457a3367add15ae") - + d = JSON.parsefile("scenarios/pv_storage.json"); + d["Settings"] = Dict{Any,Any}("add_soc_incentive" => false) + results = run_reopt([m1,m2], d) + + @test results["PV"]["size_kw"] ≈ 216.6667 atol=0.01 + @test results["PV"]["lcoe_per_kwh"] ≈ 0.0468 atol = 0.001 + @test results["Financial"]["lcc"] ≈ 1.239179e7 rtol=1e-5 + @test results["Financial"]["lcc_bau"] ≈ 12766397 rtol=1e-5 + @test results["ElectricStorage"]["size_kw"] ≈ 49.02 atol=0.1 + @test results["ElectricStorage"]["size_kwh"] ≈ 83.3 atol=0.1 + proforma_npv = REopt.npv(results["Financial"]["offtaker_annual_free_cashflows"] - + results["Financial"]["offtaker_annual_free_cashflows_bau"], 0.081) + @test results["Financial"]["npv"] ≈ proforma_npv rtol=0.0001 + + # compare avg soc with and without degradation, + # using default augmentation battery maintenance strategy + avg_soc_no_degr = sum(results["ElectricStorage"]["soc_series_fraction"]) / 8760 + d["ElectricStorage"]["model_degradation"] = true + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r_degr = run_reopt(m, d) + avg_soc_degr = sum(r_degr["ElectricStorage"]["soc_series_fraction"]) / 8760 + @test avg_soc_no_degr > avg_soc_degr + + # test the replacement strategy + d["ElectricStorage"]["degradation"] = Dict("maintenance_strategy" => "replacement") + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + set_optimizer_attribute(m, "mip_rel_gap", 0.01) + r = run_reopt(m, d) + @test occursin("not supported by the solver", string(r["Messages"]["errors"])) + # #optimal SOH at end of horizon is 80\% to prevent any replacement + # @test sum(value.(m[:bmth_BkWh])) ≈ 0 atol=0.1 + # # @test r["ElectricStorage"]["maintenance_cost"] ≈ 2972.66 atol=0.01 + # # the maintenance_cost comes out to 3004.39 on Actions, so we test the LCC since it should match + # @test r["Financial"]["lcc"] ≈ 1.240096e7 rtol=0.01 + # @test last(value.(m[:SOH])) ≈ 66.633 rtol=0.01 + # @test r["ElectricStorage"]["size_kwh"] ≈ 83.29 rtol=0.01 + + # test minimum_avg_soc_fraction + d["ElectricStorage"]["minimum_avg_soc_fraction"] = 0.72 + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + set_optimizer_attribute(m, "mip_rel_gap", 0.01) + r = run_reopt(m, d) + @test occursin("not supported by the solver", string(r["Messages"]["errors"])) + # @test round(sum(r["ElectricStorage"]["soc_series_fraction"]), digits=2) / 8760 >= 0.7199 + end + + @testset "Outage with Generator, outage simulator, BAU critical load outputs" begin m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt([m1,m2], d) - @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) + p = REoptInputs("./scenarios/generator.json") + results = run_reopt([m1,m2], p) + @test results["Generator"]["size_kw"] ≈ 9.55 atol=0.01 + @test (sum(results["Generator"]["electric_to_load_series_kw"][i] for i in 1:9) + + sum(results["Generator"]["electric_to_load_series_kw"][i] for i in 13:8760)) == 0 + @test results["ElectricLoad"]["bau_critical_load_met"] == false + @test results["ElectricLoad"]["bau_critical_load_met_time_steps"] == 0 - # elec_cost_savings = r["ElectricTariff"]["lifecycle_demand_cost_after_tax_bau"] + - # r["ElectricTariff"]["lifecycle_energy_cost_after_tax_bau"] - - # r["ElectricTariff"]["lifecycle_demand_cost_after_tax"] - - # r["ElectricTariff"]["lifecycle_energy_cost_after_tax"] - - # fuel_cost_savings = r["ExistingBoiler"]["lifecycle_fuel_cost_after_tax_bau"] - r["ExistingBoiler"]["lifecycle_fuel_cost_after_tax"] - # @test fuel_cost_savings + elec_cost_savings - d["FlexibleHVAC"]["installed_cost"] ≈ r["Financial"]["npv"] atol=0.1 - - # now increase the FlexibleHVAC installed_cost to the fuel costs savings + elec_cost_savings - # + 100 and expect that the FlexibleHVAC is not purchased - # d["FlexibleHVAC"]["installed_cost"] = fuel_cost_savings + elec_cost_savings + 100 - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt([m1,m2], d) - @test (occursin("not supported by the solver", string(r["Messages"]["errors"])) || occursin("REopt scenarios solved either with errors or non-optimal solutions", string(r["Messages"]["errors"]))) - # @test Meta.parse(r["FlexibleHVAC"]["purchased"]) === false - # @test r["Financial"]["npv"] == 0 - + simresults = simulate_outages(results, p) + @test simresults["resilience_hours_max"] == 11 end - end - #= - add a time-of-export rate that is greater than retail rate for the month of January, - check to make sure that PV does NOT export unless the site load is met first for the month of January. - =# - @testset "Do not allow_simultaneous_export_import" begin - model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - data = JSON.parsefile("./scenarios/monthly_rate.json") - - # create wholesale_rate with compensation in January > retail rate - jan_rate = data["ElectricTariff"]["monthly_energy_rates"][1] - data["ElectricTariff"]["wholesale_rate"] = - append!(repeat([jan_rate + 0.1], 31 * 24), repeat([0.0], 8760 - 31*24)) - data["ElectricTariff"]["monthly_demand_rates"] = repeat([0], 12) - data["ElectricUtility"] = Dict("allow_simultaneous_export_import" => false) + @testset "Minimize Unserved Load" begin + d = JSON.parsefile("./scenarios/outage.json") + d["ElectricLoad"]["loads_kw"] = ones(8760)*200.0 + d["ElectricLoad"]["loads_kw"][5100:5109] .= 410.0 + d["ElectricLoad"]["loads_kw"][5200:5209] .= 410.0 + d["ElectricLoad"]["critical_load_fraction"] = 0.5 + d["PV"]["existing_kw"] = 0.0 + d["PV"]["min_kw"] = 100.0 + d["PV"]["max_kw"] = 100.0 + d["CHP"]["min_kw"] = 100.0 + d["CHP"]["max_kw"] = 100.0 + d["Generator"]["existing_kw"] = 0.0 + d["Generator"]["min_kw"] = 100.0 + d["Generator"]["max_kw"] = 100.0 + d["ElectricStorage"]["min_kw"] = 20 + d["ElectricStorage"]["max_kw"] = 20 + d["ElectricStorage"]["min_kwh"] = 50 + d["ElectricStorage"]["max_kwh"] = 50 + d["Financial"]["microgrid_upgrade_cost_fraction"] = 0.0 + s = Scenario(d) + p = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) + results = run_reopt(m, p) + + @test results["Outages"]["expected_outage_cost"] ≈ 0 atol=0.1 + @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) ≈ 0 atol=0.1 + @test value(m[:binMGTechUsed]["Generator"]) ≈ 1 + @test value(m[:binMGTechUsed]["CHP"]) ≈ 1 + @test value(m[:binMGTechUsed]["PV"]) ≈ 1 + @test value(m[:binMGStorageUsed]) ≈ 1 + + # Increase cost of microgrid upgrade and PV Size, PV not used and some load not met + d["Financial"]["microgrid_upgrade_cost_fraction"] = 0.3 + d["PV"]["min_kw"] = 200.0 + d["PV"]["max_kw"] = 200.0 + s = Scenario(d) + p = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) + results = run_reopt(m, p) + @test value(m[:binMGTechUsed]["PV"]) ≈ 0 + @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) > 0 + + #= + Scenario with $0.001/kWh value_of_lost_load_per_kwh, 12x169 hour outages, 1kW load/hour, and min_resil_time_steps = 168 + - should meet 168 kWh in each outage such that the total unserved load is 12 kWh + =# + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + results = run_reopt(m, "./scenarios/nogridcost_minresilhours.json") + @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) ≈ 12 + + # testing dvUnserved load, which would output 100 kWh for this scenario before output fix + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + results = run_reopt(m, "./scenarios/nogridcost_multiscenario.json") + @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) ≈ 60 + @test results["Outages"]["expected_outage_cost"] ≈ 485.43270 atol=1.0e-5 #avg duration (3h) * load per time step (10) * present worth factor (16.18109) + @test results["Outages"]["max_outage_cost_per_outage_duration"][1] ≈ 161.8109 atol=1.0e-5 + + # Scenario with generator, PV, electric storage + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + results = run_reopt(m, "./scenarios/outages_gen_pv_stor.json") + @test results["Outages"]["expected_outage_cost"] ≈ 3.54476923e6 atol=10 + @test results["Financial"]["lcc"] ≈ 8.6413594727e7 rtol=0.001 + + # Scenario with generator, PV, wind, electric storage + d = JSON.parsefile("./scenarios/outages_gen_pv_wind_stor.json") + d["ElectricLoad"]["loads_kw"] = ones(8760)*200.0 + d["ElectricLoad"]["loads_kw"][5100:5119] .= 425.0 + d["ElectricLoad"]["critical_load_fraction"] = 0.5 + d["PV"]["existing_kw"] = 0.0 + d["PV"]["min_kw"] = 100.0 + d["PV"]["max_kw"] = 100.0 + d["Wind"]["min_kw"] = 100.0 + d["Wind"]["max_kw"] = 100.0 + d["Generator"]["min_kw"] = 100.0 + d["Generator"]["max_kw"] = 100.0 + d["ElectricStorage"]["min_kw"] = 100 + d["ElectricStorage"]["max_kw"] = 100 + d["ElectricStorage"]["min_kwh"] = 100 + d["ElectricStorage"]["max_kwh"] = 100 + d["Site"]["min_resil_time_steps"] = 1 + s = Scenario(d) + p = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + results = run_reopt(m, p) + @test value(m[:binMGTechUsed]["Generator"]) ≈ 1 + @test value(m[:binMGTechUsed]["PV"]) ≈ 1 + @test value(m[:binMGTechUsed]["Wind"]) ≈ 1 + @test results["Outages"]["expected_outage_cost"] ≈ 1.296319791276051e6 atol=1.0 + @test results["Financial"]["lcc"] ≈ 4.8046446434e6 rtol=0.001 + + end - s = Scenario(data) - inputs = REoptInputs(s) - results = run_reopt(model, inputs) - - @test all(x == 0.0 for (i,x) in enumerate(results["ElectricUtility"]["electric_to_load_series_kw"][1:744]) - if results["PV"]["electric_to_grid_series_kw"][i] > 0) - end + @testset "Outages with Wind and supply-to-load no greater than critical load" begin + input_data = JSON.parsefile("./scenarios/wind_outages.json") + s = Scenario(input_data) + inputs = REoptInputs(s) + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) + results = run_reopt([m1,m2], inputs) + + # Check that supply-to-load is equal to critical load during outages, including wind + supply_to_load = results["Outages"]["storage_discharge_series_kw"] .+ results["Outages"]["wind_to_load_series_kw"] + supply_to_load = [supply_to_load[:,:,i][1] for i in eachindex(supply_to_load)] + critical_load = results["Outages"]["critical_loads_per_outage_series_kw"][1,1,:] + check = .≈(supply_to_load, critical_load, atol=0.001) + @test !(0 in check) + + # Check that the soc_series_fraction is the same length as the storage_discharge_series_kw + @test size(results["Outages"]["soc_series_fraction"]) == size(results["Outages"]["storage_discharge_series_kw"]) + end - @testset "Solar and ElectricStorage w/BAU and degradation" begin - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - d = JSON.parsefile("scenarios/pv_storage.json"); - d["Settings"] = Dict{Any,Any}("add_soc_incentive" => false) - results = run_reopt([m1,m2], d) - - @test results["PV"]["size_kw"] ≈ 216.6667 atol=0.01 - @test results["PV"]["lcoe_per_kwh"] ≈ 0.0468 atol = 0.001 - @test results["Financial"]["lcc"] ≈ 1.239179e7 rtol=1e-5 - @test results["Financial"]["lcc_bau"] ≈ 12766397 rtol=1e-5 - @test results["ElectricStorage"]["size_kw"] ≈ 49.02 atol=0.1 - @test results["ElectricStorage"]["size_kwh"] ≈ 83.3 atol=0.1 - proforma_npv = REopt.npv(results["Financial"]["offtaker_annual_free_cashflows"] - - results["Financial"]["offtaker_annual_free_cashflows_bau"], 0.081) - @test results["Financial"]["npv"] ≈ proforma_npv rtol=0.0001 - - # compare avg soc with and without degradation, - # using default augmentation battery maintenance strategy - avg_soc_no_degr = sum(results["ElectricStorage"]["soc_series_fraction"]) / 8760 - d["ElectricStorage"]["model_degradation"] = true - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r_degr = run_reopt(m, d) - avg_soc_degr = sum(r_degr["ElectricStorage"]["soc_series_fraction"]) / 8760 - @test avg_soc_no_degr > avg_soc_degr - - # test the replacement strategy - d["ElectricStorage"]["degradation"] = Dict("maintenance_strategy" => "replacement") - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - set_optimizer_attribute(m, "mip_rel_gap", 0.01) - r = run_reopt(m, d) - @test occursin("not supported by the solver", string(r["Messages"]["errors"])) - # #optimal SOH at end of horizon is 80\% to prevent any replacement - # @test sum(value.(m[:bmth_BkWh])) ≈ 0 atol=0.1 - # # @test r["ElectricStorage"]["maintenance_cost"] ≈ 2972.66 atol=0.01 - # # the maintenance_cost comes out to 3004.39 on Actions, so we test the LCC since it should match - # @test r["Financial"]["lcc"] ≈ 1.240096e7 rtol=0.01 - # @test last(value.(m[:SOH])) ≈ 66.633 rtol=0.01 - # @test r["ElectricStorage"]["size_kwh"] ≈ 83.29 rtol=0.01 - - # test minimum_avg_soc_fraction - d["ElectricStorage"]["minimum_avg_soc_fraction"] = 0.72 - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - set_optimizer_attribute(m, "mip_rel_gap", 0.01) - r = run_reopt(m, d) - @test occursin("not supported by the solver", string(r["Messages"]["errors"])) - # @test round(sum(r["ElectricStorage"]["soc_series_fraction"]), digits=2) / 8760 >= 0.7199 - end + @testset "Multiple Sites" begin + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + ps = [ + REoptInputs("./scenarios/pv_storage.json"), + REoptInputs("./scenarios/monthly_rate.json"), + ]; + results = run_reopt(m, ps) + @test results[3]["Financial"]["lcc"] + results[10]["Financial"]["lcc"] ≈ 1.2830872235e7 rtol=1e-5 + end - @testset "Outage with Generator, outage simulator, BAU critical load outputs" begin - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - p = REoptInputs("./scenarios/generator.json") - results = run_reopt([m1,m2], p) - @test results["Generator"]["size_kw"] ≈ 9.55 atol=0.01 - @test (sum(results["Generator"]["electric_to_load_series_kw"][i] for i in 1:9) + - sum(results["Generator"]["electric_to_load_series_kw"][i] for i in 13:8760)) == 0 - @test results["ElectricLoad"]["bau_critical_load_met"] == false - @test results["ElectricLoad"]["bau_critical_load_met_time_steps"] == 0 - - simresults = simulate_outages(results, p) - @test simresults["resilience_hours_max"] == 11 - end + @testset "MPC" begin + model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_mpc(model, "./scenarios/mpc.json") + @test maximum(r["ElectricUtility"]["to_load_series_kw"][1:15]) <= 98.0 + @test maximum(r["ElectricUtility"]["to_load_series_kw"][16:24]) <= 97.0 + @test sum(r["PV"]["to_grid_series_kw"]) ≈ 0 + grid_draw = r["ElectricUtility"]["to_load_series_kw"] .+ r["ElectricUtility"]["to_battery_series_kw"] + # the grid draw limit in the 10th time step is set to 90 + # without the 90 limit the grid draw is 98 in the 10th time step + @test grid_draw[10] <= 90 + end - @testset "Minimize Unserved Load" begin - d = JSON.parsefile("./scenarios/outage.json") - d["ElectricLoad"]["loads_kw"] = ones(8760)*200.0 - d["ElectricLoad"]["loads_kw"][5100:5109] .= 410.0 - d["ElectricLoad"]["loads_kw"][5200:5209] .= 410.0 - d["ElectricLoad"]["critical_load_fraction"] = 0.5 - d["PV"]["existing_kw"] = 0.0 - d["PV"]["min_kw"] = 100.0 - d["PV"]["max_kw"] = 100.0 - d["CHP"]["min_kw"] = 100.0 - d["CHP"]["max_kw"] = 100.0 - d["Generator"]["existing_kw"] = 0.0 - d["Generator"]["min_kw"] = 100.0 - d["Generator"]["max_kw"] = 100.0 - d["ElectricStorage"]["min_kw"] = 20 - d["ElectricStorage"]["max_kw"] = 20 - d["ElectricStorage"]["min_kwh"] = 50 - d["ElectricStorage"]["max_kwh"] = 50 - d["Financial"]["microgrid_upgrade_cost_fraction"] = 0.0 - s = Scenario(d) - p = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) - results = run_reopt(m, p) - - @test results["Outages"]["expected_outage_cost"] ≈ 0 atol=0.1 - @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) ≈ 0 atol=0.1 - @test value(m[:binMGTechUsed]["Generator"]) ≈ 1 - @test value(m[:binMGTechUsed]["CHP"]) ≈ 1 - @test value(m[:binMGTechUsed]["PV"]) ≈ 1 - @test value(m[:binMGStorageUsed]) ≈ 1 - - # Increase cost of microgrid upgrade and PV Size, PV not used and some load not met - d["Financial"]["microgrid_upgrade_cost_fraction"] = 0.3 - d["PV"]["min_kw"] = 200.0 - d["PV"]["max_kw"] = 200.0 - s = Scenario(d) - p = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) - results = run_reopt(m, p) - @test value(m[:binMGTechUsed]["PV"]) ≈ 0 - @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) > 0 - - #= - Scenario with $0.001/kWh value_of_lost_load_per_kwh, 12x169 hour outages, 1kW load/hour, and min_resil_time_steps = 168 - - should meet 168 kWh in each outage such that the total unserved load is 12 kWh - =# - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - results = run_reopt(m, "./scenarios/nogridcost_minresilhours.json") - @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) ≈ 12 - - # testing dvUnserved load, which would output 100 kWh for this scenario before output fix - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - results = run_reopt(m, "./scenarios/nogridcost_multiscenario.json") - @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) ≈ 60 - @test results["Outages"]["expected_outage_cost"] ≈ 485.43270 atol=1.0e-5 #avg duration (3h) * load per time step (10) * present worth factor (16.18109) - @test results["Outages"]["max_outage_cost_per_outage_duration"][1] ≈ 161.8109 atol=1.0e-5 - - # Scenario with generator, PV, electric storage - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - results = run_reopt(m, "./scenarios/outages_gen_pv_stor.json") - @test results["Outages"]["expected_outage_cost"] ≈ 3.54476923e6 atol=10 - @test results["Financial"]["lcc"] ≈ 8.6413594727e7 rtol=0.001 - - # Scenario with generator, PV, wind, electric storage - d = JSON.parsefile("./scenarios/outages_gen_pv_wind_stor.json") - d["ElectricLoad"]["loads_kw"] = ones(8760)*200.0 - d["ElectricLoad"]["loads_kw"][5100:5119] .= 425.0 - d["ElectricLoad"]["critical_load_fraction"] = 0.5 - d["PV"]["existing_kw"] = 0.0 - d["PV"]["min_kw"] = 100.0 - d["PV"]["max_kw"] = 100.0 - d["Wind"]["min_kw"] = 100.0 - d["Wind"]["max_kw"] = 100.0 - d["Generator"]["min_kw"] = 100.0 - d["Generator"]["max_kw"] = 100.0 - d["ElectricStorage"]["min_kw"] = 100 - d["ElectricStorage"]["max_kw"] = 100 - d["ElectricStorage"]["min_kwh"] = 100 - d["ElectricStorage"]["max_kwh"] = 100 - d["Site"]["min_resil_time_steps"] = 1 - s = Scenario(d) - p = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - results = run_reopt(m, p) - @test value(m[:binMGTechUsed]["Generator"]) ≈ 1 - @test value(m[:binMGTechUsed]["PV"]) ≈ 1 - @test value(m[:binMGTechUsed]["Wind"]) ≈ 1 - @test results["Outages"]["expected_outage_cost"] ≈ 1.296319791276051e6 atol=1.0 - @test results["Financial"]["lcc"] ≈ 4.8046446434e6 rtol=0.001 - - end + @testset "Complex Incentives" begin + """ + This test was compared against the API test: + reo.tests.test_reopt_url.EntryResourceTest.test_complex_incentives + when using the hardcoded levelization_factor in this package's REoptInputs function. + The two LCC's matched within 0.00005%. (The Julia pkg LCC is 1.0971991e7) + """ + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(m, "./scenarios/incentives.json") + @test results["Financial"]["lcc"] ≈ 1.094596365e7 atol=5e4 + end - @testset "Outages with Wind and supply-to-load no greater than critical load" begin - input_data = JSON.parsefile("./scenarios/wind_outages.json") - s = Scenario(input_data) - inputs = REoptInputs(s) - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) - results = run_reopt([m1,m2], inputs) - - # Check that supply-to-load is equal to critical load during outages, including wind - supply_to_load = results["Outages"]["storage_discharge_series_kw"] .+ results["Outages"]["wind_to_load_series_kw"] - supply_to_load = [supply_to_load[:,:,i][1] for i in eachindex(supply_to_load)] - critical_load = results["Outages"]["critical_loads_per_outage_series_kw"][1,1,:] - check = .≈(supply_to_load, critical_load, atol=0.001) - @test !(0 in check) - - # Check that the soc_series_fraction is the same length as the storage_discharge_series_kw - @test size(results["Outages"]["soc_series_fraction"]) == size(results["Outages"]["storage_discharge_series_kw"]) - end + @testset verbose = true "Rate Structures" begin - @testset "Multiple Sites" begin - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - ps = [ - REoptInputs("./scenarios/pv_storage.json"), - REoptInputs("./scenarios/monthly_rate.json"), - ]; - results = run_reopt(m, ps) - @test results[3]["Financial"]["lcc"] + results[10]["Financial"]["lcc"] ≈ 1.2830872235e7 rtol=1e-5 - end + @testset "Tiered Energy" begin + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(m, "./scenarios/tiered_rate.json") + @test results["ElectricTariff"]["year_one_energy_cost_before_tax"] ≈ 2342.88 + @test results["ElectricUtility"]["annual_energy_supplied_kwh"] ≈ 24000.0 atol=0.1 + @test results["ElectricLoad"]["annual_calculated_kwh"] ≈ 24000.0 atol=0.1 + end - @testset "MPC" begin - model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_mpc(model, "./scenarios/mpc.json") - @test maximum(r["ElectricUtility"]["to_load_series_kw"][1:15]) <= 98.0 - @test maximum(r["ElectricUtility"]["to_load_series_kw"][16:24]) <= 97.0 - @test sum(r["PV"]["to_grid_series_kw"]) ≈ 0 - grid_draw = r["ElectricUtility"]["to_load_series_kw"] .+ r["ElectricUtility"]["to_battery_series_kw"] - # the grid draw limit in the 10th time step is set to 90 - # without the 90 limit the grid draw is 98 in the 10th time step - @test grid_draw[10] <= 90 - end + @testset "Lookback Demand Charges" begin + # 1. Testing rate from URDB + data = JSON.parsefile("./scenarios/lookback_rate.json") + # urdb_label used https://apps.openei.org/IURDB/rate/view/539f6a23ec4f024411ec8bf9#2__Demand + # has a demand charge lookback of 35% for all months with 2 different demand charges based on which month + data["ElectricLoad"]["loads_kw"] = ones(8760) + data["ElectricLoad"]["loads_kw"][8] = 100.0 + inputs = REoptInputs(Scenario(data)) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(m, inputs) + # Expected result is 100 kW demand for January, 35% of that for all other months and + # with 5x other $10.5/kW cold months and 6x $11.5/kW warm months + @test results["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ 100 * (10.5 + 0.35*10.5*5 + 0.35*11.5*6) + + # 2. Testing custom rate from user with demand_lookback_months + d = JSON.parsefile("./scenarios/lookback_rate.json") + d["ElectricTariff"] = Dict() + d["ElectricTariff"]["demand_lookback_percent"] = 0.75 + d["ElectricLoad"]["loads_kw"] = [100 for i in range(1,8760)] + d["ElectricLoad"]["loads_kw"][22] = 200 # Jan peak + d["ElectricLoad"]["loads_kw"][2403] = 400 # April peak (Should set dvPeakDemandLookback) + d["ElectricLoad"]["loads_kw"][4088] = 500 # June peak (not in peak month lookback) + d["ElectricLoad"]["loads_kw"][8333] = 300 # Dec peak + d["ElectricTariff"]["monthly_demand_rates"] = [10,10,20,50,20,10,20,20,20,20,20,5] + d["ElectricTariff"]["demand_lookback_months"] = [1,0,0,1,0,0,0,0,0,0,0,1] # Jan, April, Dec + d["ElectricTariff"]["blended_annual_energy_rate"] = 0.01 + + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt(m, REoptInputs(Scenario(d))) + + monthly_peaks = [300,300,300,400,300,500,300,300,300,300,300,300] # 300 = 400*0.75. Sets peak in all months excpet April and June + expected_demand_cost = sum(monthly_peaks.*d["ElectricTariff"]["monthly_demand_rates"]) + @test r["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ expected_demand_cost + + # 3. Testing custom rate from user with demand_lookback_range + d = JSON.parsefile("./scenarios/lookback_rate.json") + d["ElectricTariff"] = Dict() + d["ElectricTariff"]["demand_lookback_percent"] = 0.75 + d["ElectricLoad"]["loads_kw"] = [100 for i in range(1,8760)] + d["ElectricLoad"]["loads_kw"][22] = 200 # Jan peak + d["ElectricLoad"]["loads_kw"][2403] = 400 # April peak (Should set dvPeakDemandLookback) + d["ElectricLoad"]["loads_kw"][4088] = 500 # June peak (not in peak month lookback) + d["ElectricLoad"]["loads_kw"][8333] = 300 # Dec peak + d["ElectricTariff"]["monthly_demand_rates"] = [10,10,20,50,20,10,20,20,20,20,20,5] + d["ElectricTariff"]["blended_annual_energy_rate"] = 0.01 + d["ElectricTariff"]["demand_lookback_range"] = 6 + + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt(m, REoptInputs(Scenario(d))) + + monthly_peaks = [225, 225, 225, 400, 300, 500, 375, 375, 375, 375, 375, 375] + expected_demand_cost = sum(monthly_peaks.*d["ElectricTariff"]["monthly_demand_rates"]) + @test r["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ expected_demand_cost - @testset "Complex Incentives" begin - """ - This test was compared against the API test: - reo.tests.test_reopt_url.EntryResourceTest.test_complex_incentives - when using the hardcoded levelization_factor in this package's REoptInputs function. - The two LCC's matched within 0.00005%. (The Julia pkg LCC is 1.0971991e7) - """ - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt(m, "./scenarios/incentives.json") - @test results["Financial"]["lcc"] ≈ 1.094596365e7 atol=5e4 - end + end - @testset verbose = true "Rate Structures" begin + @testset "Blended tariff" begin + model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(model, "./scenarios/no_techs.json") + @test results["ElectricTariff"]["year_one_energy_cost_before_tax"] ≈ 1000.0 + @test results["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ 136.99 + end - @testset "Tiered Energy" begin - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt(m, "./scenarios/tiered_rate.json") - @test results["ElectricTariff"]["year_one_energy_cost_before_tax"] ≈ 2342.88 - @test results["ElectricUtility"]["annual_energy_supplied_kwh"] ≈ 24000.0 atol=0.1 - @test results["ElectricLoad"]["annual_calculated_kwh"] ≈ 24000.0 atol=0.1 - end + @testset "Coincident Peak Charges" begin + model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(model, "./scenarios/coincident_peak.json") + @test results["ElectricTariff"]["year_one_coincident_peak_cost_before_tax"] ≈ 15.0 + end - @testset "Lookback Demand Charges" begin - # 1. Testing rate from URDB - data = JSON.parsefile("./scenarios/lookback_rate.json") - # urdb_label used https://apps.openei.org/IURDB/rate/view/539f6a23ec4f024411ec8bf9#2__Demand - # has a demand charge lookback of 35% for all months with 2 different demand charges based on which month - data["ElectricLoad"]["loads_kw"] = ones(8760) - data["ElectricLoad"]["loads_kw"][8] = 100.0 - inputs = REoptInputs(Scenario(data)) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt(m, inputs) - # Expected result is 100 kW demand for January, 35% of that for all other months and - # with 5x other $10.5/kW cold months and 6x $11.5/kW warm months - @test results["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ 100 * (10.5 + 0.35*10.5*5 + 0.35*11.5*6) - - # 2. Testing custom rate from user with demand_lookback_months - d = JSON.parsefile("./scenarios/lookback_rate.json") - d["ElectricTariff"] = Dict() - d["ElectricTariff"]["demand_lookback_percent"] = 0.75 - d["ElectricLoad"]["loads_kw"] = [100 for i in range(1,8760)] - d["ElectricLoad"]["loads_kw"][22] = 200 # Jan peak - d["ElectricLoad"]["loads_kw"][2403] = 400 # April peak (Should set dvPeakDemandLookback) - d["ElectricLoad"]["loads_kw"][4088] = 500 # June peak (not in peak month lookback) - d["ElectricLoad"]["loads_kw"][8333] = 300 # Dec peak - d["ElectricTariff"]["monthly_demand_rates"] = [10,10,20,50,20,10,20,20,20,20,20,5] - d["ElectricTariff"]["demand_lookback_months"] = [1,0,0,1,0,0,0,0,0,0,0,1] # Jan, April, Dec - d["ElectricTariff"]["blended_annual_energy_rate"] = 0.01 + @testset "URDB sell rate" begin + #= The URDB contains at least one "Customer generation" tariff that only has a "sell" key in the energyratestructure (the tariff tested here) + =# + model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + p = REoptInputs("./scenarios/URDB_customer_generation.json") + results = run_reopt(model, p) + @test results["PV"]["size_kw"] ≈ p.max_sizes["PV"] + end - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt(m, REoptInputs(Scenario(d))) - - monthly_peaks = [300,300,300,400,300,500,300,300,300,300,300,300] # 300 = 400*0.75. Sets peak in all months excpet April and June - expected_demand_cost = sum(monthly_peaks.*d["ElectricTariff"]["monthly_demand_rates"]) - @test r["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ expected_demand_cost - - # 3. Testing custom rate from user with demand_lookback_range - d = JSON.parsefile("./scenarios/lookback_rate.json") - d["ElectricTariff"] = Dict() - d["ElectricTariff"]["demand_lookback_percent"] = 0.75 - d["ElectricLoad"]["loads_kw"] = [100 for i in range(1,8760)] - d["ElectricLoad"]["loads_kw"][22] = 200 # Jan peak - d["ElectricLoad"]["loads_kw"][2403] = 400 # April peak (Should set dvPeakDemandLookback) - d["ElectricLoad"]["loads_kw"][4088] = 500 # June peak (not in peak month lookback) - d["ElectricLoad"]["loads_kw"][8333] = 300 # Dec peak - d["ElectricTariff"]["monthly_demand_rates"] = [10,10,20,50,20,10,20,20,20,20,20,5] - d["ElectricTariff"]["blended_annual_energy_rate"] = 0.01 - d["ElectricTariff"]["demand_lookback_range"] = 6 + @testset "Custom URDB with Sub-Hourly" begin + # Testing a 15-min post with a urdb_response with multiple n_energy_tiers + model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.1)) + p = REoptInputs("./scenarios/subhourly_with_urdb.json") + results = run_reopt(model, p) + @test length(p.s.electric_tariff.export_rates[:WHL]) ≈ 8760*4 + @test results["PV"]["size_kw"] ≈ p.s.pvs[1].existing_kw + end - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt(m, REoptInputs(Scenario(d))) - monthly_peaks = [225, 225, 225, 400, 300, 500, 375, 375, 375, 375, 375, 375] - expected_demand_cost = sum(monthly_peaks.*d["ElectricTariff"]["monthly_demand_rates"]) - @test r["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ expected_demand_cost + # # tiered monthly demand rate TODO: expected results? + # m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + # data = JSON.parsefile("./scenarios/tiered_rate.json") + # data["ElectricTariff"]["urdb_label"] = "59bc22705457a3372642da67" + # s = Scenario(data) + # inputs = REoptInputs(s) + # results = run_reopt(m, inputs) + # TODO test for tiered TOU demand rates end - @testset "Blended tariff" begin - model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt(model, "./scenarios/no_techs.json") - @test results["ElectricTariff"]["year_one_energy_cost_before_tax"] ≈ 1000.0 - @test results["ElectricTariff"]["year_one_demand_cost_before_tax"] ≈ 136.99 + @testset "EASIUR" begin + d = JSON.parsefile("./scenarios/pv.json") + d["Site"]["latitude"] = 30.2672 + d["Site"]["longitude"] = -97.7431 + scen = Scenario(d) + @test scen.financial.NOx_grid_cost_per_tonne ≈ 4534.032470 atol=0.1 end - @testset "Coincident Peak Charges" begin - model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt(model, "./scenarios/coincident_peak.json") - @test results["ElectricTariff"]["year_one_coincident_peak_cost_before_tax"] ≈ 15.0 - end + @testset "Wind" begin + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + d = JSON.parsefile("./scenarios/wind.json") + results = run_reopt(m, d) + @test results["Wind"]["size_kw"] ≈ 3752 atol=0.1 + @test results["Financial"]["lcc"] ≈ 8.591017e6 rtol=1e-5 + #= + 0.5% higher LCC in this package as compared to API ? 8,591,017 vs 8,551,172 + - both have zero curtailment + - same energy to grid: 5,839,317 vs 5,839,322 + - same energy to load: 4,160,683 vs 4,160,677 + - same city: Boulder + - same total wind prod factor + + REopt.jl has: + - bigger turbine: 3752 vs 3735 + - net_capital_costs_plus_om: 8,576,590 vs. 8,537,480 - @testset "URDB sell rate" begin - #= The URDB contains at least one "Customer generation" tariff that only has a "sell" key in the energyratestructure (the tariff tested here) + TODO: will these discrepancies be addressed once NMIL binaries are added? =# - model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - p = REoptInputs("./scenarios/URDB_customer_generation.json") - results = run_reopt(model, p) - @test results["PV"]["size_kw"] ≈ p.max_sizes["PV"] - end - - @testset "Custom URDB with Sub-Hourly" begin - # Testing a 15-min post with a urdb_response with multiple n_energy_tiers - model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.1)) - p = REoptInputs("./scenarios/subhourly_with_urdb.json") - results = run_reopt(model, p) - @test length(p.s.electric_tariff.export_rates[:WHL]) ≈ 8760*4 - @test results["PV"]["size_kw"] ≈ p.s.pvs[1].existing_kw - end + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + d["Site"]["land_acres"] = 60 # = 2 MW (with 0.03 acres/kW) + results = run_reopt(m, d) + @test results["Wind"]["size_kw"] == 2000.0 # Wind should be constrained by land_acres - # # tiered monthly demand rate TODO: expected results? - # m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - # data = JSON.parsefile("./scenarios/tiered_rate.json") - # data["ElectricTariff"]["urdb_label"] = "59bc22705457a3372642da67" - # s = Scenario(data) - # inputs = REoptInputs(s) - # results = run_reopt(m, inputs) - - # TODO test for tiered TOU demand rates - end - - @testset "EASIUR" begin - d = JSON.parsefile("./scenarios/pv.json") - d["Site"]["latitude"] = 30.2672 - d["Site"]["longitude"] = -97.7431 - scen = Scenario(d) - @test scen.financial.NOx_grid_cost_per_tonne ≈ 4534.032470 atol=0.1 - end - - @testset "Wind" begin - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - d = JSON.parsefile("./scenarios/wind.json") - results = run_reopt(m, d) - @test results["Wind"]["size_kw"] ≈ 3752 atol=0.1 - @test results["Financial"]["lcc"] ≈ 8.591017e6 rtol=1e-5 - #= - 0.5% higher LCC in this package as compared to API ? 8,591,017 vs 8,551,172 - - both have zero curtailment - - same energy to grid: 5,839,317 vs 5,839,322 - - same energy to load: 4,160,683 vs 4,160,677 - - same city: Boulder - - same total wind prod factor - - REopt.jl has: - - bigger turbine: 3752 vs 3735 - - net_capital_costs_plus_om: 8,576,590 vs. 8,537,480 - - TODO: will these discrepancies be addressed once NMIL binaries are added? - =# - - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - d["Site"]["land_acres"] = 60 # = 2 MW (with 0.03 acres/kW) - results = run_reopt(m, d) - @test results["Wind"]["size_kw"] == 2000.0 # Wind should be constrained by land_acres - - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - d["Wind"]["min_kw"] = 2001 # min_kw greater than land-constrained max should error - results = run_reopt(m, d) - @test "errors" ∈ keys(results["Messages"]) - @test length(results["Messages"]["errors"]) > 0 - end + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + d["Wind"]["min_kw"] = 2001 # min_kw greater than land-constrained max should error + results = run_reopt(m, d) + @test "errors" ∈ keys(results["Messages"]) + @test length(results["Messages"]["errors"]) > 0 + end - @testset "Multiple PVs" begin - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt([m1,m2], "./scenarios/multiple_pvs.json") - - ground_pv = results["PV"][findfirst(pv -> pv["name"] == "ground", results["PV"])] - roof_west = results["PV"][findfirst(pv -> pv["name"] == "roof_west", results["PV"])] - roof_east = results["PV"][findfirst(pv -> pv["name"] == "roof_east", results["PV"])] - - @test ground_pv["size_kw"] ≈ 15 atol=0.1 - @test roof_west["size_kw"] ≈ 7 atol=0.1 - @test roof_east["size_kw"] ≈ 4 atol=0.1 - @test ground_pv["lifecycle_om_cost_after_tax_bau"] ≈ 782.0 atol=0.1 - @test roof_west["lifecycle_om_cost_after_tax_bau"] ≈ 782.0 atol=0.1 - @test ground_pv["annual_energy_produced_kwh_bau"] ≈ 8933.09 atol=0.1 - @test roof_west["annual_energy_produced_kwh_bau"] ≈ 7656.11 atol=0.1 - @test ground_pv["annual_energy_produced_kwh"] ≈ 26799.26 atol=0.1 - @test roof_west["annual_energy_produced_kwh"] ≈ 10719.51 atol=0.1 - @test roof_east["annual_energy_produced_kwh"] ≈ 6685.95 atol=0.1 - end + @testset "Multiple PVs" begin + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt([m1,m2], "./scenarios/multiple_pvs.json") + + ground_pv = results["PV"][findfirst(pv -> pv["name"] == "ground", results["PV"])] + roof_west = results["PV"][findfirst(pv -> pv["name"] == "roof_west", results["PV"])] + roof_east = results["PV"][findfirst(pv -> pv["name"] == "roof_east", results["PV"])] + + @test ground_pv["size_kw"] ≈ 15 atol=0.1 + @test roof_west["size_kw"] ≈ 7 atol=0.1 + @test roof_east["size_kw"] ≈ 4 atol=0.1 + @test ground_pv["lifecycle_om_cost_after_tax_bau"] ≈ 782.0 atol=0.1 + @test roof_west["lifecycle_om_cost_after_tax_bau"] ≈ 782.0 atol=0.1 + @test ground_pv["annual_energy_produced_kwh_bau"] ≈ 8933.09 atol=0.1 + @test roof_west["annual_energy_produced_kwh_bau"] ≈ 7656.11 atol=0.1 + @test ground_pv["annual_energy_produced_kwh"] ≈ 26799.26 atol=0.1 + @test roof_west["annual_energy_produced_kwh"] ≈ 10719.51 atol=0.1 + @test roof_east["annual_energy_produced_kwh"] ≈ 6685.95 atol=0.1 + end - @testset "Thermal Energy Storage + Absorption Chiller" begin - model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - data = JSON.parsefile("./scenarios/thermal_storage.json") - s = Scenario(data) - p = REoptInputs(s) + @testset "Thermal Energy Storage + Absorption Chiller" begin + model = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + data = JSON.parsefile("./scenarios/thermal_storage.json") + s = Scenario(data) + p = REoptInputs(s) + + #test for get_absorption_chiller_defaults consistency with inputs data and Scenario s. + htf_defaults_response = get_absorption_chiller_defaults(; + thermal_consumption_hot_water_or_steam=get(data["AbsorptionChiller"], "thermal_consumption_hot_water_or_steam", nothing), + boiler_type=get(data["ExistingBoiler"], "production_type", nothing), + load_max_tons=maximum(s.cooling_load.loads_kw_thermal / REopt.KWH_THERMAL_PER_TONHOUR) + ) - #test for get_absorption_chiller_defaults consistency with inputs data and Scenario s. - htf_defaults_response = get_absorption_chiller_defaults(; - thermal_consumption_hot_water_or_steam=get(data["AbsorptionChiller"], "thermal_consumption_hot_water_or_steam", nothing), - boiler_type=get(data["ExistingBoiler"], "production_type", nothing), - load_max_tons=maximum(s.cooling_load.loads_kw_thermal / REopt.KWH_THERMAL_PER_TONHOUR) - ) - - expected_installed_cost_per_ton = htf_defaults_response["default_inputs"]["installed_cost_per_ton"] - expected_om_cost_per_ton = htf_defaults_response["default_inputs"]["om_cost_per_ton"] - - @test p.s.absorption_chiller.installed_cost_per_kw ≈ expected_installed_cost_per_ton / REopt.KWH_THERMAL_PER_TONHOUR atol=0.001 - @test p.s.absorption_chiller.om_cost_per_kw ≈ expected_om_cost_per_ton / REopt.KWH_THERMAL_PER_TONHOUR atol=0.001 - @test p.s.absorption_chiller.cop_thermal ≈ htf_defaults_response["default_inputs"]["cop_thermal"] atol=0.001 - - #load test values - p.s.absorption_chiller.installed_cost_per_kw = 500.0 / REopt.KWH_THERMAL_PER_TONHOUR - p.s.absorption_chiller.om_cost_per_kw = 0.5 / REopt.KWH_THERMAL_PER_TONHOUR - p.s.absorption_chiller.cop_thermal = 0.7 - - #Make every other hour zero fuel and electric cost; storage should charge and discharge in each period - for ts in p.time_steps - #heating and cooling loads only - if ts % 2 == 0 #in even periods, there is a nonzero load and energy is higher cost, and storage should discharge - p.s.electric_load.loads_kw[ts] = 10 - p.s.dhw_load.loads_kw[ts] = 5 - p.s.space_heating_load.loads_kw[ts] = 5 - p.s.cooling_load.loads_kw_thermal[ts] = 10 - p.fuel_cost_per_kwh["ExistingBoiler"][ts] = 100 - for tier in 1:p.s.electric_tariff.n_energy_tiers - p.s.electric_tariff.energy_rates[ts, tier] = 100 - end - else #in odd periods, there is no load and energy is cheaper - storage should charge - p.s.electric_load.loads_kw[ts] = 0 - p.s.dhw_load.loads_kw[ts] = 0 - p.s.space_heating_load.loads_kw[ts] = 0 - p.s.cooling_load.loads_kw_thermal[ts] = 0 - p.fuel_cost_per_kwh["ExistingBoiler"][ts] = 1 - for tier in 1:p.s.electric_tariff.n_energy_tiers - p.s.electric_tariff.energy_rates[ts, tier] = 50 + expected_installed_cost_per_ton = htf_defaults_response["default_inputs"]["installed_cost_per_ton"] + expected_om_cost_per_ton = htf_defaults_response["default_inputs"]["om_cost_per_ton"] + + @test p.s.absorption_chiller.installed_cost_per_kw ≈ expected_installed_cost_per_ton / REopt.KWH_THERMAL_PER_TONHOUR atol=0.001 + @test p.s.absorption_chiller.om_cost_per_kw ≈ expected_om_cost_per_ton / REopt.KWH_THERMAL_PER_TONHOUR atol=0.001 + @test p.s.absorption_chiller.cop_thermal ≈ htf_defaults_response["default_inputs"]["cop_thermal"] atol=0.001 + + #load test values + p.s.absorption_chiller.installed_cost_per_kw = 500.0 / REopt.KWH_THERMAL_PER_TONHOUR + p.s.absorption_chiller.om_cost_per_kw = 0.5 / REopt.KWH_THERMAL_PER_TONHOUR + p.s.absorption_chiller.cop_thermal = 0.7 + + #Make every other hour zero fuel and electric cost; storage should charge and discharge in each period + for ts in p.time_steps + #heating and cooling loads only + if ts % 2 == 0 #in even periods, there is a nonzero load and energy is higher cost, and storage should discharge + p.s.electric_load.loads_kw[ts] = 10 + p.s.dhw_load.loads_kw[ts] = 5 + p.s.space_heating_load.loads_kw[ts] = 5 + p.s.cooling_load.loads_kw_thermal[ts] = 10 + p.fuel_cost_per_kwh["ExistingBoiler"][ts] = 100 + for tier in 1:p.s.electric_tariff.n_energy_tiers + p.s.electric_tariff.energy_rates[ts, tier] = 100 + end + else #in odd periods, there is no load and energy is cheaper - storage should charge + p.s.electric_load.loads_kw[ts] = 0 + p.s.dhw_load.loads_kw[ts] = 0 + p.s.space_heating_load.loads_kw[ts] = 0 + p.s.cooling_load.loads_kw_thermal[ts] = 0 + p.fuel_cost_per_kwh["ExistingBoiler"][ts] = 1 + for tier in 1:p.s.electric_tariff.n_energy_tiers + p.s.electric_tariff.energy_rates[ts, tier] = 50 + end end end + + r = run_reopt(model, p) + + #dispatch to load should be 10kW every other period = 4,380 * 10 + @test sum(r["HotThermalStorage"]["storage_to_load_series_mmbtu_per_hour"]) ≈ 149.45 atol=0.1 + @test sum(r["ColdThermalStorage"]["storage_to_load_series_ton"]) ≈ 12454.33 atol=0.1 + #size should be just over 10kW in gallons, accounting for efficiency losses and min SOC + @test r["HotThermalStorage"]["size_gal"] ≈ 233.0 atol=0.1 + @test r["ColdThermalStorage"]["size_gal"] ≈ 378.0 atol=0.1 + #No production from existing chiller, only absorption chiller, which is sized at ~5kW to manage electric demand charge & capital cost. + @test r["ExistingChiller"]["annual_thermal_production_tonhour"] ≈ 0.0 atol=0.1 + @test r["AbsorptionChiller"]["annual_thermal_production_tonhour"] ≈ 12464.15 atol=0.1 + @test r["AbsorptionChiller"]["size_ton"] ≈ 2.846 atol=0.01 end - - r = run_reopt(model, p) - - #dispatch to load should be 10kW every other period = 4,380 * 10 - @test sum(r["HotThermalStorage"]["storage_to_load_series_mmbtu_per_hour"]) ≈ 149.45 atol=0.1 - @test sum(r["ColdThermalStorage"]["storage_to_load_series_ton"]) ≈ 12454.33 atol=0.1 - #size should be just over 10kW in gallons, accounting for efficiency losses and min SOC - @test r["HotThermalStorage"]["size_gal"] ≈ 233.0 atol=0.1 - @test r["ColdThermalStorage"]["size_gal"] ≈ 378.0 atol=0.1 - #No production from existing chiller, only absorption chiller, which is sized at ~5kW to manage electric demand charge & capital cost. - @test r["ExistingChiller"]["annual_thermal_production_tonhour"] ≈ 0.0 atol=0.1 - @test r["AbsorptionChiller"]["annual_thermal_production_tonhour"] ≈ 12464.15 atol=0.1 - @test r["AbsorptionChiller"]["size_ton"] ≈ 2.846 atol=0.01 - end - @testset "Heat and cool energy balance" begin - """ - - This is an "energy balance" type of test which tests the model formulation/math as opposed - to a specific scenario. This test is robust to changes in the model "MIPRELSTOP" or "MAXTIME" setting + @testset "Heat and cool energy balance" begin + """ - Validation to ensure that: - 1) The electric and absorption chillers are supplying 100% of the cooling thermal load plus losses from ColdThermalStorage - 2) The boiler and CHP are supplying the heating load plus additional absorption chiller thermal load - 3) The Cold and Hot TES efficiency (charge loss and thermal decay) are being tracked properly + This is an "energy balance" type of test which tests the model formulation/math as opposed + to a specific scenario. This test is robust to changes in the model "MIPRELSTOP" or "MAXTIME" setting - """ - input_data = JSON.parsefile("./scenarios/heat_cool_energy_balance_inputs.json") - s = Scenario(input_data) - inputs = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - results = run_reopt(m, inputs) - - # Annual cooling **thermal** energy load of CRB is based on annual cooling electric energy (from CRB models) and a conditional COP depending on the peak cooling thermal load - # When the user specifies inputs["ExistingChiller"]["cop"], this changes the **electric** consumption of the chiller to meet that cooling thermal load - crb_cop = REopt.get_existing_chiller_default_cop(; - existing_chiller_max_thermal_factor_on_peak_load=s.existing_chiller.max_thermal_factor_on_peak_load, - max_load_kw_thermal=maximum(s.cooling_load.loads_kw_thermal)) - cooling_thermal_load_tonhour_total = 1427329.0 * crb_cop / REopt.KWH_THERMAL_PER_TONHOUR # From CRB models, in heating_cooling_loads.jl, BuiltInCoolingLoad data for location (SanFrancisco Hospital) - cooling_electric_load_total_mod_cop_kwh = cooling_thermal_load_tonhour_total / inputs.s.existing_chiller.cop * REopt.KWH_THERMAL_PER_TONHOUR - - #Test cooling load results - @test round(cooling_thermal_load_tonhour_total, digits=1) ≈ results["CoolingLoad"]["annual_calculated_tonhour"] atol=1.0 - - # Convert fuel input to thermal using user input boiler efficiency - boiler_thermal_load_mmbtu_total = (671.40531 + 11570.9155) * input_data["ExistingBoiler"]["efficiency"] # From CRB models, in heating_cooling_loads.jl, BuiltInDomesticHotWaterLoad + BuiltInSpaceHeatingLoad data for location (SanFrancisco Hospital) - boiler_fuel_consumption_total_mod_efficiency = boiler_thermal_load_mmbtu_total / inputs.s.existing_boiler.efficiency - - # Cooling outputs - cooling_elecchl_tons_to_load_series = results["ExistingChiller"]["thermal_to_load_series_ton"] - cooling_elecchl_tons_to_tes_series = results["ExistingChiller"]["thermal_to_storage_series_ton"] - cooling_absorpchl_tons_to_load_series = results["AbsorptionChiller"]["thermal_to_load_series_ton"] - cooling_absorpchl_tons_to_tes_series = results["AbsorptionChiller"]["thermal_to_storage_series_ton"] - cooling_tonhour_to_load_tech_total = sum(cooling_elecchl_tons_to_load_series) + sum(cooling_absorpchl_tons_to_load_series) - cooling_tonhour_to_tes_total = sum(cooling_elecchl_tons_to_tes_series) + sum(cooling_absorpchl_tons_to_tes_series) - cooling_tes_tons_to_load_series = results["ColdThermalStorage"]["storage_to_load_series_ton"] - cooling_extra_from_tes_losses = cooling_tonhour_to_tes_total - sum(cooling_tes_tons_to_load_series) - tes_effic_with_decay = sum(cooling_tes_tons_to_load_series) / cooling_tonhour_to_tes_total - cooling_total_prod_from_techs = cooling_tonhour_to_load_tech_total + cooling_tonhour_to_tes_total - cooling_load_plus_tes_losses = cooling_thermal_load_tonhour_total + cooling_extra_from_tes_losses - - # Absorption Chiller electric consumption addition - absorpchl_total_cooling_produced_series_ton = cooling_absorpchl_tons_to_load_series .+ cooling_absorpchl_tons_to_tes_series - absorpchl_total_cooling_produced_ton_hour = sum(absorpchl_total_cooling_produced_series_ton) - absorpchl_electric_consumption_total_kwh = results["AbsorptionChiller"]["annual_electric_consumption_kwh"] - absorpchl_cop_elec = s.absorption_chiller.cop_electric - - # Check if sum of electric and absorption chillers equals cooling thermal total - @test tes_effic_with_decay < 0.97 - @test round(cooling_total_prod_from_techs, digits=0) ≈ cooling_load_plus_tes_losses atol=5.0 - @test round(absorpchl_electric_consumption_total_kwh, digits=0) ≈ absorpchl_total_cooling_produced_ton_hour * REopt.KWH_THERMAL_PER_TONHOUR / absorpchl_cop_elec atol=1.0 - - # Heating outputs - boiler_fuel_consumption_calculated = results["ExistingBoiler"]["annual_fuel_consumption_mmbtu"] - boiler_thermal_series = results["ExistingBoiler"]["thermal_production_series_mmbtu_per_hour"] - boiler_to_load_series = results["ExistingBoiler"]["thermal_to_load_series_mmbtu_per_hour"] - boiler_thermal_to_tes_series = results["ExistingBoiler"]["thermal_to_storage_series_mmbtu_per_hour"] - chp_thermal_to_load_series = results["CHP"]["thermal_to_load_series_mmbtu_per_hour"] - chp_thermal_to_tes_series = results["CHP"]["thermal_to_storage_series_mmbtu_per_hour"] - chp_thermal_to_waste_series = results["CHP"]["thermal_curtailed_series_mmbtu_per_hour"] - absorpchl_thermal_series = results["AbsorptionChiller"]["thermal_consumption_series_mmbtu_per_hour"] - hot_tes_mmbtu_per_hour_to_load_series = results["HotThermalStorage"]["storage_to_load_series_mmbtu_per_hour"] - tes_inflows = sum(chp_thermal_to_tes_series) + sum(boiler_thermal_to_tes_series) - total_chp_production = sum(chp_thermal_to_load_series) + sum(chp_thermal_to_waste_series) + sum(chp_thermal_to_tes_series) - tes_outflows = sum(hot_tes_mmbtu_per_hour_to_load_series) - total_thermal_expected = boiler_thermal_load_mmbtu_total + sum(chp_thermal_to_waste_series) + tes_inflows + sum(absorpchl_thermal_series) - boiler_fuel_expected = (total_thermal_expected - total_chp_production - tes_outflows) / inputs.s.existing_boiler.efficiency - total_thermal_mmbtu_calculated = sum(boiler_thermal_series) + total_chp_production + tes_outflows - - @test round(boiler_fuel_consumption_calculated, digits=0) ≈ boiler_fuel_expected atol=8.0 - @test round(total_thermal_mmbtu_calculated, digits=0) ≈ total_thermal_expected atol=8.0 - - # Test CHP["cooling_thermal_factor"] = 0.8, AbsorptionChiller["cop_thermal"] = 0.7 (from inputs .json) - absorpchl_heat_in_kwh = results["AbsorptionChiller"]["annual_thermal_consumption_mmbtu"] * REopt.KWH_PER_MMBTU - absorpchl_cool_out_kwh = results["AbsorptionChiller"]["annual_thermal_production_tonhour"] * REopt.KWH_THERMAL_PER_TONHOUR - absorpchl_cop = absorpchl_cool_out_kwh / absorpchl_heat_in_kwh - - @test round(absorpchl_cop, digits=5) ≈ 0.8*0.7 rtol=1e-4 - end + Validation to ensure that: + 1) The electric and absorption chillers are supplying 100% of the cooling thermal load plus losses from ColdThermalStorage + 2) The boiler and CHP are supplying the heating load plus additional absorption chiller thermal load + 3) The Cold and Hot TES efficiency (charge loss and thermal decay) are being tracked properly - @testset "Heating and cooling inputs + CHP defaults" begin - """ + """ + input_data = JSON.parsefile("./scenarios/heat_cool_energy_balance_inputs.json") + s = Scenario(input_data) + inputs = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + results = run_reopt(m, inputs) - This tests the various ways to input heating and cooling loads to make sure they are processed correctly. - There are no "new" technologies in this test, so heating is served by ExistingBoiler, and - cooling is served by ExistingCooler. Since this is just inputs processing tests, no optimization is needed. + # Annual cooling **thermal** energy load of CRB is based on annual cooling electric energy (from CRB models) and a conditional COP depending on the peak cooling thermal load + # When the user specifies inputs["ExistingChiller"]["cop"], this changes the **electric** consumption of the chiller to meet that cooling thermal load + crb_cop = REopt.get_existing_chiller_default_cop(; + existing_chiller_max_thermal_factor_on_peak_load=s.existing_chiller.max_thermal_factor_on_peak_load, + max_load_kw_thermal=maximum(s.cooling_load.loads_kw_thermal)) + cooling_thermal_load_tonhour_total = 1427329.0 * crb_cop / REopt.KWH_THERMAL_PER_TONHOUR # From CRB models, in heating_cooling_loads.jl, BuiltInCoolingLoad data for location (SanFrancisco Hospital) + cooling_electric_load_total_mod_cop_kwh = cooling_thermal_load_tonhour_total / inputs.s.existing_chiller.cop * REopt.KWH_THERMAL_PER_TONHOUR - """ - input_data = JSON.parsefile("./scenarios/heating_cooling_load_inputs.json") - s = Scenario(input_data) - inputs = REoptInputs(s) + #Test cooling load results + @test round(cooling_thermal_load_tonhour_total, digits=1) ≈ results["CoolingLoad"]["annual_calculated_tonhour"] atol=1.0 + + # Convert fuel input to thermal using user input boiler efficiency + boiler_thermal_load_mmbtu_total = (671.40531 + 11570.9155) * input_data["ExistingBoiler"]["efficiency"] # From CRB models, in heating_cooling_loads.jl, BuiltInDomesticHotWaterLoad + BuiltInSpaceHeatingLoad data for location (SanFrancisco Hospital) + boiler_fuel_consumption_total_mod_efficiency = boiler_thermal_load_mmbtu_total / inputs.s.existing_boiler.efficiency + + # Cooling outputs + cooling_elecchl_tons_to_load_series = results["ExistingChiller"]["thermal_to_load_series_ton"] + cooling_elecchl_tons_to_tes_series = results["ExistingChiller"]["thermal_to_storage_series_ton"] + cooling_absorpchl_tons_to_load_series = results["AbsorptionChiller"]["thermal_to_load_series_ton"] + cooling_absorpchl_tons_to_tes_series = results["AbsorptionChiller"]["thermal_to_storage_series_ton"] + cooling_tonhour_to_load_tech_total = sum(cooling_elecchl_tons_to_load_series) + sum(cooling_absorpchl_tons_to_load_series) + cooling_tonhour_to_tes_total = sum(cooling_elecchl_tons_to_tes_series) + sum(cooling_absorpchl_tons_to_tes_series) + cooling_tes_tons_to_load_series = results["ColdThermalStorage"]["storage_to_load_series_ton"] + cooling_extra_from_tes_losses = cooling_tonhour_to_tes_total - sum(cooling_tes_tons_to_load_series) + tes_effic_with_decay = sum(cooling_tes_tons_to_load_series) / cooling_tonhour_to_tes_total + cooling_total_prod_from_techs = cooling_tonhour_to_load_tech_total + cooling_tonhour_to_tes_total + cooling_load_plus_tes_losses = cooling_thermal_load_tonhour_total + cooling_extra_from_tes_losses + + # Absorption Chiller electric consumption addition + absorpchl_total_cooling_produced_series_ton = cooling_absorpchl_tons_to_load_series .+ cooling_absorpchl_tons_to_tes_series + absorpchl_total_cooling_produced_ton_hour = sum(absorpchl_total_cooling_produced_series_ton) + absorpchl_electric_consumption_total_kwh = results["AbsorptionChiller"]["annual_electric_consumption_kwh"] + absorpchl_cop_elec = s.absorption_chiller.cop_electric + + # Check if sum of electric and absorption chillers equals cooling thermal total + @test tes_effic_with_decay < 0.97 + @test round(cooling_total_prod_from_techs, digits=0) ≈ cooling_load_plus_tes_losses atol=5.0 + @test round(absorpchl_electric_consumption_total_kwh, digits=0) ≈ absorpchl_total_cooling_produced_ton_hour * REopt.KWH_THERMAL_PER_TONHOUR / absorpchl_cop_elec atol=1.0 + + # Heating outputs + boiler_fuel_consumption_calculated = results["ExistingBoiler"]["annual_fuel_consumption_mmbtu"] + boiler_thermal_series = results["ExistingBoiler"]["thermal_production_series_mmbtu_per_hour"] + boiler_to_load_series = results["ExistingBoiler"]["thermal_to_load_series_mmbtu_per_hour"] + boiler_thermal_to_tes_series = results["ExistingBoiler"]["thermal_to_storage_series_mmbtu_per_hour"] + chp_thermal_to_load_series = results["CHP"]["thermal_to_load_series_mmbtu_per_hour"] + chp_thermal_to_tes_series = results["CHP"]["thermal_to_storage_series_mmbtu_per_hour"] + chp_thermal_to_waste_series = results["CHP"]["thermal_curtailed_series_mmbtu_per_hour"] + absorpchl_thermal_series = results["AbsorptionChiller"]["thermal_consumption_series_mmbtu_per_hour"] + hot_tes_mmbtu_per_hour_to_load_series = results["HotThermalStorage"]["storage_to_load_series_mmbtu_per_hour"] + tes_inflows = sum(chp_thermal_to_tes_series) + sum(boiler_thermal_to_tes_series) + total_chp_production = sum(chp_thermal_to_load_series) + sum(chp_thermal_to_waste_series) + sum(chp_thermal_to_tes_series) + tes_outflows = sum(hot_tes_mmbtu_per_hour_to_load_series) + total_thermal_expected = boiler_thermal_load_mmbtu_total + sum(chp_thermal_to_waste_series) + tes_inflows + sum(absorpchl_thermal_series) + boiler_fuel_expected = (total_thermal_expected - total_chp_production - tes_outflows) / inputs.s.existing_boiler.efficiency + total_thermal_mmbtu_calculated = sum(boiler_thermal_series) + total_chp_production + tes_outflows + + @test round(boiler_fuel_consumption_calculated, digits=0) ≈ boiler_fuel_expected atol=8.0 + @test round(total_thermal_mmbtu_calculated, digits=0) ≈ total_thermal_expected atol=8.0 + + # Test CHP["cooling_thermal_factor"] = 0.8, AbsorptionChiller["cop_thermal"] = 0.7 (from inputs .json) + absorpchl_heat_in_kwh = results["AbsorptionChiller"]["annual_thermal_consumption_mmbtu"] * REopt.KWH_PER_MMBTU + absorpchl_cool_out_kwh = results["AbsorptionChiller"]["annual_thermal_production_tonhour"] * REopt.KWH_THERMAL_PER_TONHOUR + absorpchl_cop = absorpchl_cool_out_kwh / absorpchl_heat_in_kwh + + @test round(absorpchl_cop, digits=5) ≈ 0.8*0.7 rtol=1e-4 + end - # Heating load is input as **fuel**, not thermal - # If boiler efficiency is not input, we use REopt.EXISTING_BOILER_EFFICIENCY to convert fuel to thermal - expected_fuel = input_data["SpaceHeatingLoad"]["annual_mmbtu"] + input_data["DomesticHotWaterLoad"]["annual_mmbtu"] - total_boiler_heating_thermal_load_mmbtu = (sum(inputs.s.space_heating_load.loads_kw) + sum(inputs.s.dhw_load.loads_kw)) / REopt.KWH_PER_MMBTU - @test round(total_boiler_heating_thermal_load_mmbtu, digits=0) ≈ expected_fuel * REopt.EXISTING_BOILER_EFFICIENCY atol=1.0 - total_boiler_heating_fuel_load_mmbtu = total_boiler_heating_thermal_load_mmbtu / inputs.s.existing_boiler.efficiency - @test round(total_boiler_heating_fuel_load_mmbtu, digits=0) ≈ expected_fuel * REopt.EXISTING_BOILER_EFFICIENCY / inputs.s.existing_boiler.efficiency atol=1.0 - # If boiler efficiency is input, use that with annual or monthly mmbtu input to convert fuel to thermal - input_data["ExistingBoiler"]["efficiency"] = 0.72 - s = Scenario(input_data) - inputs = REoptInputs(s) - total_boiler_heating_thermal_load_mmbtu = (sum(inputs.s.space_heating_load.loads_kw) + sum(inputs.s.dhw_load.loads_kw)) / REopt.KWH_PER_MMBTU - @test round(total_boiler_heating_thermal_load_mmbtu, digits=0) ≈ expected_fuel * input_data["ExistingBoiler"]["efficiency"] atol=1.0 - total_boiler_heating_fuel_load_mmbtu = total_boiler_heating_thermal_load_mmbtu / inputs.s.existing_boiler.efficiency - @test round(total_boiler_heating_fuel_load_mmbtu, digits=0) ≈ expected_fuel * input_data["ExistingBoiler"]["efficiency"] / inputs.s.existing_boiler.efficiency atol=1.0 + @testset "Heating and cooling inputs + CHP defaults" begin + """ - # The expected cooling load is based on the default **fraction of total electric** profile for the doe_reference_name when annual_tonhour is NOT input - # the 320540.0 kWh number is from the default LargeOffice fraction of total electric profile applied to the Hospital default total electric profile - total_chiller_electric_consumption = sum(inputs.s.cooling_load.loads_kw_thermal) / inputs.s.existing_chiller.cop - @test round(total_chiller_electric_consumption, digits=0) ≈ 320544.0 atol=1.0 # loads_kw is **electric**, loads_kw_thermal is **thermal** + This tests the various ways to input heating and cooling loads to make sure they are processed correctly. + There are no "new" technologies in this test, so heating is served by ExistingBoiler, and + cooling is served by ExistingCooler. Since this is just inputs processing tests, no optimization is needed. - #Test CHP defaults use average fuel load, size class 2 for recip_engine - @test inputs.s.chp.min_allowable_kw ≈ 50.0 atol=0.01 - @test inputs.s.chp.om_cost_per_kwh ≈ 0.0235 atol=0.0001 + """ + input_data = JSON.parsefile("./scenarios/heating_cooling_load_inputs.json") + s = Scenario(input_data) + inputs = REoptInputs(s) - delete!(input_data, "SpaceHeatingLoad") - delete!(input_data, "DomesticHotWaterLoad") - annual_fraction_of_electric_load_input = 0.5 - input_data["CoolingLoad"] = Dict{Any, Any}("annual_fraction_of_electric_load" => annual_fraction_of_electric_load_input) + # Heating load is input as **fuel**, not thermal + # If boiler efficiency is not input, we use REopt.EXISTING_BOILER_EFFICIENCY to convert fuel to thermal + expected_fuel = input_data["SpaceHeatingLoad"]["annual_mmbtu"] + input_data["DomesticHotWaterLoad"]["annual_mmbtu"] + total_boiler_heating_thermal_load_mmbtu = (sum(inputs.s.space_heating_load.loads_kw) + sum(inputs.s.dhw_load.loads_kw)) / REopt.KWH_PER_MMBTU + @test round(total_boiler_heating_thermal_load_mmbtu, digits=0) ≈ expected_fuel * REopt.EXISTING_BOILER_EFFICIENCY atol=1.0 + total_boiler_heating_fuel_load_mmbtu = total_boiler_heating_thermal_load_mmbtu / inputs.s.existing_boiler.efficiency + @test round(total_boiler_heating_fuel_load_mmbtu, digits=0) ≈ expected_fuel * REopt.EXISTING_BOILER_EFFICIENCY / inputs.s.existing_boiler.efficiency atol=1.0 + # If boiler efficiency is input, use that with annual or monthly mmbtu input to convert fuel to thermal + input_data["ExistingBoiler"]["efficiency"] = 0.72 + s = Scenario(input_data) + inputs = REoptInputs(s) + total_boiler_heating_thermal_load_mmbtu = (sum(inputs.s.space_heating_load.loads_kw) + sum(inputs.s.dhw_load.loads_kw)) / REopt.KWH_PER_MMBTU + @test round(total_boiler_heating_thermal_load_mmbtu, digits=0) ≈ expected_fuel * input_data["ExistingBoiler"]["efficiency"] atol=1.0 + total_boiler_heating_fuel_load_mmbtu = total_boiler_heating_thermal_load_mmbtu / inputs.s.existing_boiler.efficiency + @test round(total_boiler_heating_fuel_load_mmbtu, digits=0) ≈ expected_fuel * input_data["ExistingBoiler"]["efficiency"] / inputs.s.existing_boiler.efficiency atol=1.0 + + # The expected cooling load is based on the default **fraction of total electric** profile for the doe_reference_name when annual_tonhour is NOT input + # the 320540.0 kWh number is from the default LargeOffice fraction of total electric profile applied to the Hospital default total electric profile + total_chiller_electric_consumption = sum(inputs.s.cooling_load.loads_kw_thermal) / inputs.s.existing_chiller.cop + @test round(total_chiller_electric_consumption, digits=0) ≈ 320544.0 atol=1.0 # loads_kw is **electric**, loads_kw_thermal is **thermal** + + #Test CHP defaults use average fuel load, size class 2 for recip_engine + @test inputs.s.chp.min_allowable_kw ≈ 50.0 atol=0.01 + @test inputs.s.chp.om_cost_per_kwh ≈ 0.0235 atol=0.0001 + + delete!(input_data, "SpaceHeatingLoad") + delete!(input_data, "DomesticHotWaterLoad") + annual_fraction_of_electric_load_input = 0.5 + input_data["CoolingLoad"] = Dict{Any, Any}("annual_fraction_of_electric_load" => annual_fraction_of_electric_load_input) + + s = Scenario(input_data) + inputs = REoptInputs(s) - s = Scenario(input_data) - inputs = REoptInputs(s) + expected_cooling_electricity = sum(inputs.s.electric_load.loads_kw) * annual_fraction_of_electric_load_input + total_chiller_electric_consumption = sum(inputs.s.cooling_load.loads_kw_thermal) / inputs.s.cooling_load.existing_chiller_cop + @test round(total_chiller_electric_consumption, digits=0) ≈ round(expected_cooling_electricity) atol=1.0 + @test round(total_chiller_electric_consumption, digits=0) ≈ 3876410 atol=1.0 - expected_cooling_electricity = sum(inputs.s.electric_load.loads_kw) * annual_fraction_of_electric_load_input - total_chiller_electric_consumption = sum(inputs.s.cooling_load.loads_kw_thermal) / inputs.s.cooling_load.existing_chiller_cop - @test round(total_chiller_electric_consumption, digits=0) ≈ round(expected_cooling_electricity) atol=1.0 - @test round(total_chiller_electric_consumption, digits=0) ≈ 3876410 atol=1.0 + # Check that without heating load or max_kw input, CHP.max_kw gets set based on peak electric load + @test inputs.s.chp.max_kw ≈ maximum(inputs.s.electric_load.loads_kw) atol=0.01 - # Check that without heating load or max_kw input, CHP.max_kw gets set based on peak electric load - @test inputs.s.chp.max_kw ≈ maximum(inputs.s.electric_load.loads_kw) atol=0.01 + input_data["SpaceHeatingLoad"] = Dict{Any, Any}("monthly_mmbtu" => repeat([1000.0], 12)) + input_data["DomesticHotWaterLoad"] = Dict{Any, Any}("monthly_mmbtu" => repeat([1000.0], 12)) + input_data["CoolingLoad"] = Dict{Any, Any}("monthly_fractions_of_electric_load" => repeat([0.1], 12)) - input_data["SpaceHeatingLoad"] = Dict{Any, Any}("monthly_mmbtu" => repeat([1000.0], 12)) - input_data["DomesticHotWaterLoad"] = Dict{Any, Any}("monthly_mmbtu" => repeat([1000.0], 12)) - input_data["CoolingLoad"] = Dict{Any, Any}("monthly_fractions_of_electric_load" => repeat([0.1], 12)) + s = Scenario(input_data) + inputs = REoptInputs(s) - s = Scenario(input_data) - inputs = REoptInputs(s) + #Test CHP defaults use average fuel load, size class changes to 3 + @test inputs.s.chp.min_allowable_kw ≈ 125.0 atol=0.1 + @test inputs.s.chp.om_cost_per_kwh ≈ 0.021 atol=0.0001 + #Update CHP prime_mover and test new defaults + input_data["CHP"]["prime_mover"] = "combustion_turbine" + input_data["CHP"]["size_class"] = 1 + # Set max_kw higher than peak electric load so min_allowable_kw doesn't get assigned to max_kw + input_data["CHP"]["max_kw"] = 2500.0 - #Test CHP defaults use average fuel load, size class changes to 3 - @test inputs.s.chp.min_allowable_kw ≈ 125.0 atol=0.1 - @test inputs.s.chp.om_cost_per_kwh ≈ 0.021 atol=0.0001 - #Update CHP prime_mover and test new defaults - input_data["CHP"]["prime_mover"] = "combustion_turbine" - input_data["CHP"]["size_class"] = 1 - # Set max_kw higher than peak electric load so min_allowable_kw doesn't get assigned to max_kw - input_data["CHP"]["max_kw"] = 2500.0 + s = Scenario(input_data) + inputs = REoptInputs(s) - s = Scenario(input_data) - inputs = REoptInputs(s) + @test inputs.s.chp.min_allowable_kw ≈ 2000.0 atol=0.1 + @test inputs.s.chp.om_cost_per_kwh ≈ 0.014499999999999999 atol=0.0001 - @test inputs.s.chp.min_allowable_kw ≈ 2000.0 atol=0.1 - @test inputs.s.chp.om_cost_per_kwh ≈ 0.014499999999999999 atol=0.0001 + total_heating_fuel_load_mmbtu = (sum(inputs.s.space_heating_load.loads_kw) + + sum(inputs.s.dhw_load.loads_kw)) / input_data["ExistingBoiler"]["efficiency"] / REopt.KWH_PER_MMBTU + @test round(total_heating_fuel_load_mmbtu, digits=0) ≈ 24000 atol=1.0 + total_chiller_electric_consumption = sum(inputs.s.cooling_load.loads_kw_thermal) / inputs.s.cooling_load.existing_chiller_cop + @test round(total_chiller_electric_consumption, digits=0) ≈ 775282 atol=1.0 - total_heating_fuel_load_mmbtu = (sum(inputs.s.space_heating_load.loads_kw) + - sum(inputs.s.dhw_load.loads_kw)) / input_data["ExistingBoiler"]["efficiency"] / REopt.KWH_PER_MMBTU - @test round(total_heating_fuel_load_mmbtu, digits=0) ≈ 24000 atol=1.0 - total_chiller_electric_consumption = sum(inputs.s.cooling_load.loads_kw_thermal) / inputs.s.cooling_load.existing_chiller_cop - @test round(total_chiller_electric_consumption, digits=0) ≈ 775282 atol=1.0 + input_data["SpaceHeatingLoad"] = Dict{Any, Any}("fuel_loads_mmbtu_per_hour" => repeat([0.5], 8760)) + input_data["DomesticHotWaterLoad"] = Dict{Any, Any}("fuel_loads_mmbtu_per_hour" => repeat([0.5], 8760)) + input_data["CoolingLoad"] = Dict{Any, Any}("per_time_step_fractions_of_electric_load" => repeat([0.01], 8760)) - input_data["SpaceHeatingLoad"] = Dict{Any, Any}("fuel_loads_mmbtu_per_hour" => repeat([0.5], 8760)) - input_data["DomesticHotWaterLoad"] = Dict{Any, Any}("fuel_loads_mmbtu_per_hour" => repeat([0.5], 8760)) - input_data["CoolingLoad"] = Dict{Any, Any}("per_time_step_fractions_of_electric_load" => repeat([0.01], 8760)) + s = Scenario(input_data) + inputs = REoptInputs(s) - s = Scenario(input_data) - inputs = REoptInputs(s) + total_heating_fuel_load_mmbtu = (sum(inputs.s.space_heating_load.loads_kw) + + sum(inputs.s.dhw_load.loads_kw)) / input_data["ExistingBoiler"]["efficiency"] / REopt.KWH_PER_MMBTU + @test round(total_heating_fuel_load_mmbtu, digits=0) ≈ 8760 atol=0.1 + @test round(sum(inputs.s.cooling_load.loads_kw_thermal) / inputs.s.cooling_load.existing_chiller_cop, digits=0) ≈ 77528.0 atol=1.0 - total_heating_fuel_load_mmbtu = (sum(inputs.s.space_heating_load.loads_kw) + - sum(inputs.s.dhw_load.loads_kw)) / input_data["ExistingBoiler"]["efficiency"] / REopt.KWH_PER_MMBTU - @test round(total_heating_fuel_load_mmbtu, digits=0) ≈ 8760 atol=0.1 - @test round(sum(inputs.s.cooling_load.loads_kw_thermal) / inputs.s.cooling_load.existing_chiller_cop, digits=0) ≈ 77528.0 atol=1.0 + # Make sure annual_tonhour is preserved with conditional existing_chiller_default logic, where guess-and-correct method is applied + input_data["SpaceHeatingLoad"] = Dict{Any, Any}() + input_data["DomesticHotWaterLoad"] = Dict{Any, Any}() + annual_tonhour = 25000.0 + input_data["CoolingLoad"] = Dict{Any, Any}("doe_reference_name" => "Hospital", + "annual_tonhour" => annual_tonhour) + input_data["ExistingChiller"] = Dict{Any, Any}() - # Make sure annual_tonhour is preserved with conditional existing_chiller_default logic, where guess-and-correct method is applied - input_data["SpaceHeatingLoad"] = Dict{Any, Any}() - input_data["DomesticHotWaterLoad"] = Dict{Any, Any}() - annual_tonhour = 25000.0 - input_data["CoolingLoad"] = Dict{Any, Any}("doe_reference_name" => "Hospital", - "annual_tonhour" => annual_tonhour) - input_data["ExistingChiller"] = Dict{Any, Any}() + s = Scenario(input_data) + inputs = REoptInputs(s) - s = Scenario(input_data) - inputs = REoptInputs(s) + @test round(sum(inputs.s.cooling_load.loads_kw_thermal) / REopt.KWH_THERMAL_PER_TONHOUR, digits=0) ≈ annual_tonhour atol=1.0 + + # Test for prime generator CHP inputs (electric only) + # First get CHP cost to compare later with prime generator + input_data["ElectricLoad"] = Dict("doe_reference_name" => "FlatLoad", + "annual_kwh" => 876000) + input_data["ElectricTariff"] = Dict("blended_annual_energy_rate" => 0.06, + "blended_annual_demand_rate" => 0.0 ) + s_chp = Scenario(input_data) + inputs_chp = REoptInputs(s) + installed_cost_chp = s_chp.chp.installed_cost_per_kw + + # Now get prime generator (electric only) + input_data["CHP"]["is_electric_only"] = true + delete!(input_data["CHP"], "max_kw") + s = Scenario(input_data) + inputs = REoptInputs(s) + # Costs are 75% of CHP + @test inputs.s.chp.installed_cost_per_kw ≈ (0.75*installed_cost_chp) atol=1.0 + @test inputs.s.chp.om_cost_per_kwh ≈ (0.75*0.0145) atol=0.0001 + @test inputs.s.chp.federal_itc_fraction ≈ 0.0 atol=0.0001 + # Thermal efficiency set to zero + @test inputs.s.chp.thermal_efficiency_full_load == 0 + @test inputs.s.chp.thermal_efficiency_half_load == 0 + # Max size based on electric load, not heating load + @test inputs.s.chp.max_kw ≈ maximum(inputs.s.electric_load.loads_kw) atol=0.001 + end - @test round(sum(inputs.s.cooling_load.loads_kw_thermal) / REopt.KWH_THERMAL_PER_TONHOUR, digits=0) ≈ annual_tonhour atol=1.0 - - # Test for prime generator CHP inputs (electric only) - # First get CHP cost to compare later with prime generator - input_data["ElectricLoad"] = Dict("doe_reference_name" => "FlatLoad", - "annual_kwh" => 876000) - input_data["ElectricTariff"] = Dict("blended_annual_energy_rate" => 0.06, - "blended_annual_demand_rate" => 0.0 ) - s_chp = Scenario(input_data) - inputs_chp = REoptInputs(s) - installed_cost_chp = s_chp.chp.installed_cost_per_kw - - # Now get prime generator (electric only) - input_data["CHP"]["is_electric_only"] = true - delete!(input_data["CHP"], "max_kw") - s = Scenario(input_data) - inputs = REoptInputs(s) - # Costs are 75% of CHP - @test inputs.s.chp.installed_cost_per_kw ≈ (0.75*installed_cost_chp) atol=1.0 - @test inputs.s.chp.om_cost_per_kwh ≈ (0.75*0.0145) atol=0.0001 - @test inputs.s.chp.federal_itc_fraction ≈ 0.0 atol=0.0001 - # Thermal efficiency set to zero - @test inputs.s.chp.thermal_efficiency_full_load == 0 - @test inputs.s.chp.thermal_efficiency_half_load == 0 - # Max size based on electric load, not heating load - @test inputs.s.chp.max_kw ≈ maximum(inputs.s.electric_load.loads_kw) atol=0.001 - end + @testset "Hybrid/blended heating and cooling loads" begin + """ - @testset "Hybrid/blended heating and cooling loads" begin - """ + This tests the hybrid/campus loads for heating and cooling, where a blended_doe_reference_names + and blended_doe_reference_percents are given and blended to create an aggregate load profile - This tests the hybrid/campus loads for heating and cooling, where a blended_doe_reference_names - and blended_doe_reference_percents are given and blended to create an aggregate load profile + """ + input_data = JSON.parsefile("./scenarios/hybrid_loads_heating_cooling_inputs.json") - """ - input_data = JSON.parsefile("./scenarios/hybrid_loads_heating_cooling_inputs.json") + hospital_fraction = 0.75 + hotel_fraction = 1.0 - hospital_fraction - hospital_fraction = 0.75 - hotel_fraction = 1.0 - hospital_fraction + # Hospital only + input_data["ElectricLoad"]["annual_kwh"] = hospital_fraction * 100 + input_data["ElectricLoad"]["doe_reference_name"] = "Hospital" + input_data["SpaceHeatingLoad"]["annual_mmbtu"] = hospital_fraction * 100 + input_data["SpaceHeatingLoad"]["doe_reference_name"] = "Hospital" + input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = hospital_fraction * 100 + input_data["DomesticHotWaterLoad"]["doe_reference_name"] = "Hospital" + input_data["CoolingLoad"]["doe_reference_name"] = "Hospital" - # Hospital only - input_data["ElectricLoad"]["annual_kwh"] = hospital_fraction * 100 - input_data["ElectricLoad"]["doe_reference_name"] = "Hospital" - input_data["SpaceHeatingLoad"]["annual_mmbtu"] = hospital_fraction * 100 - input_data["SpaceHeatingLoad"]["doe_reference_name"] = "Hospital" - input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = hospital_fraction * 100 - input_data["DomesticHotWaterLoad"]["doe_reference_name"] = "Hospital" - input_data["CoolingLoad"]["doe_reference_name"] = "Hospital" + s = Scenario(input_data) + inputs = REoptInputs(s) - s = Scenario(input_data) - inputs = REoptInputs(s) + elec_hospital = inputs.s.electric_load.loads_kw + space_hospital = inputs.s.space_heating_load.loads_kw # thermal + dhw_hospital = inputs.s.dhw_load.loads_kw # thermal + cooling_hospital = inputs.s.cooling_load.loads_kw_thermal # thermal + cooling_elec_frac_of_total_hospital = cooling_hospital / inputs.s.cooling_load.existing_chiller_cop ./ elec_hospital + + # Hotel only + input_data["ElectricLoad"]["annual_kwh"] = hotel_fraction * 100 + input_data["ElectricLoad"]["doe_reference_name"] = "LargeHotel" + input_data["SpaceHeatingLoad"]["annual_mmbtu"] = hotel_fraction * 100 + input_data["SpaceHeatingLoad"]["doe_reference_name"] = "LargeHotel" + input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = hotel_fraction * 100 + input_data["DomesticHotWaterLoad"]["doe_reference_name"] = "LargeHotel" + input_data["CoolingLoad"]["doe_reference_name"] = "LargeHotel" + + s = Scenario(input_data) + inputs = REoptInputs(s) - elec_hospital = inputs.s.electric_load.loads_kw - space_hospital = inputs.s.space_heating_load.loads_kw # thermal - dhw_hospital = inputs.s.dhw_load.loads_kw # thermal - cooling_hospital = inputs.s.cooling_load.loads_kw_thermal # thermal - cooling_elec_frac_of_total_hospital = cooling_hospital / inputs.s.cooling_load.existing_chiller_cop ./ elec_hospital - - # Hotel only - input_data["ElectricLoad"]["annual_kwh"] = hotel_fraction * 100 - input_data["ElectricLoad"]["doe_reference_name"] = "LargeHotel" - input_data["SpaceHeatingLoad"]["annual_mmbtu"] = hotel_fraction * 100 - input_data["SpaceHeatingLoad"]["doe_reference_name"] = "LargeHotel" - input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = hotel_fraction * 100 - input_data["DomesticHotWaterLoad"]["doe_reference_name"] = "LargeHotel" - input_data["CoolingLoad"]["doe_reference_name"] = "LargeHotel" + elec_hotel = inputs.s.electric_load.loads_kw + space_hotel = inputs.s.space_heating_load.loads_kw # thermal + dhw_hotel = inputs.s.dhw_load.loads_kw # thermal + cooling_hotel = inputs.s.cooling_load.loads_kw_thermal # thermal + cooling_elec_frac_of_total_hotel = cooling_hotel / inputs.s.cooling_load.existing_chiller_cop ./ elec_hotel - s = Scenario(input_data) - inputs = REoptInputs(s) + # Hybrid mix of hospital and hotel + # Remove previous assignment of doe_reference_name + for load in ["ElectricLoad", "SpaceHeatingLoad", "DomesticHotWaterLoad", "CoolingLoad"] + delete!(input_data[load], "doe_reference_name") + end + annual_energy = (hospital_fraction + hotel_fraction) * 100 + building_list = ["Hospital", "LargeHotel"] + percent_share_list = [hospital_fraction, hotel_fraction] + input_data["ElectricLoad"]["annual_kwh"] = annual_energy + input_data["ElectricLoad"]["blended_doe_reference_names"] = building_list + input_data["ElectricLoad"]["blended_doe_reference_percents"] = percent_share_list + + input_data["SpaceHeatingLoad"]["annual_mmbtu"] = annual_energy + input_data["SpaceHeatingLoad"]["blended_doe_reference_names"] = building_list + input_data["SpaceHeatingLoad"]["blended_doe_reference_percents"] = percent_share_list + input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = annual_energy + input_data["DomesticHotWaterLoad"]["blended_doe_reference_names"] = building_list + input_data["DomesticHotWaterLoad"]["blended_doe_reference_percents"] = percent_share_list + + # CoolingLoad now use a weighted fraction of total electric profile if no annual_tonhour is provided + input_data["CoolingLoad"]["blended_doe_reference_names"] = building_list + input_data["CoolingLoad"]["blended_doe_reference_percents"] = percent_share_list + + s = Scenario(input_data) + inputs = REoptInputs(s) - elec_hotel = inputs.s.electric_load.loads_kw - space_hotel = inputs.s.space_heating_load.loads_kw # thermal - dhw_hotel = inputs.s.dhw_load.loads_kw # thermal - cooling_hotel = inputs.s.cooling_load.loads_kw_thermal # thermal - cooling_elec_frac_of_total_hotel = cooling_hotel / inputs.s.cooling_load.existing_chiller_cop ./ elec_hotel + elec_hybrid = inputs.s.electric_load.loads_kw + space_hybrid = inputs.s.space_heating_load.loads_kw # thermal + dhw_hybrid = inputs.s.dhw_load.loads_kw # thermal + cooling_hybrid = inputs.s.cooling_load.loads_kw_thermal # thermal + cooling_elec_hybrid = cooling_hybrid / inputs.s.cooling_load.existing_chiller_cop # electric + cooling_elec_frac_of_total_hybrid = cooling_hybrid / inputs.s.cooling_load.existing_chiller_cop ./ elec_hybrid + + # Check that the combined/hybrid load is the same as the sum of the individual loads in each time_step + + @test round(sum(elec_hybrid .- (elec_hospital .+ elec_hotel)), digits=1) ≈ 0.0 atol=0.1 + @test round(sum(space_hybrid .- (space_hospital .+ space_hotel)), digits=1) ≈ 0.0 atol=0.1 + @test round(sum(dhw_hybrid .- (dhw_hospital .+ dhw_hotel)), digits=1) ≈ 0.0 atol=0.1 + # Check that the cooling load is the weighted average of the default CRB fraction of total electric profiles + cooling_electric_hybrid_expected = elec_hybrid .* (cooling_elec_frac_of_total_hospital * hospital_fraction .+ + cooling_elec_frac_of_total_hotel * hotel_fraction) + @test round(sum(cooling_electric_hybrid_expected .- cooling_elec_hybrid), digits=1) ≈ 0.0 atol=0.1 + end - # Hybrid mix of hospital and hotel - # Remove previous assignment of doe_reference_name - for load in ["ElectricLoad", "SpaceHeatingLoad", "DomesticHotWaterLoad", "CoolingLoad"] - delete!(input_data[load], "doe_reference_name") + @testset "Boiler (new) test" begin + input_data = JSON.parsefile("scenarios/boiler_new_inputs.json") + input_data["SpaceHeatingLoad"]["annual_mmbtu"] = 0.5 * 8760 + input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = 0.5 * 8760 + s = Scenario(input_data) + inputs = REoptInputs(s) + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt([m1,m2], inputs) + + # BAU boiler loads + load_thermal_mmbtu_bau = sum(s.space_heating_load.loads_kw + s.dhw_load.loads_kw) / REopt.KWH_PER_MMBTU + existing_boiler_mmbtu = sum(results["ExistingBoiler"]["thermal_production_series_mmbtu_per_hour"]) + boiler_thermal_mmbtu = sum(results["Boiler"]["thermal_production_series_mmbtu_per_hour"]) + + # Used monthly fuel cost for ExistingBoiler and Boiler, where ExistingBoiler has lower fuel cost only + # in February (28 days), so expect ExistingBoiler to serve the flat/constant load 28 days of the year + @test existing_boiler_mmbtu ≈ load_thermal_mmbtu_bau * 28 / 365 atol=0.00001 + @test boiler_thermal_mmbtu ≈ load_thermal_mmbtu_bau - existing_boiler_mmbtu atol=0.00001 end - annual_energy = (hospital_fraction + hotel_fraction) * 100 - building_list = ["Hospital", "LargeHotel"] - percent_share_list = [hospital_fraction, hotel_fraction] - input_data["ElectricLoad"]["annual_kwh"] = annual_energy - input_data["ElectricLoad"]["blended_doe_reference_names"] = building_list - input_data["ElectricLoad"]["blended_doe_reference_percents"] = percent_share_list - - input_data["SpaceHeatingLoad"]["annual_mmbtu"] = annual_energy - input_data["SpaceHeatingLoad"]["blended_doe_reference_names"] = building_list - input_data["SpaceHeatingLoad"]["blended_doe_reference_percents"] = percent_share_list - input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = annual_energy - input_data["DomesticHotWaterLoad"]["blended_doe_reference_names"] = building_list - input_data["DomesticHotWaterLoad"]["blended_doe_reference_percents"] = percent_share_list - - # CoolingLoad now use a weighted fraction of total electric profile if no annual_tonhour is provided - input_data["CoolingLoad"]["blended_doe_reference_names"] = building_list - input_data["CoolingLoad"]["blended_doe_reference_percents"] = percent_share_list - s = Scenario(input_data) - inputs = REoptInputs(s) + @testset "OffGrid" begin + ## Scenario 1: Solar, Storage, Fixed Generator + post_name = "off_grid.json" + post = JSON.parsefile("./scenarios/$post_name") + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt(m, post) + scen = Scenario(post) + + # Test default values + @test scen.electric_utility.outage_start_time_step ≈ 1 + @test scen.electric_utility.outage_end_time_step ≈ 8760 * scen.settings.time_steps_per_hour + @test scen.storage.attr["ElectricStorage"].soc_init_fraction ≈ 1 + @test scen.storage.attr["ElectricStorage"].can_grid_charge ≈ false + @test scen.generator.fuel_avail_gal ≈ 1.0e9 + @test scen.generator.min_turn_down_fraction ≈ 0.15 + @test sum(scen.electric_load.loads_kw) - sum(scen.electric_load.critical_loads_kw) ≈ 0 # critical loads should equal loads_kw + @test scen.financial.microgrid_upgrade_cost_fraction ≈ 0 + + # Test outputs + @test r["ElectricUtility"]["annual_energy_supplied_kwh"] ≈ 0 # no interaction with grid + @test r["Financial"]["lifecycle_offgrid_other_capital_costs"] ≈ 2617.092 atol=0.01 # Check straight line depreciation calc + @test sum(r["ElectricLoad"]["offgrid_annual_oper_res_provided_series_kwh"]) >= sum(r["ElectricLoad"]["offgrid_annual_oper_res_required_series_kwh"]) # OR provided >= required + @test r["ElectricLoad"]["offgrid_load_met_fraction"] >= scen.electric_load.min_load_met_annual_fraction + @test r["PV"]["size_kw"] ≈ 5050.0 + f = r["Financial"] + @test f["lifecycle_generation_tech_capital_costs"] + f["lifecycle_storage_capital_costs"] + f["lifecycle_om_costs_after_tax"] + + f["lifecycle_fuel_costs_after_tax"] + f["lifecycle_chp_standby_cost_after_tax"] + f["lifecycle_elecbill_after_tax"] + + f["lifecycle_offgrid_other_annual_costs_after_tax"] + f["lifecycle_offgrid_other_capital_costs"] + + f["lifecycle_outage_cost"] + f["lifecycle_MG_upgrade_and_fuel_cost"] - + f["lifecycle_production_incentive_after_tax"] ≈ f["lcc"] atol=1.0 + + ## Scenario 2: Fixed Generator only + post["ElectricLoad"]["annual_kwh"] = 100.0 + post["PV"]["max_kw"] = 0.0 + post["ElectricStorage"]["max_kw"] = 0.0 + post["Generator"]["min_turn_down_fraction"] = 0.0 - elec_hybrid = inputs.s.electric_load.loads_kw - space_hybrid = inputs.s.space_heating_load.loads_kw # thermal - dhw_hybrid = inputs.s.dhw_load.loads_kw # thermal - cooling_hybrid = inputs.s.cooling_load.loads_kw_thermal # thermal - cooling_elec_hybrid = cooling_hybrid / inputs.s.cooling_load.existing_chiller_cop # electric - cooling_elec_frac_of_total_hybrid = cooling_hybrid / inputs.s.cooling_load.existing_chiller_cop ./ elec_hybrid - - # Check that the combined/hybrid load is the same as the sum of the individual loads in each time_step - - @test round(sum(elec_hybrid .- (elec_hospital .+ elec_hotel)), digits=1) ≈ 0.0 atol=0.1 - @test round(sum(space_hybrid .- (space_hospital .+ space_hotel)), digits=1) ≈ 0.0 atol=0.1 - @test round(sum(dhw_hybrid .- (dhw_hospital .+ dhw_hotel)), digits=1) ≈ 0.0 atol=0.1 - # Check that the cooling load is the weighted average of the default CRB fraction of total electric profiles - cooling_electric_hybrid_expected = elec_hybrid .* (cooling_elec_frac_of_total_hospital * hospital_fraction .+ - cooling_elec_frac_of_total_hotel * hotel_fraction) - @test round(sum(cooling_electric_hybrid_expected .- cooling_elec_hybrid), digits=1) ≈ 0.0 atol=0.1 - end + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt(m, post) + + # Test generator outputs + @test r["Generator"]["annual_fuel_consumption_gal"] ≈ 7.52 # 99 kWh * 0.076 gal/kWh + @test r["Generator"]["annual_energy_produced_kwh"] ≈ 99.0 + @test r["Generator"]["year_one_fuel_cost_before_tax"] ≈ 22.57 + @test r["Generator"]["lifecycle_fuel_cost_after_tax"] ≈ 205.35 + @test r["Financial"]["initial_capital_costs"] ≈ 100*(700) + @test r["Financial"]["lifecycle_capital_costs"] ≈ 100*(700+324.235442*(1-0.26)) atol=0.1 # replacement in yr 10 is considered tax deductible + @test r["Financial"]["initial_capital_costs_after_incentives"] ≈ 700*100 atol=0.1 + @test r["Financial"]["replacements_future_cost_after_tax"] ≈ 700*100 + @test r["Financial"]["replacements_present_cost_after_tax"] ≈ 100*(324.235442*(1-0.26)) atol=0.1 + + ## Scenario 3: Fixed Generator that can meet load, but cannot meet load operating reserve requirement + ## This test ensures the load operating reserve requirement is being enforced + post["ElectricLoad"]["doe_reference_name"] = "FlatLoad" + post["ElectricLoad"]["annual_kwh"] = 876000.0 # requires 100 kW gen + post["ElectricLoad"]["min_load_met_annual_fraction"] = 1.0 # requires additional generator capacity + post["PV"]["max_kw"] = 0.0 + post["ElectricStorage"]["max_kw"] = 0.0 + post["Generator"]["min_turn_down_fraction"] = 0.0 - @testset "Boiler (new) test" begin - input_data = JSON.parsefile("scenarios/boiler_new_inputs.json") - input_data["SpaceHeatingLoad"]["annual_mmbtu"] = 0.5 * 8760 - input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = 0.5 * 8760 - s = Scenario(input_data) - inputs = REoptInputs(s) - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt([m1,m2], inputs) - - # BAU boiler loads - load_thermal_mmbtu_bau = sum(s.space_heating_load.loads_kw + s.dhw_load.loads_kw) / REopt.KWH_PER_MMBTU - existing_boiler_mmbtu = sum(results["ExistingBoiler"]["thermal_production_series_mmbtu_per_hour"]) - boiler_thermal_mmbtu = sum(results["Boiler"]["thermal_production_series_mmbtu_per_hour"]) - - # Used monthly fuel cost for ExistingBoiler and Boiler, where ExistingBoiler has lower fuel cost only - # in February (28 days), so expect ExistingBoiler to serve the flat/constant load 28 days of the year - @test existing_boiler_mmbtu ≈ load_thermal_mmbtu_bau * 28 / 365 atol=0.00001 - @test boiler_thermal_mmbtu ≈ load_thermal_mmbtu_bau - existing_boiler_mmbtu atol=0.00001 - end + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt(m, post) - @testset "OffGrid" begin - ## Scenario 1: Solar, Storage, Fixed Generator - post_name = "off_grid.json" - post = JSON.parsefile("./scenarios/$post_name") - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt(m, post) - scen = Scenario(post) - - # Test default values - @test scen.electric_utility.outage_start_time_step ≈ 1 - @test scen.electric_utility.outage_end_time_step ≈ 8760 * scen.settings.time_steps_per_hour - @test scen.storage.attr["ElectricStorage"].soc_init_fraction ≈ 1 - @test scen.storage.attr["ElectricStorage"].can_grid_charge ≈ false - @test scen.generator.fuel_avail_gal ≈ 1.0e9 - @test scen.generator.min_turn_down_fraction ≈ 0.15 - @test sum(scen.electric_load.loads_kw) - sum(scen.electric_load.critical_loads_kw) ≈ 0 # critical loads should equal loads_kw - @test scen.financial.microgrid_upgrade_cost_fraction ≈ 0 - - # Test outputs - @test r["ElectricUtility"]["annual_energy_supplied_kwh"] ≈ 0 # no interaction with grid - @test r["Financial"]["lifecycle_offgrid_other_capital_costs"] ≈ 2617.092 atol=0.01 # Check straight line depreciation calc - @test sum(r["ElectricLoad"]["offgrid_annual_oper_res_provided_series_kwh"]) >= sum(r["ElectricLoad"]["offgrid_annual_oper_res_required_series_kwh"]) # OR provided >= required - @test r["ElectricLoad"]["offgrid_load_met_fraction"] >= scen.electric_load.min_load_met_annual_fraction - @test r["PV"]["size_kw"] ≈ 5050.0 - f = r["Financial"] - @test f["lifecycle_generation_tech_capital_costs"] + f["lifecycle_storage_capital_costs"] + f["lifecycle_om_costs_after_tax"] + - f["lifecycle_fuel_costs_after_tax"] + f["lifecycle_chp_standby_cost_after_tax"] + f["lifecycle_elecbill_after_tax"] + - f["lifecycle_offgrid_other_annual_costs_after_tax"] + f["lifecycle_offgrid_other_capital_costs"] + - f["lifecycle_outage_cost"] + f["lifecycle_MG_upgrade_and_fuel_cost"] - - f["lifecycle_production_incentive_after_tax"] ≈ f["lcc"] atol=1.0 - - ## Scenario 2: Fixed Generator only - post["ElectricLoad"]["annual_kwh"] = 100.0 - post["PV"]["max_kw"] = 0.0 - post["ElectricStorage"]["max_kw"] = 0.0 - post["Generator"]["min_turn_down_fraction"] = 0.0 - - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt(m, post) - - # Test generator outputs - @test r["Generator"]["annual_fuel_consumption_gal"] ≈ 7.52 # 99 kWh * 0.076 gal/kWh - @test r["Generator"]["annual_energy_produced_kwh"] ≈ 99.0 - @test r["Generator"]["year_one_fuel_cost_before_tax"] ≈ 22.57 - @test r["Generator"]["lifecycle_fuel_cost_after_tax"] ≈ 205.35 - @test r["Financial"]["initial_capital_costs"] ≈ 100*(700) - @test r["Financial"]["lifecycle_capital_costs"] ≈ 100*(700+324.235442*(1-0.26)) atol=0.1 # replacement in yr 10 is considered tax deductible - @test r["Financial"]["initial_capital_costs_after_incentives"] ≈ 700*100 atol=0.1 - @test r["Financial"]["replacements_future_cost_after_tax"] ≈ 700*100 - @test r["Financial"]["replacements_present_cost_after_tax"] ≈ 100*(324.235442*(1-0.26)) atol=0.1 - - ## Scenario 3: Fixed Generator that can meet load, but cannot meet load operating reserve requirement - ## This test ensures the load operating reserve requirement is being enforced - post["ElectricLoad"]["doe_reference_name"] = "FlatLoad" - post["ElectricLoad"]["annual_kwh"] = 876000.0 # requires 100 kW gen - post["ElectricLoad"]["min_load_met_annual_fraction"] = 1.0 # requires additional generator capacity - post["PV"]["max_kw"] = 0.0 - post["ElectricStorage"]["max_kw"] = 0.0 - post["Generator"]["min_turn_down_fraction"] = 0.0 - - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt(m, post) - - # Test generator outputs - @test typeof(r) == Model # this is true when the model is infeasible - - ### Scenario 3: Indonesia. Wind (custom prod) and Generator only - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) - post_name = "wind_intl_offgrid.json" - post = JSON.parsefile("./scenarios/$post_name") - post["ElectricLoad"]["loads_kw"] = [10.0 for i in range(1,8760)] - scen = Scenario(post) - post["Wind"]["production_factor_series"] = reduce(vcat, readdlm("./data/example_wind_prod_factor_kw.csv", '\n', header=true)[1]) + # Test generator outputs + @test typeof(r) == Model # this is true when the model is infeasible - results = run_reopt(m, post) - - @test results["ElectricLoad"]["offgrid_load_met_fraction"] >= scen.electric_load.min_load_met_annual_fraction - f = results["Financial"] - @test f["lifecycle_generation_tech_capital_costs"] + f["lifecycle_storage_capital_costs"] + f["lifecycle_om_costs_after_tax"] + - f["lifecycle_fuel_costs_after_tax"] + f["lifecycle_chp_standby_cost_after_tax"] + f["lifecycle_elecbill_after_tax"] + - f["lifecycle_offgrid_other_annual_costs_after_tax"] + f["lifecycle_offgrid_other_capital_costs"] + - f["lifecycle_outage_cost"] + f["lifecycle_MG_upgrade_and_fuel_cost"] - - f["lifecycle_production_incentive_after_tax"] ≈ f["lcc"] atol=1.0 - - windOR = sum(results["Wind"]["electric_to_load_series_kw"] * post["Wind"]["operating_reserve_required_fraction"]) - loadOR = sum(post["ElectricLoad"]["loads_kw"] * scen.electric_load.operating_reserve_required_fraction) - @test sum(results["ElectricLoad"]["offgrid_annual_oper_res_required_series_kwh"]) ≈ loadOR + windOR atol=1.0 + ### Scenario 3: Indonesia. Wind (custom prod) and Generator only + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) + post_name = "wind_intl_offgrid.json" + post = JSON.parsefile("./scenarios/$post_name") + post["ElectricLoad"]["loads_kw"] = [10.0 for i in range(1,8760)] + scen = Scenario(post) + post["Wind"]["production_factor_series"] = reduce(vcat, readdlm("./data/example_wind_prod_factor_kw.csv", '\n', header=true)[1]) - end + results = run_reopt(m, post) + + @test results["ElectricLoad"]["offgrid_load_met_fraction"] >= scen.electric_load.min_load_met_annual_fraction + f = results["Financial"] + @test f["lifecycle_generation_tech_capital_costs"] + f["lifecycle_storage_capital_costs"] + f["lifecycle_om_costs_after_tax"] + + f["lifecycle_fuel_costs_after_tax"] + f["lifecycle_chp_standby_cost_after_tax"] + f["lifecycle_elecbill_after_tax"] + + f["lifecycle_offgrid_other_annual_costs_after_tax"] + f["lifecycle_offgrid_other_capital_costs"] + + f["lifecycle_outage_cost"] + f["lifecycle_MG_upgrade_and_fuel_cost"] - + f["lifecycle_production_incentive_after_tax"] ≈ f["lcc"] atol=1.0 + + windOR = sum(results["Wind"]["electric_to_load_series_kw"] * post["Wind"]["operating_reserve_required_fraction"]) + loadOR = sum(post["ElectricLoad"]["loads_kw"] * scen.electric_load.operating_reserve_required_fraction) + @test sum(results["ElectricLoad"]["offgrid_annual_oper_res_required_series_kwh"]) ≈ loadOR + windOR atol=1.0 - @testset "GHP" begin - """ + end - This tests multiple unique aspects of GHP: - 1. REopt takes the output data of GhpGhx, creates multiple GHP options, and chooses the expected one - 2. GHP with heating and cooling "..efficiency_thermal_factors" reduces the net thermal load - 3. GHP serves only the SpaceHeatingLoad by default unless it is allowed to serve DHW - 4. GHP serves all the Cooling load - 5. Input of a custom COP map for GHP and check the GHP performance to make sure it's using it correctly - 6. Hybrid GHP capability functions as expected + @testset "GHP" begin + """ - """ - # Load base inputs - input_data = JSON.parsefile("scenarios/ghp_inputs.json") - - # Modify ["GHP"]["ghpghx_inputs"] for running GhpGhx.jl - # Heat pump performance maps - cop_map_mat_header = readdlm("scenarios/ghp_cop_map_custom.csv", ',', header=true) - data = cop_map_mat_header[1] - headers = cop_map_mat_header[2] - # Generate a "records" style dictionary from the - cop_map_list = [] - for i in axes(data,1) - dict_record = Dict(name=>data[i, col] for (col, name) in enumerate(headers)) - push!(cop_map_list, dict_record) + This tests multiple unique aspects of GHP: + 1. REopt takes the output data of GhpGhx, creates multiple GHP options, and chooses the expected one + 2. GHP with heating and cooling "..efficiency_thermal_factors" reduces the net thermal load + 3. GHP serves only the SpaceHeatingLoad by default unless it is allowed to serve DHW + 4. GHP serves all the Cooling load + 5. Input of a custom COP map for GHP and check the GHP performance to make sure it's using it correctly + 6. Hybrid GHP capability functions as expected + + """ + # Load base inputs + input_data = JSON.parsefile("scenarios/ghp_inputs.json") + + # Modify ["GHP"]["ghpghx_inputs"] for running GhpGhx.jl + # Heat pump performance maps + cop_map_mat_header = readdlm("scenarios/ghp_cop_map_custom.csv", ',', header=true) + data = cop_map_mat_header[1] + headers = cop_map_mat_header[2] + # Generate a "records" style dictionary from the + cop_map_list = [] + for i in axes(data,1) + dict_record = Dict(name=>data[i, col] for (col, name) in enumerate(headers)) + push!(cop_map_list, dict_record) + end + input_data["GHP"]["ghpghx_inputs"][1]["cop_map_eft_heating_cooling"] = cop_map_list + + # Due to GhpGhx not being a registered package (no OSI-approved license), + # the registered REopt package cannot have GhpGhx as a "normal" dependency; + # Therefore, we only use a "ghpghx_response" (the output of GhpGhx) as an + # input to REopt to avoid GhpGhx module calls + response_1 = JSON.parsefile("scenarios/ghpghx_response.json") + response_2 = deepcopy(response_1) + # Reduce the electric consumption of response 2 which should then be the chosen system + response_2["outputs"]["yearly_total_electric_consumption_series_kw"] *= 0.5 + input_data["GHP"]["ghpghx_responses"] = [response_1, response_2] + + # Heating load + input_data["SpaceHeatingLoad"]["doe_reference_name"] = "Hospital" + input_data["SpaceHeatingLoad"]["monthly_mmbtu"] = fill(1000.0, 12) + input_data["SpaceHeatingLoad"]["monthly_mmbtu"][1] = 500.0 + input_data["SpaceHeatingLoad"]["monthly_mmbtu"][end] = 1500.0 + + # Call REopt + s = Scenario(input_data) + inputs = REoptInputs(s) + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + results = run_reopt([m1,m2], inputs) + + ghp_option_chosen = results["GHP"]["ghp_option_chosen"] + @test ghp_option_chosen == 2 + + # Test GHP heating and cooling load reduced + hot_load_reduced_mmbtu = sum(results["GHP"]["space_heating_thermal_load_reduction_with_ghp_mmbtu_per_hour"]) + cold_load_reduced_tonhour = sum(results["GHP"]["cooling_thermal_load_reduction_with_ghp_ton"]) + @test hot_load_reduced_mmbtu ≈ 1440.00 atol=0.1 + @test cold_load_reduced_tonhour ≈ 761382.78 atol=0.1 + + # Test GHP serving space heating with VAV thermal efficiency improvements + heating_served_mmbtu = sum(s.ghp_option_list[ghp_option_chosen].heating_thermal_kw / REopt.KWH_PER_MMBTU) + expected_heating_served_mmbtu = 12000 * 0.8 * 0.85 # (fuel_mmbtu * boiler_effic * space_heating_efficiency_thermal_factor) + @test round(heating_served_mmbtu, digits=1) ≈ expected_heating_served_mmbtu atol=1.0 + + # Boiler serves all of the DHW load, no DHW thermal reduction due to GHP retrofit + boiler_served_mmbtu = sum(results["ExistingBoiler"]["thermal_production_series_mmbtu_per_hour"]) + expected_boiler_served_mmbtu = 3000 * 0.8 # (fuel_mmbtu * boiler_effic) + @test round(boiler_served_mmbtu, digits=1) ≈ expected_boiler_served_mmbtu atol=1.0 + + # LoadProfileChillerThermal cooling thermal is 1/cooling_efficiency_thermal_factor of GHP cooling thermal production + bau_chiller_thermal_tonhour = sum(s.cooling_load.loads_kw_thermal / REopt.KWH_THERMAL_PER_TONHOUR) + ghp_cooling_thermal_tonhour = sum(inputs.ghp_cooling_thermal_load_served_kw[1,:] / REopt.KWH_THERMAL_PER_TONHOUR) + @test round(bau_chiller_thermal_tonhour) ≈ ghp_cooling_thermal_tonhour/0.6 atol=1.0 + + # Custom heat pump COP map is used properly + ghp_option_chosen = results["GHP"]["ghp_option_chosen"] + heating_cop_avg = s.ghp_option_list[ghp_option_chosen].ghpghx_response["outputs"]["heating_cop_avg"] + cooling_cop_avg = s.ghp_option_list[ghp_option_chosen].ghpghx_response["outputs"]["cooling_cop_avg"] + # Average COP which includes pump power should be lower than Heat Pump only COP specified by the map + @test heating_cop_avg <= 4.0 + @test cooling_cop_avg <= 8.0 end - input_data["GHP"]["ghpghx_inputs"][1]["cop_map_eft_heating_cooling"] = cop_map_list - - # Due to GhpGhx not being a registered package (no OSI-approved license), - # the registered REopt package cannot have GhpGhx as a "normal" dependency; - # Therefore, we only use a "ghpghx_response" (the output of GhpGhx) as an - # input to REopt to avoid GhpGhx module calls - response_1 = JSON.parsefile("scenarios/ghpghx_response.json") - response_2 = deepcopy(response_1) - # Reduce the electric consumption of response 2 which should then be the chosen system - response_2["outputs"]["yearly_total_electric_consumption_series_kw"] *= 0.5 - input_data["GHP"]["ghpghx_responses"] = [response_1, response_2] - - # Heating load - input_data["SpaceHeatingLoad"]["doe_reference_name"] = "Hospital" - input_data["SpaceHeatingLoad"]["monthly_mmbtu"] = fill(1000.0, 12) - input_data["SpaceHeatingLoad"]["monthly_mmbtu"][1] = 500.0 - input_data["SpaceHeatingLoad"]["monthly_mmbtu"][end] = 1500.0 - - # Call REopt - s = Scenario(input_data) - inputs = REoptInputs(s) - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - results = run_reopt([m1,m2], inputs) - - ghp_option_chosen = results["GHP"]["ghp_option_chosen"] - @test ghp_option_chosen == 2 - - # Test GHP heating and cooling load reduced - hot_load_reduced_mmbtu = sum(results["GHP"]["space_heating_thermal_load_reduction_with_ghp_mmbtu_per_hour"]) - cold_load_reduced_tonhour = sum(results["GHP"]["cooling_thermal_load_reduction_with_ghp_ton"]) - @test hot_load_reduced_mmbtu ≈ 1440.00 atol=0.1 - @test cold_load_reduced_tonhour ≈ 761382.78 atol=0.1 - - # Test GHP serving space heating with VAV thermal efficiency improvements - heating_served_mmbtu = sum(s.ghp_option_list[ghp_option_chosen].heating_thermal_kw / REopt.KWH_PER_MMBTU) - expected_heating_served_mmbtu = 12000 * 0.8 * 0.85 # (fuel_mmbtu * boiler_effic * space_heating_efficiency_thermal_factor) - @test round(heating_served_mmbtu, digits=1) ≈ expected_heating_served_mmbtu atol=1.0 - - # Boiler serves all of the DHW load, no DHW thermal reduction due to GHP retrofit - boiler_served_mmbtu = sum(results["ExistingBoiler"]["thermal_production_series_mmbtu_per_hour"]) - expected_boiler_served_mmbtu = 3000 * 0.8 # (fuel_mmbtu * boiler_effic) - @test round(boiler_served_mmbtu, digits=1) ≈ expected_boiler_served_mmbtu atol=1.0 - - # LoadProfileChillerThermal cooling thermal is 1/cooling_efficiency_thermal_factor of GHP cooling thermal production - bau_chiller_thermal_tonhour = sum(s.cooling_load.loads_kw_thermal / REopt.KWH_THERMAL_PER_TONHOUR) - ghp_cooling_thermal_tonhour = sum(inputs.ghp_cooling_thermal_load_served_kw[1,:] / REopt.KWH_THERMAL_PER_TONHOUR) - @test round(bau_chiller_thermal_tonhour) ≈ ghp_cooling_thermal_tonhour/0.6 atol=1.0 - - # Custom heat pump COP map is used properly - ghp_option_chosen = results["GHP"]["ghp_option_chosen"] - heating_cop_avg = s.ghp_option_list[ghp_option_chosen].ghpghx_response["outputs"]["heating_cop_avg"] - cooling_cop_avg = s.ghp_option_list[ghp_option_chosen].ghpghx_response["outputs"]["cooling_cop_avg"] - # Average COP which includes pump power should be lower than Heat Pump only COP specified by the map - @test heating_cop_avg <= 4.0 - @test cooling_cop_avg <= 8.0 - end - @testset "Hybrid GHX and GHP calculated costs validation" begin - ## Hybrid GHP validation. - # Load base inputs - input_data = JSON.parsefile("scenarios/ghp_financial_hybrid.json") + @testset "Hybrid GHX and GHP calculated costs validation" begin + ## Hybrid GHP validation. + # Load base inputs + input_data = JSON.parsefile("scenarios/ghp_financial_hybrid.json") - inputs = REoptInputs(input_data) + inputs = REoptInputs(input_data) - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - results = run_reopt([m1,m2], inputs) + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + results = run_reopt([m1,m2], inputs) - calculated_ghp_capital_costs = ((input_data["GHP"]["ghpghx_responses"][1]["outputs"]["number_of_boreholes"]* - input_data["GHP"]["ghpghx_responses"][1]["outputs"]["length_boreholes_ft"]* - inputs.s.ghp_option_list[1].installed_cost_ghx_per_ft) + - (inputs.s.ghp_option_list[1].installed_cost_heatpump_per_ton* - input_data["GHP"]["ghpghx_responses"][1]["outputs"]["peak_combined_heatpump_thermal_ton"]* - inputs.s.ghp_option_list[1].heatpump_capacity_sizing_factor_on_peak_load) + - (inputs.s.ghp_option_list[1].building_sqft* - inputs.s.ghp_option_list[1].installed_cost_building_hydronic_loop_per_sqft)) + calculated_ghp_capital_costs = ((input_data["GHP"]["ghpghx_responses"][1]["outputs"]["number_of_boreholes"]* + input_data["GHP"]["ghpghx_responses"][1]["outputs"]["length_boreholes_ft"]* + inputs.s.ghp_option_list[1].installed_cost_ghx_per_ft) + + (inputs.s.ghp_option_list[1].installed_cost_heatpump_per_ton* + input_data["GHP"]["ghpghx_responses"][1]["outputs"]["peak_combined_heatpump_thermal_ton"]* + inputs.s.ghp_option_list[1].heatpump_capacity_sizing_factor_on_peak_load) + + (inputs.s.ghp_option_list[1].building_sqft* + inputs.s.ghp_option_list[1].installed_cost_building_hydronic_loop_per_sqft)) - @test results["Financial"]["initial_capital_costs"] ≈ calculated_ghp_capital_costs atol=0.1 - - calculated_om_costs = inputs.s.ghp_option_list[1].building_sqft* - inputs.s.ghp_option_list[1].om_cost_per_sqft_year * inputs.third_party_factor * inputs.pwf_om + @test results["Financial"]["initial_capital_costs"] ≈ calculated_ghp_capital_costs atol=0.1 + + calculated_om_costs = inputs.s.ghp_option_list[1].building_sqft* + inputs.s.ghp_option_list[1].om_cost_per_sqft_year * inputs.third_party_factor * inputs.pwf_om - @test results["Financial"]["lifecycle_om_costs_before_tax"] ≈ calculated_om_costs atol=0.1 + @test results["Financial"]["lifecycle_om_costs_before_tax"] ≈ calculated_om_costs atol=0.1 - calc_om_cost_after_tax = calculated_om_costs*(1-inputs.s.financial.owner_tax_rate_fraction) - @test results["Financial"]["lifecycle_om_costs_after_tax"] - calc_om_cost_after_tax < 0.0001 + calc_om_cost_after_tax = calculated_om_costs*(1-inputs.s.financial.owner_tax_rate_fraction) + @test results["Financial"]["lifecycle_om_costs_after_tax"] - calc_om_cost_after_tax < 0.0001 - @test abs(results["Financial"]["lifecycle_capital_costs_plus_om_after_tax"] - (calc_om_cost_after_tax + 0.7*results["Financial"]["initial_capital_costs"])) < 150.0 + @test abs(results["Financial"]["lifecycle_capital_costs_plus_om_after_tax"] - (calc_om_cost_after_tax + 0.7*results["Financial"]["initial_capital_costs"])) < 150.0 - @test abs(results["Financial"]["lifecycle_capital_costs"] - 0.7*results["Financial"]["initial_capital_costs"]) < 150.0 + @test abs(results["Financial"]["lifecycle_capital_costs"] - 0.7*results["Financial"]["initial_capital_costs"]) < 150.0 - @test abs(results["Financial"]["npv"] - 840621) < 1.0 - @test results["Financial"]["simple_payback_years"] - 5.09 < 0.1 - @test results["Financial"]["internal_rate_of_return"] - 0.18 < 0.01 + @test abs(results["Financial"]["npv"] - 840621) < 1.0 + @test results["Financial"]["simple_payback_years"] - 5.09 < 0.1 + @test results["Financial"]["internal_rate_of_return"] - 0.18 < 0.01 - @test haskey(results["ExistingBoiler"], "year_one_fuel_cost_before_tax_bau") + @test haskey(results["ExistingBoiler"], "year_one_fuel_cost_before_tax_bau") - ## Hybrid - input_data["GHP"]["ghpghx_responses"] = [JSON.parsefile("scenarios/ghpghx_hybrid_results.json")] - input_data["GHP"]["avoided_capex_by_ghp_present_value"] = 1.0e6 - input_data["GHP"]["ghx_useful_life_years"] = 35 + ## Hybrid + input_data["GHP"]["ghpghx_responses"] = [JSON.parsefile("scenarios/ghpghx_hybrid_results.json")] + input_data["GHP"]["avoided_capex_by_ghp_present_value"] = 1.0e6 + input_data["GHP"]["ghx_useful_life_years"] = 35 - inputs = REoptInputs(input_data) + inputs = REoptInputs(input_data) - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - results = run_reopt([m1,m2], inputs) + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + results = run_reopt([m1,m2], inputs) - pop!(input_data["GHP"], "ghpghx_inputs", nothing) - pop!(input_data["GHP"], "ghpghx_responses", nothing) - ghp_obj = REopt.GHP(JSON.parsefile("scenarios/ghpghx_hybrid_results.json"), input_data["GHP"]) + pop!(input_data["GHP"], "ghpghx_inputs", nothing) + pop!(input_data["GHP"], "ghpghx_responses", nothing) + ghp_obj = REopt.GHP(JSON.parsefile("scenarios/ghpghx_hybrid_results.json"), input_data["GHP"]) - calculated_ghx_residual_value = ghp_obj.ghx_only_capital_cost* - ( - (ghp_obj.ghx_useful_life_years - inputs.s.financial.analysis_years)/ghp_obj.ghx_useful_life_years - )/( - (1 + inputs.s.financial.offtaker_discount_rate_fraction)^inputs.s.financial.analysis_years - ) - - @test results["GHP"]["ghx_residual_value_present_value"] ≈ calculated_ghx_residual_value atol=0.1 - @test inputs.s.ghp_option_list[1].is_ghx_hybrid = true + calculated_ghx_residual_value = ghp_obj.ghx_only_capital_cost* + ( + (ghp_obj.ghx_useful_life_years - inputs.s.financial.analysis_years)/ghp_obj.ghx_useful_life_years + )/( + (1 + inputs.s.financial.offtaker_discount_rate_fraction)^inputs.s.financial.analysis_years + ) + + @test results["GHP"]["ghx_residual_value_present_value"] ≈ calculated_ghx_residual_value atol=0.1 + @test inputs.s.ghp_option_list[1].is_ghx_hybrid = true - # Test centralized GHP cost calculations - input_data_wwhp = JSON.parsefile("scenarios/ghp_inputs_wwhp.json") - response_wwhp = JSON.parsefile("scenarios/ghpghx_response_wwhp.json") - input_data_wwhp["GHP"]["ghpghx_responses"] = [response_wwhp] + # Test centralized GHP cost calculations + input_data_wwhp = JSON.parsefile("scenarios/ghp_inputs_wwhp.json") + response_wwhp = JSON.parsefile("scenarios/ghpghx_response_wwhp.json") + input_data_wwhp["GHP"]["ghpghx_responses"] = [response_wwhp] - s_wwhp = Scenario(input_data_wwhp) - inputs_wwhp = REoptInputs(s_wwhp) - m3 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - results_wwhp = run_reopt(m3, inputs_wwhp) + s_wwhp = Scenario(input_data_wwhp) + inputs_wwhp = REoptInputs(s_wwhp) + m3 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + results_wwhp = run_reopt(m3, inputs_wwhp) - heating_hp_cost = input_data_wwhp["GHP"]["installed_cost_wwhp_heating_pump_per_ton"] * - input_data_wwhp["GHP"]["heatpump_capacity_sizing_factor_on_peak_load"] * - results_wwhp["GHP"]["ghpghx_chosen_outputs"]["peak_heating_heatpump_thermal_ton"] + heating_hp_cost = input_data_wwhp["GHP"]["installed_cost_wwhp_heating_pump_per_ton"] * + input_data_wwhp["GHP"]["heatpump_capacity_sizing_factor_on_peak_load"] * + results_wwhp["GHP"]["ghpghx_chosen_outputs"]["peak_heating_heatpump_thermal_ton"] - cooling_hp_cost = input_data_wwhp["GHP"]["installed_cost_wwhp_cooling_pump_per_ton"] * - input_data_wwhp["GHP"]["heatpump_capacity_sizing_factor_on_peak_load"] * - results_wwhp["GHP"]["ghpghx_chosen_outputs"]["peak_cooling_heatpump_thermal_ton"] + cooling_hp_cost = input_data_wwhp["GHP"]["installed_cost_wwhp_cooling_pump_per_ton"] * + input_data_wwhp["GHP"]["heatpump_capacity_sizing_factor_on_peak_load"] * + results_wwhp["GHP"]["ghpghx_chosen_outputs"]["peak_cooling_heatpump_thermal_ton"] - ghx_cost = input_data_wwhp["GHP"]["installed_cost_ghx_per_ft"] * - results_wwhp["GHP"]["ghpghx_chosen_outputs"]["number_of_boreholes"] * - results_wwhp["GHP"]["ghpghx_chosen_outputs"]["length_boreholes_ft"] + ghx_cost = input_data_wwhp["GHP"]["installed_cost_ghx_per_ft"] * + results_wwhp["GHP"]["ghpghx_chosen_outputs"]["number_of_boreholes"] * + results_wwhp["GHP"]["ghpghx_chosen_outputs"]["length_boreholes_ft"] - # CAPEX reduction factor for 30% ITC, 5-year MACRS, assuming 26% tax rate and 8.3% discount - capex_reduction_factor = 0.455005797 + # CAPEX reduction factor for 30% ITC, 5-year MACRS, assuming 26% tax rate and 8.3% discount + capex_reduction_factor = 0.455005797 - calculated_ghp_capex = (heating_hp_cost + cooling_hp_cost + ghx_cost) * (1 - capex_reduction_factor) + calculated_ghp_capex = (heating_hp_cost + cooling_hp_cost + ghx_cost) * (1 - capex_reduction_factor) - reopt_ghp_capex = results_wwhp["Financial"]["lifecycle_capital_costs"] - @test calculated_ghp_capex ≈ reopt_ghp_capex atol=300 - end + reopt_ghp_capex = results_wwhp["Financial"]["lifecycle_capital_costs"] + @test calculated_ghp_capex ≈ reopt_ghp_capex atol=300 + end - @testset "Cambium Emissions" begin - """ - 1) Location in contiguous US - - Correct data from Cambium (returned location and values) - - Adjusted for load year vs. Cambium year (which starts on Sunday) vs. AVERT year (2022 currently) - - co2 pct increase should be zero - 2) HI and AK locations - - Should use AVERT data and give an "info" message - - Adjust for load year vs. AVERT year - - co2 pct increase should be the default value unless user provided value - 3) International - - all emissions should be zero unless provided - """ - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - - post_name = "cambium.json" - post = JSON.parsefile("./scenarios/$post_name") - - cities = Dict( - "Denver" => (39.7413753050447, -104.99965032911328), - "Fairbanks" => (64.84053664406181, -147.71913656313163), - "Santiago" => (-33.44485437650408, -70.69031905547853) - ) - - # 1) Location in contiguous US - city = "Denver" - post["Site"]["latitude"] = cities[city][1] - post["Site"]["longitude"] = cities[city][2] - post["ElectricLoad"]["loads_kw"] = [20 for i in range(1,8760)] - post["ElectricLoad"]["year"] = 2021 # 2021 First day is Fri - scen = Scenario(post) - - @test scen.electric_utility.avert_emissions_region == "Rocky Mountains" - @test scen.electric_utility.distance_to_avert_emissions_region_meters ≈ 0 atol=1e-5 - @test scen.electric_utility.cambium_emissions_region == "RMPAc" - @test sum(scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh) / 8760 ≈ 0.394608 rtol=1e-3 - @test scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh[1] ≈ 0.677942 rtol=1e-4 # Should start on Friday - @test scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh[8760] ≈ 0.6598207198 rtol=1e-5 # Should end on Friday - @test sum(scen.electric_utility.emissions_factor_series_lb_SO2_per_kwh) / 8760 ≈ 0.00061165 rtol=1e-5 # check avg from AVERT data for RM region - @test scen.electric_utility.emissions_factor_CO2_decrease_fraction ≈ 0 atol=1e-5 # should be 0 with Cambium data - @test scen.electric_utility.emissions_factor_SO2_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["SO2"] # should be 2.163% for AVERT data - @test scen.electric_utility.emissions_factor_NOx_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["NOx"] - @test scen.electric_utility.emissions_factor_PM25_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["PM25"] - - # 2) AK location - city = "Fairbanks" - post["Site"]["latitude"] = cities[city][1] - post["Site"]["longitude"] = cities[city][2] - scen = Scenario(post) - - @test scen.electric_utility.avert_emissions_region == "Alaska" - @test scen.electric_utility.distance_to_avert_emissions_region_meters ≈ 0 atol=1e-5 - @test scen.electric_utility.cambium_emissions_region == "NA - Cambium data not used for climate emissions" - @test sum(scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh) / 8760 ≈ 1.29199999 rtol=1e-3 # check that data from eGRID (AVERT data file) is used - @test scen.electric_utility.emissions_factor_CO2_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["CO2e"] # should get updated to this value - @test scen.electric_utility.emissions_factor_SO2_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["SO2"] # should be 2.163% for AVERT data - @test scen.electric_utility.emissions_factor_NOx_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["NOx"] - @test scen.electric_utility.emissions_factor_PM25_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["PM25"] - - # 3) International location - city = "Santiago" - post["Site"]["latitude"] = cities[city][1] - post["Site"]["longitude"] = cities[city][2] - scen = Scenario(post) + @testset "Cambium Emissions" begin + """ + 1) Location in contiguous US + - Correct data from Cambium (returned location and values) + - Adjusted for load year vs. Cambium year (which starts on Sunday) vs. AVERT year (2022 currently) + - co2 pct increase should be zero + 2) HI and AK locations + - Should use AVERT data and give an "info" message + - Adjust for load year vs. AVERT year + - co2 pct increase should be the default value unless user provided value + 3) International + - all emissions should be zero unless provided + """ + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - @test scen.electric_utility.avert_emissions_region == "" - @test scen.electric_utility.distance_to_avert_emissions_region_meters ≈ 5.521032136418236e6 atol=1.0 - @test scen.electric_utility.cambium_emissions_region == "NA - Cambium data not used for climate emissions" - @test sum(scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh) ≈ 0 - @test sum(scen.electric_utility.emissions_factor_series_lb_NOx_per_kwh) ≈ 0 - @test sum(scen.electric_utility.emissions_factor_series_lb_SO2_per_kwh) ≈ 0 - @test sum(scen.electric_utility.emissions_factor_series_lb_PM25_per_kwh) ≈ 0 - - end - - @testset "Emissions and Renewable Energy Percent" begin - #renewable energy and emissions reduction targets - include_exported_RE_in_total = [true,false,true] - include_exported_ER_in_total = [true,false,true] - RE_target = [0.8,nothing,nothing] - ER_target = [nothing,0.8,nothing] - with_outage = [true,false,false] - - for i in range(1, stop=3) - if i == 3 - inputs = JSON.parsefile("./scenarios/re_emissions_with_thermal.json") - else - inputs = JSON.parsefile("./scenarios/re_emissions_elec_only.json") - end - if i == 1 - inputs["Site"]["latitude"] = 37.746 - inputs["Site"]["longitude"] = -122.448 - # inputs["ElectricUtility"]["emissions_region"] = "California" - end - inputs["Site"]["include_exported_renewable_electricity_in_total"] = include_exported_RE_in_total[i] - inputs["Site"]["include_exported_elec_emissions_in_total"] = include_exported_ER_in_total[i] - inputs["Site"]["renewable_electricity_min_fraction"] = if isnothing(RE_target[i]) 0.0 else RE_target[i] end - inputs["Site"]["renewable_electricity_max_fraction"] = RE_target[i] - inputs["Site"]["CO2_emissions_reduction_min_fraction"] = ER_target[i] - inputs["Site"]["CO2_emissions_reduction_max_fraction"] = ER_target[i] - if with_outage[i] - outage_start_hour = 4032 - outage_duration = 2000 #hrs - inputs["ElectricUtility"]["outage_start_time_step"] = outage_start_hour + 1 - inputs["ElectricUtility"]["outage_end_time_step"] = outage_start_hour + 1 + outage_duration - inputs["Generator"]["max_kw"] = 20 - inputs["Generator"]["existing_kw"] = 2 - inputs["Generator"]["fuel_avail_gal"] = 1000 - end + post_name = "cambium.json" + post = JSON.parsefile("./scenarios/$post_name") + + cities = Dict( + "Denver" => (39.7413753050447, -104.99965032911328), + "Fairbanks" => (64.84053664406181, -147.71913656313163), + "Santiago" => (-33.44485437650408, -70.69031905547853) + ) + + # 1) Location in contiguous US + city = "Denver" + post["Site"]["latitude"] = cities[city][1] + post["Site"]["longitude"] = cities[city][2] + post["ElectricLoad"]["loads_kw"] = [20 for i in range(1,8760)] + post["ElectricLoad"]["year"] = 2021 # 2021 First day is Fri + scen = Scenario(post) + + @test scen.electric_utility.avert_emissions_region == "Rocky Mountains" + @test scen.electric_utility.distance_to_avert_emissions_region_meters ≈ 0 atol=1e-5 + @test scen.electric_utility.cambium_emissions_region == "RMPAc" + @test sum(scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh) / 8760 ≈ 0.394608 rtol=1e-3 + @test scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh[1] ≈ 0.677942 rtol=1e-4 # Should start on Friday + @test scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh[8760] ≈ 0.6598207198 rtol=1e-5 # Should end on Friday + @test sum(scen.electric_utility.emissions_factor_series_lb_SO2_per_kwh) / 8760 ≈ 0.00061165 rtol=1e-5 # check avg from AVERT data for RM region + @test scen.electric_utility.emissions_factor_CO2_decrease_fraction ≈ 0 atol=1e-5 # should be 0 with Cambium data + @test scen.electric_utility.emissions_factor_SO2_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["SO2"] # should be 2.163% for AVERT data + @test scen.electric_utility.emissions_factor_NOx_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["NOx"] + @test scen.electric_utility.emissions_factor_PM25_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["PM25"] + + # 2) AK location + city = "Fairbanks" + post["Site"]["latitude"] = cities[city][1] + post["Site"]["longitude"] = cities[city][2] + scen = Scenario(post) + + @test scen.electric_utility.avert_emissions_region == "Alaska" + @test scen.electric_utility.distance_to_avert_emissions_region_meters ≈ 0 atol=1e-5 + @test scen.electric_utility.cambium_emissions_region == "NA - Cambium data not used for climate emissions" + @test sum(scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh) / 8760 ≈ 1.29199999 rtol=1e-3 # check that data from eGRID (AVERT data file) is used + @test scen.electric_utility.emissions_factor_CO2_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["CO2e"] # should get updated to this value + @test scen.electric_utility.emissions_factor_SO2_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["SO2"] # should be 2.163% for AVERT data + @test scen.electric_utility.emissions_factor_NOx_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["NOx"] + @test scen.electric_utility.emissions_factor_PM25_decrease_fraction ≈ REopt.EMISSIONS_DECREASE_DEFAULTS["PM25"] + + # 3) International location + city = "Santiago" + post["Site"]["latitude"] = cities[city][1] + post["Site"]["longitude"] = cities[city][2] + scen = Scenario(post) + + @test scen.electric_utility.avert_emissions_region == "" + @test scen.electric_utility.distance_to_avert_emissions_region_meters ≈ 5.521032136418236e6 atol=1.0 + @test scen.electric_utility.cambium_emissions_region == "NA - Cambium data not used for climate emissions" + @test sum(scen.electric_utility.emissions_factor_series_lb_CO2_per_kwh) ≈ 0 + @test sum(scen.electric_utility.emissions_factor_series_lb_NOx_per_kwh) ≈ 0 + @test sum(scen.electric_utility.emissions_factor_series_lb_SO2_per_kwh) ≈ 0 + @test sum(scen.electric_utility.emissions_factor_series_lb_PM25_per_kwh) ≈ 0 + + end - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - results = run_reopt([m1, m2], inputs) - - if !isnothing(ER_target[i]) - ER_fraction_out = results["Site"]["lifecycle_emissions_reduction_CO2_fraction"] - @test ER_target[i] ≈ ER_fraction_out atol=1e-3 - lifecycle_emissions_tonnes_CO2_out = results["Site"]["lifecycle_emissions_tonnes_CO2"] - lifecycle_emissions_bau_tonnes_CO2_out = results["Site"]["lifecycle_emissions_tonnes_CO2_bau"] - ER_fraction_calced_out = (lifecycle_emissions_bau_tonnes_CO2_out-lifecycle_emissions_tonnes_CO2_out)/lifecycle_emissions_bau_tonnes_CO2_out - ER_fraction_diff = abs(ER_fraction_calced_out-ER_fraction_out) - @test ER_fraction_diff ≈ 0.0 atol=1e-2 - end + @testset "Emissions and Renewable Energy Percent" begin + #renewable energy and emissions reduction targets + include_exported_RE_in_total = [true,false,true] + include_exported_ER_in_total = [true,false,true] + RE_target = [0.8,nothing,nothing] + ER_target = [nothing,0.8,nothing] + with_outage = [true,false,false] + + for i in range(1, stop=3) + if i == 3 + inputs = JSON.parsefile("./scenarios/re_emissions_with_thermal.json") + else + inputs = JSON.parsefile("./scenarios/re_emissions_elec_only.json") + end + if i == 1 + inputs["Site"]["latitude"] = 37.746 + inputs["Site"]["longitude"] = -122.448 + # inputs["ElectricUtility"]["emissions_region"] = "California" + end + inputs["Site"]["include_exported_renewable_electricity_in_total"] = include_exported_RE_in_total[i] + inputs["Site"]["include_exported_elec_emissions_in_total"] = include_exported_ER_in_total[i] + inputs["Site"]["renewable_electricity_min_fraction"] = if isnothing(RE_target[i]) 0.0 else RE_target[i] end + inputs["Site"]["renewable_electricity_max_fraction"] = RE_target[i] + inputs["Site"]["CO2_emissions_reduction_min_fraction"] = ER_target[i] + inputs["Site"]["CO2_emissions_reduction_max_fraction"] = ER_target[i] + if with_outage[i] + outage_start_hour = 4032 + outage_duration = 2000 #hrs + inputs["ElectricUtility"]["outage_start_time_step"] = outage_start_hour + 1 + inputs["ElectricUtility"]["outage_end_time_step"] = outage_start_hour + 1 + outage_duration + inputs["Generator"]["max_kw"] = 20 + inputs["Generator"]["existing_kw"] = 2 + inputs["Generator"]["fuel_avail_gal"] = 1000 + end - annual_emissions_tonnes_CO2_out = results["Site"]["annual_emissions_tonnes_CO2"] - yr1_fuel_emissions_tonnes_CO2_out = results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] - yr1_grid_emissions_tonnes_CO2_out = results["ElectricUtility"]["annual_emissions_tonnes_CO2"] - yr1_total_emissions_calced_tonnes_CO2 = yr1_fuel_emissions_tonnes_CO2_out + yr1_grid_emissions_tonnes_CO2_out - @test annual_emissions_tonnes_CO2_out ≈ yr1_total_emissions_calced_tonnes_CO2 atol=1e-1 - if haskey(results["Financial"],"breakeven_cost_of_emissions_reduction_per_tonne_CO2") - @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] >= 0.0 - end - - if i == 1 - @test results["PV"]["size_kw"] ≈ 59.7222 atol=1e-1 - @test results["ElectricStorage"]["size_kw"] ≈ 0.0 atol=1e-1 - @test results["ElectricStorage"]["size_kwh"] ≈ 0.0 atol=1e-1 - @test results["Generator"]["size_kw"] ≈ 9.13 atol=1e-1 - @test results["Site"]["total_renewable_energy_fraction"] ≈ 0.8 - @test results["Site"]["total_renewable_energy_fraction_bau"] ≈ 0.148375 atol=1e-4 - @test results["Site"]["lifecycle_emissions_reduction_CO2_fraction"] ≈ 0.57403012 atol=1e-4 - @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] ≈ 332.4 atol=1 - @test results["Site"]["annual_emissions_tonnes_CO2"] ≈ 11.85 atol=1e-2 - @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] ≈ 7.427 - @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2_bau"] ≈ 0.0 - @test results["Financial"]["lifecycle_emissions_cost_climate"] ≈ 8459.45 atol=1 - @test results["Site"]["lifecycle_emissions_tonnes_CO2"] ≈ 236.95 - @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2"] ≈ 148.54 - @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2_bau"] ≈ 0.0 - @test results["ElectricUtility"]["annual_emissions_tonnes_CO2_bau"] ≈ 27.813 atol=1e-1 - @test results["ElectricUtility"]["lifecycle_emissions_tonnes_CO2_bau"] ≈ 556.26 - elseif i == 2 - #commented out values are results using same levelization factor as API - @test results["PV"]["size_kw"] ≈ 106.13 atol=1 - @test results["ElectricStorage"]["size_kw"] ≈ 20.09 atol=1 # 20.29 - @test results["ElectricStorage"]["size_kwh"] ≈ 170.94 atol=1 - @test !haskey(results, "Generator") - # Renewable energy - @test results["Site"]["renewable_electricity_fraction"] ≈ 0.78586 atol=1e-3 - @test results["Site"]["renewable_electricity_fraction_bau"] ≈ 0.132118 atol=1e-3 #0.1354 atol=1e-3 - @test results["Site"]["annual_renewable_electricity_kwh_bau"] ≈ 13308.5 atol=10 # 13542.62 atol=10 - @test results["Site"]["total_renewable_energy_fraction_bau"] ≈ 0.132118 atol=1e-3 # 0.1354 atol=1e-3 - # CO2 emissions - totals ≈ from grid, from fuelburn, ER, $/tCO2 breakeven - @test results["Site"]["lifecycle_emissions_reduction_CO2_fraction"] ≈ 0.8 atol=1e-3 # 0.8 - @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] ≈ 491.5 atol=1e-1 - @test results["Site"]["annual_emissions_tonnes_CO2"] ≈ 11.662 atol=1 - @test results["Site"]["annual_emissions_tonnes_CO2_bau"] ≈ 58.3095 atol=1 - @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] ≈ 0.0 atol=1 # 0.0 - @test results["Financial"]["lifecycle_emissions_cost_climate"] ≈ 8397.85 atol=1 - @test results["Site"]["lifecycle_emissions_tonnes_CO2_bau"] ≈ 1166.19 atol=1 - @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2"] ≈ 0.0 atol=1 # 0.0 - @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2_bau"] ≈ 0.0 atol=1 # 0.0 - @test results["ElectricUtility"]["annual_emissions_tonnes_CO2_bau"] ≈ 58.3095 atol=1 - @test results["ElectricUtility"]["lifecycle_emissions_tonnes_CO2"] ≈ 233.24 atol=1 - - - #also test CO2 breakeven cost - inputs["PV"]["min_kw"] = results["PV"]["size_kw"] - inputs["PV"]["existing_kw"] - inputs["PV"]["max_kw"] = results["PV"]["size_kw"] - inputs["PV"]["existing_kw"] - inputs["ElectricStorage"]["min_kw"] = results["ElectricStorage"]["size_kw"] - inputs["ElectricStorage"]["max_kw"] = results["ElectricStorage"]["size_kw"] - inputs["ElectricStorage"]["min_kwh"] = results["ElectricStorage"]["size_kwh"] - inputs["ElectricStorage"]["max_kwh"] = results["ElectricStorage"]["size_kwh"] - inputs["Financial"]["CO2_cost_per_tonne"] = results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] - inputs["Settings"]["include_climate_in_objective"] = true m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) results = run_reopt([m1, m2], inputs) - @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] ≈ inputs["Financial"]["CO2_cost_per_tonne"] atol=1e-1 - elseif i == 3 - @test results["PV"]["size_kw"] ≈ 20.0 atol=1e-1 - @test !haskey(results, "Wind") - @test !haskey(results, "ElectricStorage") - @test !haskey(results, "Generator") - @test results["CHP"]["size_kw"] ≈ 200.0 atol=1e-1 - @test results["AbsorptionChiller"]["size_ton"] ≈ 400.0 atol=1e-1 - @test results["HotThermalStorage"]["size_gal"] ≈ 50000 atol=1e1 - @test results["ColdThermalStorage"]["size_gal"] ≈ 30000 atol=1e1 - yr1_nat_gas_mmbtu = results["ExistingBoiler"]["annual_fuel_consumption_mmbtu"] + results["CHP"]["annual_fuel_consumption_mmbtu"] - nat_gas_emissions_lb_per_mmbtu = Dict("CO2"=>117.03, "NOx"=>0.09139, "SO2"=>0.000578592, "PM25"=>0.007328833) - TONNE_PER_LB = 1/2204.62 - @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] ≈ nat_gas_emissions_lb_per_mmbtu["CO2"] * yr1_nat_gas_mmbtu * TONNE_PER_LB atol=1 - @test results["Site"]["annual_emissions_from_fuelburn_tonnes_NOx"] ≈ nat_gas_emissions_lb_per_mmbtu["NOx"] * yr1_nat_gas_mmbtu * TONNE_PER_LB atol=1e-2 - @test results["Site"]["annual_emissions_from_fuelburn_tonnes_SO2"] ≈ nat_gas_emissions_lb_per_mmbtu["SO2"] * yr1_nat_gas_mmbtu * TONNE_PER_LB atol=1e-2 - @test results["Site"]["annual_emissions_from_fuelburn_tonnes_PM25"] ≈ nat_gas_emissions_lb_per_mmbtu["PM25"] * yr1_nat_gas_mmbtu * TONNE_PER_LB atol=1e-2 - @test results["Site"]["lifecycle_emissions_tonnes_CO2"] ≈ results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2"] + results["ElectricUtility"]["lifecycle_emissions_tonnes_CO2"] atol=1 - @test results["Site"]["lifecycle_emissions_tonnes_NOx"] ≈ results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_NOx"] + results["ElectricUtility"]["lifecycle_emissions_tonnes_NOx"] atol=0.1 - @test results["Site"]["lifecycle_emissions_tonnes_SO2"] ≈ results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_SO2"] + results["ElectricUtility"]["lifecycle_emissions_tonnes_SO2"] atol=1e-2 - @test results["Site"]["lifecycle_emissions_tonnes_PM25"] ≈ results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_PM25"] + results["ElectricUtility"]["lifecycle_emissions_tonnes_PM25"] atol=1.5e-2 - @test results["Site"]["annual_renewable_electricity_kwh"] ≈ results["PV"]["annual_energy_produced_kwh"] + inputs["CHP"]["fuel_renewable_energy_fraction"] * results["CHP"]["annual_electric_production_kwh"] atol=1 - @test results["Site"]["renewable_electricity_fraction"] ≈ results["Site"]["annual_renewable_electricity_kwh"] / results["ElectricLoad"]["annual_calculated_kwh"] atol=1e-6#0.044285 atol=1e-4 - KWH_PER_MMBTU = 293.07107 - annual_RE_kwh = inputs["CHP"]["fuel_renewable_energy_fraction"] * results["CHP"]["annual_thermal_production_mmbtu"] * KWH_PER_MMBTU + results["Site"]["annual_renewable_electricity_kwh"] - annual_heat_kwh = (results["CHP"]["annual_thermal_production_mmbtu"] + results["ExistingBoiler"]["annual_thermal_production_mmbtu"]) * KWH_PER_MMBTU - @test results["Site"]["total_renewable_energy_fraction"] ≈ annual_RE_kwh / (annual_heat_kwh + results["ElectricLoad"]["annual_calculated_kwh"]) atol=1e-6 + + if !isnothing(ER_target[i]) + ER_fraction_out = results["Site"]["lifecycle_emissions_reduction_CO2_fraction"] + @test ER_target[i] ≈ ER_fraction_out atol=1e-3 + lifecycle_emissions_tonnes_CO2_out = results["Site"]["lifecycle_emissions_tonnes_CO2"] + lifecycle_emissions_bau_tonnes_CO2_out = results["Site"]["lifecycle_emissions_tonnes_CO2_bau"] + ER_fraction_calced_out = (lifecycle_emissions_bau_tonnes_CO2_out-lifecycle_emissions_tonnes_CO2_out)/lifecycle_emissions_bau_tonnes_CO2_out + ER_fraction_diff = abs(ER_fraction_calced_out-ER_fraction_out) + @test ER_fraction_diff ≈ 0.0 atol=1e-2 + end + + annual_emissions_tonnes_CO2_out = results["Site"]["annual_emissions_tonnes_CO2"] + yr1_fuel_emissions_tonnes_CO2_out = results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] + yr1_grid_emissions_tonnes_CO2_out = results["ElectricUtility"]["annual_emissions_tonnes_CO2"] + yr1_total_emissions_calced_tonnes_CO2 = yr1_fuel_emissions_tonnes_CO2_out + yr1_grid_emissions_tonnes_CO2_out + @test annual_emissions_tonnes_CO2_out ≈ yr1_total_emissions_calced_tonnes_CO2 atol=1e-1 + if haskey(results["Financial"],"breakeven_cost_of_emissions_reduction_per_tonne_CO2") + @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] >= 0.0 + end + + if i == 1 + @test results["PV"]["size_kw"] ≈ 59.7222 atol=1e-1 + @test results["ElectricStorage"]["size_kw"] ≈ 0.0 atol=1e-1 + @test results["ElectricStorage"]["size_kwh"] ≈ 0.0 atol=1e-1 + @test results["Generator"]["size_kw"] ≈ 9.13 atol=1e-1 + @test results["Site"]["total_renewable_energy_fraction"] ≈ 0.8 + @test results["Site"]["total_renewable_energy_fraction_bau"] ≈ 0.148375 atol=1e-4 + @test results["Site"]["lifecycle_emissions_reduction_CO2_fraction"] ≈ 0.57403012 atol=1e-4 + @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] ≈ 332.4 atol=1 + @test results["Site"]["annual_emissions_tonnes_CO2"] ≈ 11.85 atol=1e-2 + @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] ≈ 7.427 + @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2_bau"] ≈ 0.0 + @test results["Financial"]["lifecycle_emissions_cost_climate"] ≈ 8459.45 atol=1 + @test results["Site"]["lifecycle_emissions_tonnes_CO2"] ≈ 236.95 + @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2"] ≈ 148.54 + @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2_bau"] ≈ 0.0 + @test results["ElectricUtility"]["annual_emissions_tonnes_CO2_bau"] ≈ 27.813 atol=1e-1 + @test results["ElectricUtility"]["lifecycle_emissions_tonnes_CO2_bau"] ≈ 556.26 + elseif i == 2 + #commented out values are results using same levelization factor as API + @test results["PV"]["size_kw"] ≈ 106.13 atol=1 + @test results["ElectricStorage"]["size_kw"] ≈ 20.09 atol=1 # 20.29 + @test results["ElectricStorage"]["size_kwh"] ≈ 170.94 atol=1 + @test !haskey(results, "Generator") + # Renewable energy + @test results["Site"]["renewable_electricity_fraction"] ≈ 0.78586 atol=1e-3 + @test results["Site"]["renewable_electricity_fraction_bau"] ≈ 0.132118 atol=1e-3 #0.1354 atol=1e-3 + @test results["Site"]["annual_renewable_electricity_kwh_bau"] ≈ 13308.5 atol=10 # 13542.62 atol=10 + @test results["Site"]["total_renewable_energy_fraction_bau"] ≈ 0.132118 atol=1e-3 # 0.1354 atol=1e-3 + # CO2 emissions - totals ≈ from grid, from fuelburn, ER, $/tCO2 breakeven + @test results["Site"]["lifecycle_emissions_reduction_CO2_fraction"] ≈ 0.8 atol=1e-3 # 0.8 + @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] ≈ 491.5 atol=1e-1 + @test results["Site"]["annual_emissions_tonnes_CO2"] ≈ 11.662 atol=1 + @test results["Site"]["annual_emissions_tonnes_CO2_bau"] ≈ 58.3095 atol=1 + @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] ≈ 0.0 atol=1 # 0.0 + @test results["Financial"]["lifecycle_emissions_cost_climate"] ≈ 8397.85 atol=1 + @test results["Site"]["lifecycle_emissions_tonnes_CO2_bau"] ≈ 1166.19 atol=1 + @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2"] ≈ 0.0 atol=1 # 0.0 + @test results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2_bau"] ≈ 0.0 atol=1 # 0.0 + @test results["ElectricUtility"]["annual_emissions_tonnes_CO2_bau"] ≈ 58.3095 atol=1 + @test results["ElectricUtility"]["lifecycle_emissions_tonnes_CO2"] ≈ 233.24 atol=1 + + + #also test CO2 breakeven cost + inputs["PV"]["min_kw"] = results["PV"]["size_kw"] - inputs["PV"]["existing_kw"] + inputs["PV"]["max_kw"] = results["PV"]["size_kw"] - inputs["PV"]["existing_kw"] + inputs["ElectricStorage"]["min_kw"] = results["ElectricStorage"]["size_kw"] + inputs["ElectricStorage"]["max_kw"] = results["ElectricStorage"]["size_kw"] + inputs["ElectricStorage"]["min_kwh"] = results["ElectricStorage"]["size_kwh"] + inputs["ElectricStorage"]["max_kwh"] = results["ElectricStorage"]["size_kwh"] + inputs["Financial"]["CO2_cost_per_tonne"] = results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] + inputs["Settings"]["include_climate_in_objective"] = true + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) + results = run_reopt([m1, m2], inputs) + @test results["Financial"]["breakeven_cost_of_emissions_reduction_per_tonne_CO2"] ≈ inputs["Financial"]["CO2_cost_per_tonne"] atol=1e-1 + elseif i == 3 + @test results["PV"]["size_kw"] ≈ 20.0 atol=1e-1 + @test !haskey(results, "Wind") + @test !haskey(results, "ElectricStorage") + @test !haskey(results, "Generator") + @test results["CHP"]["size_kw"] ≈ 200.0 atol=1e-1 + @test results["AbsorptionChiller"]["size_ton"] ≈ 400.0 atol=1e-1 + @test results["HotThermalStorage"]["size_gal"] ≈ 50000 atol=1e1 + @test results["ColdThermalStorage"]["size_gal"] ≈ 30000 atol=1e1 + yr1_nat_gas_mmbtu = results["ExistingBoiler"]["annual_fuel_consumption_mmbtu"] + results["CHP"]["annual_fuel_consumption_mmbtu"] + nat_gas_emissions_lb_per_mmbtu = Dict("CO2"=>117.03, "NOx"=>0.09139, "SO2"=>0.000578592, "PM25"=>0.007328833) + TONNE_PER_LB = 1/2204.62 + @test results["Site"]["annual_emissions_from_fuelburn_tonnes_CO2"] ≈ nat_gas_emissions_lb_per_mmbtu["CO2"] * yr1_nat_gas_mmbtu * TONNE_PER_LB atol=1 + @test results["Site"]["annual_emissions_from_fuelburn_tonnes_NOx"] ≈ nat_gas_emissions_lb_per_mmbtu["NOx"] * yr1_nat_gas_mmbtu * TONNE_PER_LB atol=1e-2 + @test results["Site"]["annual_emissions_from_fuelburn_tonnes_SO2"] ≈ nat_gas_emissions_lb_per_mmbtu["SO2"] * yr1_nat_gas_mmbtu * TONNE_PER_LB atol=1e-2 + @test results["Site"]["annual_emissions_from_fuelburn_tonnes_PM25"] ≈ nat_gas_emissions_lb_per_mmbtu["PM25"] * yr1_nat_gas_mmbtu * TONNE_PER_LB atol=1e-2 + @test results["Site"]["lifecycle_emissions_tonnes_CO2"] ≈ results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_CO2"] + results["ElectricUtility"]["lifecycle_emissions_tonnes_CO2"] atol=1 + @test results["Site"]["lifecycle_emissions_tonnes_NOx"] ≈ results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_NOx"] + results["ElectricUtility"]["lifecycle_emissions_tonnes_NOx"] atol=0.1 + @test results["Site"]["lifecycle_emissions_tonnes_SO2"] ≈ results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_SO2"] + results["ElectricUtility"]["lifecycle_emissions_tonnes_SO2"] atol=1e-2 + @test results["Site"]["lifecycle_emissions_tonnes_PM25"] ≈ results["Site"]["lifecycle_emissions_from_fuelburn_tonnes_PM25"] + results["ElectricUtility"]["lifecycle_emissions_tonnes_PM25"] atol=1.5e-2 + @test results["Site"]["annual_renewable_electricity_kwh"] ≈ results["PV"]["annual_energy_produced_kwh"] + inputs["CHP"]["fuel_renewable_energy_fraction"] * results["CHP"]["annual_electric_production_kwh"] atol=1 + @test results["Site"]["renewable_electricity_fraction"] ≈ results["Site"]["annual_renewable_electricity_kwh"] / results["ElectricLoad"]["annual_calculated_kwh"] atol=1e-6#0.044285 atol=1e-4 + KWH_PER_MMBTU = 293.07107 + annual_RE_kwh = inputs["CHP"]["fuel_renewable_energy_fraction"] * results["CHP"]["annual_thermal_production_mmbtu"] * KWH_PER_MMBTU + results["Site"]["annual_renewable_electricity_kwh"] + annual_heat_kwh = (results["CHP"]["annual_thermal_production_mmbtu"] + results["ExistingBoiler"]["annual_thermal_production_mmbtu"]) * KWH_PER_MMBTU + @test results["Site"]["total_renewable_energy_fraction"] ≈ annual_RE_kwh / (annual_heat_kwh + results["ElectricLoad"]["annual_calculated_kwh"]) atol=1e-6 + end end end - end - @testset "Back pressure steam turbine" begin - """ - Validation to ensure that: - 1) ExistingBoiler provides the thermal energy (steam) to a backpressure SteamTurbine for CHP application - 2) SteamTurbine serves the heating load with the condensing steam + @testset "Back pressure steam turbine" begin + """ + Validation to ensure that: + 1) ExistingBoiler provides the thermal energy (steam) to a backpressure SteamTurbine for CHP application + 2) SteamTurbine serves the heating load with the condensing steam - """ - # Setup inputs, make heating load large to entice SteamTurbine - input_data = JSON.parsefile("scenarios/backpressure_steamturbine_inputs.json") - latitude = input_data["Site"]["latitude"] - longitude = input_data["Site"]["longitude"] - building = "Hospital" - elec_load_multiplier = 5.0 - heat_load_multiplier = 100.0 - input_data["ElectricLoad"]["doe_reference_name"] = building - input_data["SpaceHeatingLoad"]["doe_reference_name"] = building - input_data["DomesticHotWaterLoad"]["doe_reference_name"] = building - elec_load = REopt.ElectricLoad(latitude=latitude, longitude=longitude, doe_reference_name=building) - input_data["ElectricLoad"]["annual_kwh"] = elec_load_multiplier * sum(elec_load.loads_kw) - space_load = REopt.SpaceHeatingLoad(latitude=latitude, longitude=longitude, doe_reference_name=building, existing_boiler_efficiency=input_data["ExistingBoiler"]["efficiency"]) - input_data["SpaceHeatingLoad"]["annual_mmbtu"] = heat_load_multiplier * space_load.annual_mmbtu / input_data["ExistingBoiler"]["efficiency"] - dhw_load = REopt.DomesticHotWaterLoad(latitude=latitude, longitude=longitude, doe_reference_name=building, existing_boiler_efficiency=input_data["ExistingBoiler"]["efficiency"]) - input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = heat_load_multiplier * dhw_load.annual_mmbtu / input_data["ExistingBoiler"]["efficiency"] - s = Scenario(input_data) - inputs = REoptInputs(s) - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt([m1,m2], inputs) - - # The expected values below were directly copied from the REopt_API V2 expected values - @test results["Financial"]["lcc"] ≈ 189359280.0 rtol=0.001 - @test results["Financial"]["npv"] ≈ 8085233.0 rtol=0.01 - @test results["SteamTurbine"]["size_kw"] ≈ 2616.418 atol=1.0 - @test results["SteamTurbine"]["annual_thermal_consumption_mmbtu"] ≈ 1000557.6 rtol=0.001 - @test results["SteamTurbine"]["annual_electric_production_kwh"] ≈ 18970374.6 rtol=0.001 - @test results["SteamTurbine"]["annual_thermal_production_mmbtu"] ≈ 924045.1 rtol=0.001 - - # BAU boiler loads - load_boiler_fuel = (s.space_heating_load.loads_kw + s.dhw_load.loads_kw) ./ REopt.KWH_PER_MMBTU ./ s.existing_boiler.efficiency - load_boiler_thermal = load_boiler_fuel * s.existing_boiler.efficiency - - # ExistingBoiler and SteamTurbine production - boiler_to_load = results["ExistingBoiler"]["thermal_to_load_series_mmbtu_per_hour"] - boiler_to_st = results["ExistingBoiler"]["thermal_to_steamturbine_series_mmbtu_per_hour"] - boiler_total = boiler_to_load + boiler_to_st - st_to_load = results["SteamTurbine"]["thermal_to_load_series_mmbtu_per_hour"] - - # Fuel/thermal **consumption** - boiler_fuel = results["ExistingBoiler"]["fuel_consumption_series_mmbtu_per_hour"] - steamturbine_thermal_in = results["SteamTurbine"]["thermal_consumption_series_mmbtu_per_hour"] - - # Check that all thermal supply to load meets the BAU load - thermal_to_load = sum(boiler_to_load) + sum(st_to_load) - @test thermal_to_load ≈ sum(load_boiler_thermal) atol=1.0 - - # Check the net electric efficiency of Boiler->SteamTurbine (electric out/fuel in) with the expected value from the Fact Sheet - steamturbine_electric = results["SteamTurbine"]["electric_production_series_kw"] - net_electric_efficiency = sum(steamturbine_electric) / (sum(boiler_fuel) * REopt.KWH_PER_MMBTU) - @test net_electric_efficiency ≈ 0.052 atol=0.005 - - # Check that the max production of the boiler is still less than peak heating load times thermal factor - factor = input_data["ExistingBoiler"]["max_thermal_factor_on_peak_load"] - boiler_capacity = maximum(load_boiler_thermal) * factor - @test maximum(boiler_total) <= boiler_capacity - end + """ + # Setup inputs, make heating load large to entice SteamTurbine + input_data = JSON.parsefile("scenarios/backpressure_steamturbine_inputs.json") + latitude = input_data["Site"]["latitude"] + longitude = input_data["Site"]["longitude"] + building = "Hospital" + elec_load_multiplier = 5.0 + heat_load_multiplier = 100.0 + input_data["ElectricLoad"]["doe_reference_name"] = building + input_data["SpaceHeatingLoad"]["doe_reference_name"] = building + input_data["DomesticHotWaterLoad"]["doe_reference_name"] = building + elec_load = REopt.ElectricLoad(latitude=latitude, longitude=longitude, doe_reference_name=building) + input_data["ElectricLoad"]["annual_kwh"] = elec_load_multiplier * sum(elec_load.loads_kw) + space_load = REopt.SpaceHeatingLoad(latitude=latitude, longitude=longitude, doe_reference_name=building, existing_boiler_efficiency=input_data["ExistingBoiler"]["efficiency"]) + input_data["SpaceHeatingLoad"]["annual_mmbtu"] = heat_load_multiplier * space_load.annual_mmbtu / input_data["ExistingBoiler"]["efficiency"] + dhw_load = REopt.DomesticHotWaterLoad(latitude=latitude, longitude=longitude, doe_reference_name=building, existing_boiler_efficiency=input_data["ExistingBoiler"]["efficiency"]) + input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = heat_load_multiplier * dhw_load.annual_mmbtu / input_data["ExistingBoiler"]["efficiency"] + s = Scenario(input_data) + inputs = REoptInputs(s) + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt([m1,m2], inputs) + + # The expected values below were directly copied from the REopt_API V2 expected values + @test results["Financial"]["lcc"] ≈ 189359280.0 rtol=0.001 + @test results["Financial"]["npv"] ≈ 8085233.0 rtol=0.01 + @test results["SteamTurbine"]["size_kw"] ≈ 2616.418 atol=1.0 + @test results["SteamTurbine"]["annual_thermal_consumption_mmbtu"] ≈ 1000557.6 rtol=0.001 + @test results["SteamTurbine"]["annual_electric_production_kwh"] ≈ 18970374.6 rtol=0.001 + @test results["SteamTurbine"]["annual_thermal_production_mmbtu"] ≈ 924045.1 rtol=0.001 + + # BAU boiler loads + load_boiler_fuel = (s.space_heating_load.loads_kw + s.dhw_load.loads_kw) ./ REopt.KWH_PER_MMBTU ./ s.existing_boiler.efficiency + load_boiler_thermal = load_boiler_fuel * s.existing_boiler.efficiency + + # ExistingBoiler and SteamTurbine production + boiler_to_load = results["ExistingBoiler"]["thermal_to_load_series_mmbtu_per_hour"] + boiler_to_st = results["ExistingBoiler"]["thermal_to_steamturbine_series_mmbtu_per_hour"] + boiler_total = boiler_to_load + boiler_to_st + st_to_load = results["SteamTurbine"]["thermal_to_load_series_mmbtu_per_hour"] + + # Fuel/thermal **consumption** + boiler_fuel = results["ExistingBoiler"]["fuel_consumption_series_mmbtu_per_hour"] + steamturbine_thermal_in = results["SteamTurbine"]["thermal_consumption_series_mmbtu_per_hour"] + + # Check that all thermal supply to load meets the BAU load + thermal_to_load = sum(boiler_to_load) + sum(st_to_load) + @test thermal_to_load ≈ sum(load_boiler_thermal) atol=1.0 + + # Check the net electric efficiency of Boiler->SteamTurbine (electric out/fuel in) with the expected value from the Fact Sheet + steamturbine_electric = results["SteamTurbine"]["electric_production_series_kw"] + net_electric_efficiency = sum(steamturbine_electric) / (sum(boiler_fuel) * REopt.KWH_PER_MMBTU) + @test net_electric_efficiency ≈ 0.052 atol=0.005 + + # Check that the max production of the boiler is still less than peak heating load times thermal factor + factor = input_data["ExistingBoiler"]["max_thermal_factor_on_peak_load"] + boiler_capacity = maximum(load_boiler_thermal) * factor + @test maximum(boiler_total) <= boiler_capacity + end - @testset "All heating supply/demand/storage energy balance" begin - """ - Validation to ensure that: - 1) Heat balance is correct with SteamTurbine (backpressure), CHP, HotTES, and AbsorptionChiller included - 2) The sum of a all thermal from techs supplying SteamTurbine is equal to SteamTurbine thermal consumption - 3) Techs are not supplying SteamTurbine with thermal if can_supply_steam_turbine = False - - :return: - """ - - # Start with steam turbine inputs, but adding a bunch below - input_data = JSON.parsefile("scenarios/backpressure_steamturbine_inputs.json") - input_data["ElectricLoad"]["doe_reference_name"] = "Hospital" - # Add SpaceHeatingLoad building for heating loads, ignore DomesticHotWaterLoad for simplicity of energy balance checks - input_data["SpaceHeatingLoad"]["doe_reference_name"] = "Hospital" - delete!(input_data, "DomesticHotWaterLoad") - - # Fix size of SteamTurbine, even if smaller than practical, because we're just looking at energy balances - input_data["SteamTurbine"]["min_kw"] = 30.0 - input_data["SteamTurbine"]["max_kw"] = 30.0 - - # Add CHP - input_data["CHP"] = Dict{Any, Any}([ - ("prime_mover", "recip_engine"), - ("size_class", 4), - ("min_kw", 250.0), - ("min_allowable_kw", 0.0), - ("max_kw", 250.0), - ("can_supply_steam_turbine", false), - ("fuel_cost_per_mmbtu", 8.0), - ("cooling_thermal_factor", 1.0) - ]) - - input_data["Financial"]["chp_fuel_cost_escalation_rate_fraction"] = 0.034 - - # Add CoolingLoad and AbsorptionChiller so we can test the energy balance on AbsorptionChiller too (thermal consumption) - input_data["CoolingLoad"] = Dict{Any, Any}("doe_reference_name" => "Hospital") - input_data["AbsorptionChiller"] = Dict{Any, Any}([ - ("min_ton", 600.0), - ("max_ton", 600.0), - ("cop_thermal", 0.7), - ("installed_cost_per_ton", 500.0), - ("om_cost_per_ton", 0.5) - ]) - - # Add Hot TES - input_data["HotThermalStorage"] = Dict{Any, Any}([ - ("min_gal", 50000.0), - ("max_gal", 50000.0) + @testset "All heating supply/demand/storage energy balance" begin + """ + Validation to ensure that: + 1) Heat balance is correct with SteamTurbine (backpressure), CHP, HotTES, and AbsorptionChiller included + 2) The sum of a all thermal from techs supplying SteamTurbine is equal to SteamTurbine thermal consumption + 3) Techs are not supplying SteamTurbine with thermal if can_supply_steam_turbine = False + + :return: + """ + + # Start with steam turbine inputs, but adding a bunch below + input_data = JSON.parsefile("scenarios/backpressure_steamturbine_inputs.json") + input_data["ElectricLoad"]["doe_reference_name"] = "Hospital" + # Add SpaceHeatingLoad building for heating loads, ignore DomesticHotWaterLoad for simplicity of energy balance checks + input_data["SpaceHeatingLoad"]["doe_reference_name"] = "Hospital" + delete!(input_data, "DomesticHotWaterLoad") + + # Fix size of SteamTurbine, even if smaller than practical, because we're just looking at energy balances + input_data["SteamTurbine"]["min_kw"] = 30.0 + input_data["SteamTurbine"]["max_kw"] = 30.0 + + # Add CHP + input_data["CHP"] = Dict{Any, Any}([ + ("prime_mover", "recip_engine"), + ("size_class", 4), + ("min_kw", 250.0), + ("min_allowable_kw", 0.0), + ("max_kw", 250.0), + ("can_supply_steam_turbine", false), + ("fuel_cost_per_mmbtu", 8.0), + ("cooling_thermal_factor", 1.0) ]) - - s = Scenario(input_data) - inputs = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) - results = run_reopt(m, inputs) - - thermal_techs = ["ExistingBoiler", "CHP", "SteamTurbine"] - thermal_loads = ["load", "storage", "steamturbine", "waste"] # We don't track AbsorptionChiller thermal consumption by tech - tech_to_thermal_load = Dict{Any, Any}() - for tech in thermal_techs - tech_to_thermal_load[tech] = Dict{Any, Any}() - for load in thermal_loads - if (tech == "SteamTurbine" && load == "steamturbine") || (load == "waste" && tech != "CHP") - tech_to_thermal_load[tech][load] = [0.0] * 8760 - else - if load == "waste" - tech_to_thermal_load[tech][load] = results[tech]["thermal_curtailed_series_mmbtu_per_hour"] + + input_data["Financial"]["chp_fuel_cost_escalation_rate_fraction"] = 0.034 + + # Add CoolingLoad and AbsorptionChiller so we can test the energy balance on AbsorptionChiller too (thermal consumption) + input_data["CoolingLoad"] = Dict{Any, Any}("doe_reference_name" => "Hospital") + input_data["AbsorptionChiller"] = Dict{Any, Any}([ + ("min_ton", 600.0), + ("max_ton", 600.0), + ("cop_thermal", 0.7), + ("installed_cost_per_ton", 500.0), + ("om_cost_per_ton", 0.5) + ]) + + # Add Hot TES + input_data["HotThermalStorage"] = Dict{Any, Any}([ + ("min_gal", 50000.0), + ("max_gal", 50000.0) + ]) + + s = Scenario(input_data) + inputs = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01)) + results = run_reopt(m, inputs) + + thermal_techs = ["ExistingBoiler", "CHP", "SteamTurbine"] + thermal_loads = ["load", "storage", "steamturbine", "waste"] # We don't track AbsorptionChiller thermal consumption by tech + tech_to_thermal_load = Dict{Any, Any}() + for tech in thermal_techs + tech_to_thermal_load[tech] = Dict{Any, Any}() + for load in thermal_loads + if (tech == "SteamTurbine" && load == "steamturbine") || (load == "waste" && tech != "CHP") + tech_to_thermal_load[tech][load] = [0.0] * 8760 else - tech_to_thermal_load[tech][load] = results[tech]["thermal_to_"*load*"_series_mmbtu_per_hour"] + if load == "waste" + tech_to_thermal_load[tech][load] = results[tech]["thermal_curtailed_series_mmbtu_per_hour"] + else + tech_to_thermal_load[tech][load] = results[tech]["thermal_to_"*load*"_series_mmbtu_per_hour"] + end end end end - end - # Hot TES is the other thermal supply - hottes_to_load = results["HotThermalStorage"]["storage_to_load_series_mmbtu_per_hour"] - - # BAU boiler loads - load_boiler_fuel = s.space_heating_load.loads_kw / input_data["ExistingBoiler"]["efficiency"] ./ REopt.KWH_PER_MMBTU - load_boiler_thermal = load_boiler_fuel .* input_data["ExistingBoiler"]["efficiency"] - - # Fuel/thermal **consumption** - boiler_fuel = results["ExistingBoiler"]["fuel_consumption_series_mmbtu_per_hour"] - chp_fuel_total = results["CHP"]["annual_fuel_consumption_mmbtu"] - steamturbine_thermal_in = results["SteamTurbine"]["thermal_consumption_series_mmbtu_per_hour"] - absorptionchiller_thermal_in = results["AbsorptionChiller"]["thermal_consumption_series_mmbtu_per_hour"] - - # Check that all thermal supply to load meets the BAU load plus AbsorptionChiller load which is not explicitly tracked - alltechs_thermal_to_load_total = sum([sum(tech_to_thermal_load[tech]["load"]) for tech in thermal_techs]) + sum(hottes_to_load) - thermal_load_total = sum(load_boiler_thermal) + sum(absorptionchiller_thermal_in) - @test alltechs_thermal_to_load_total ≈ thermal_load_total rtol=1e-5 - - # Check that all thermal to steam turbine is equal to steam turbine thermal consumption - alltechs_thermal_to_steamturbine_total = sum([sum(tech_to_thermal_load[tech]["steamturbine"]) for tech in ["ExistingBoiler", "CHP"]]) - @test alltechs_thermal_to_steamturbine_total ≈ sum(steamturbine_thermal_in) atol=3 - - # Check that "thermal_to_steamturbine" is zero for each tech which has input of can_supply_steam_turbine as False - for tech in ["ExistingBoiler", "CHP"] - if !(tech in inputs.techs.can_supply_steam_turbine) - @test sum(tech_to_thermal_load[tech]["steamturbine"]) == 0.0 + # Hot TES is the other thermal supply + hottes_to_load = results["HotThermalStorage"]["storage_to_load_series_mmbtu_per_hour"] + + # BAU boiler loads + load_boiler_fuel = s.space_heating_load.loads_kw / input_data["ExistingBoiler"]["efficiency"] ./ REopt.KWH_PER_MMBTU + load_boiler_thermal = load_boiler_fuel .* input_data["ExistingBoiler"]["efficiency"] + + # Fuel/thermal **consumption** + boiler_fuel = results["ExistingBoiler"]["fuel_consumption_series_mmbtu_per_hour"] + chp_fuel_total = results["CHP"]["annual_fuel_consumption_mmbtu"] + steamturbine_thermal_in = results["SteamTurbine"]["thermal_consumption_series_mmbtu_per_hour"] + absorptionchiller_thermal_in = results["AbsorptionChiller"]["thermal_consumption_series_mmbtu_per_hour"] + + # Check that all thermal supply to load meets the BAU load plus AbsorptionChiller load which is not explicitly tracked + alltechs_thermal_to_load_total = sum([sum(tech_to_thermal_load[tech]["load"]) for tech in thermal_techs]) + sum(hottes_to_load) + thermal_load_total = sum(load_boiler_thermal) + sum(absorptionchiller_thermal_in) + @test alltechs_thermal_to_load_total ≈ thermal_load_total rtol=1e-5 + + # Check that all thermal to steam turbine is equal to steam turbine thermal consumption + alltechs_thermal_to_steamturbine_total = sum([sum(tech_to_thermal_load[tech]["steamturbine"]) for tech in ["ExistingBoiler", "CHP"]]) + @test alltechs_thermal_to_steamturbine_total ≈ sum(steamturbine_thermal_in) atol=3 + + # Check that "thermal_to_steamturbine" is zero for each tech which has input of can_supply_steam_turbine as False + for tech in ["ExistingBoiler", "CHP"] + if !(tech in inputs.techs.can_supply_steam_turbine) + @test sum(tech_to_thermal_load[tech]["steamturbine"]) == 0.0 + end end end - end - @testset "Electric Heater" begin - d = JSON.parsefile("./scenarios/electric_heater.json") - d["SpaceHeatingLoad"]["annual_mmbtu"] = 0.5 * 8760 - d["DomesticHotWaterLoad"]["annual_mmbtu"] = 0.5 * 8760 - s = Scenario(d) - p = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt(m, p) - - #first run: Boiler produces the required heat instead of the electric heater - electric heater should not be purchased - @test results["ElectricHeater"]["size_mmbtu_per_hour"] ≈ 0.0 atol=0.1 - @test results["ElectricHeater"]["annual_thermal_production_mmbtu"] ≈ 0.0 atol=0.1 - @test results["ElectricHeater"]["annual_electric_consumption_kwh"] ≈ 0.0 atol=0.1 - @test results["ElectricUtility"]["annual_energy_supplied_kwh"] ≈ 87600.0 atol=0.1 - - d["ExistingBoiler"]["fuel_cost_per_mmbtu"] = 100 - d["ElectricHeater"]["installed_cost_per_mmbtu_per_hour"] = 1.0 - d["ElectricTariff"]["monthly_energy_rates"] = [0,0,0,0,0,0,0,0,0,0,0,0] - s = Scenario(d) - p = REoptInputs(s) - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - results = run_reopt(m, p) - - annual_thermal_prod = 0.8 * 8760 #80% efficient boiler --> 0.8 MMBTU of heat load per hour - annual_electric_heater_consumption = annual_thermal_prod * REopt.KWH_PER_MMBTU #1.0 COP - annual_energy_supplied = 87600 + annual_electric_heater_consumption - - #Second run: ElectricHeater produces the required heat with free electricity - @test results["ElectricHeater"]["size_mmbtu_per_hour"] ≈ 0.8 atol=0.1 - @test results["ElectricHeater"]["annual_thermal_production_mmbtu"] ≈ annual_thermal_prod rtol=1e-4 - @test results["ElectricHeater"]["annual_electric_consumption_kwh"] ≈ annual_electric_heater_consumption rtol=1e-4 - @test results["ElectricUtility"]["annual_energy_supplied_kwh"] ≈ annual_energy_supplied rtol=1e-4 + @testset "Electric Heater" begin + d = JSON.parsefile("./scenarios/electric_heater.json") + d["SpaceHeatingLoad"]["annual_mmbtu"] = 0.5 * 8760 + d["DomesticHotWaterLoad"]["annual_mmbtu"] = 0.5 * 8760 + s = Scenario(d) + p = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(m, p) - end + #first run: Boiler produces the required heat instead of the electric heater - electric heater should not be purchased + @test results["ElectricHeater"]["size_mmbtu_per_hour"] ≈ 0.0 atol=0.1 + @test results["ElectricHeater"]["annual_thermal_production_mmbtu"] ≈ 0.0 atol=0.1 + @test results["ElectricHeater"]["annual_electric_consumption_kwh"] ≈ 0.0 atol=0.1 + @test results["ElectricUtility"]["annual_energy_supplied_kwh"] ≈ 87600.0 atol=0.1 + + d["ExistingBoiler"]["fuel_cost_per_mmbtu"] = 100 + d["ElectricHeater"]["installed_cost_per_mmbtu_per_hour"] = 1.0 + d["ElectricTariff"]["monthly_energy_rates"] = [0,0,0,0,0,0,0,0,0,0,0,0] + s = Scenario(d) + p = REoptInputs(s) + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + results = run_reopt(m, p) - @testset "Custom REopt logger" begin - - # Throw a handled error - d = JSON.parsefile("./scenarios/logger.json") - - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt([m1,m2], d) - @test r["status"] == "error" - @test "Messages" ∈ keys(r) - @test "errors" ∈ keys(r["Messages"]) - @test "warnings" ∈ keys(r["Messages"]) - @test length(r["Messages"]["errors"]) > 0 - @test length(r["Messages"]["warnings"]) > 0 - @test r["Messages"]["has_stacktrace"] == false - - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt(m, d) - @test r["status"] == "error" - @test "Messages" ∈ keys(r) - @test "errors" ∈ keys(r["Messages"]) - @test "warnings" ∈ keys(r["Messages"]) - @test length(r["Messages"]["errors"]) > 0 - @test length(r["Messages"]["warnings"]) > 0 - - # Type is dict when errors, otherwise type REoptInputs - @test isa(REoptInputs(d), Dict) - - # Using filepath - n1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - n2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt([n1,n2], "./scenarios/logger.json") - @test r["status"] == "error" - @test "Messages" ∈ keys(r) - @test "errors" ∈ keys(r["Messages"]) - @test "warnings" ∈ keys(r["Messages"]) - @test length(r["Messages"]["errors"]) > 0 - @test length(r["Messages"]["warnings"]) > 0 - - n = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt(n, "./scenarios/logger.json") - @test r["status"] == "error" - @test "Messages" ∈ keys(r) - @test "errors" ∈ keys(r["Messages"]) - @test "warnings" ∈ keys(r["Messages"]) - @test length(r["Messages"]["errors"]) > 0 - @test length(r["Messages"]["warnings"]) > 0 - - # Throw an unhandled error: Bad URDB rate -> stack gets returned for debugging - d["ElectricLoad"]["doe_reference_name"] = "MidriseApartment" - d["ElectricTariff"]["urdb_label"] = "62c70a6c40a0c425535d387x" - - m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt([m1,m2], d) - @test r["status"] == "error" - @test "Messages" ∈ keys(r) - @test "errors" ∈ keys(r["Messages"]) - @test "warnings" ∈ keys(r["Messages"]) - @test length(r["Messages"]["errors"]) > 0 - @test length(r["Messages"]["warnings"]) > 0 - - m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt(m, d) - @test r["status"] == "error" - @test "Messages" ∈ keys(r) - @test "errors" ∈ keys(r["Messages"]) - @test "warnings" ∈ keys(r["Messages"]) - @test length(r["Messages"]["errors"]) > 0 - @test length(r["Messages"]["warnings"]) > 0 - - # Type is dict when errors, otherwise type REoptInputs - @test isa(REoptInputs(d), Dict) - - # Using filepath - n1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - n2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt([n1,n2], "./scenarios/logger.json") - @test r["status"] == "error" - @test "Messages" ∈ keys(r) - @test "errors" ∈ keys(r["Messages"]) - @test "warnings" ∈ keys(r["Messages"]) - @test length(r["Messages"]["errors"]) > 0 - @test length(r["Messages"]["warnings"]) > 0 - - n = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) - r = run_reopt(n, "./scenarios/logger.json") - @test r["status"] == "error" - @test "Messages" ∈ keys(r) - @test "errors" ∈ keys(r["Messages"]) - @test "warnings" ∈ keys(r["Messages"]) - @test length(r["Messages"]["errors"]) > 0 - @test length(r["Messages"]["warnings"]) > 0 + annual_thermal_prod = 0.8 * 8760 #80% efficient boiler --> 0.8 MMBTU of heat load per hour + annual_electric_heater_consumption = annual_thermal_prod * REopt.KWH_PER_MMBTU #1.0 COP + annual_energy_supplied = 87600 + annual_electric_heater_consumption + + #Second run: ElectricHeater produces the required heat with free electricity + @test results["ElectricHeater"]["size_mmbtu_per_hour"] ≈ 0.8 atol=0.1 + @test results["ElectricHeater"]["annual_thermal_production_mmbtu"] ≈ annual_thermal_prod rtol=1e-4 + @test results["ElectricHeater"]["annual_electric_consumption_kwh"] ≈ annual_electric_heater_consumption rtol=1e-4 + @test results["ElectricUtility"]["annual_energy_supplied_kwh"] ≈ annual_energy_supplied rtol=1e-4 + + end + + @testset "Custom REopt logger" begin + + # Throw a handled error + d = JSON.parsefile("./scenarios/logger.json") + + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt([m1,m2], d) + @test r["status"] == "error" + @test "Messages" ∈ keys(r) + @test "errors" ∈ keys(r["Messages"]) + @test "warnings" ∈ keys(r["Messages"]) + @test length(r["Messages"]["errors"]) > 0 + @test length(r["Messages"]["warnings"]) > 0 + @test r["Messages"]["has_stacktrace"] == false + + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt(m, d) + @test r["status"] == "error" + @test "Messages" ∈ keys(r) + @test "errors" ∈ keys(r["Messages"]) + @test "warnings" ∈ keys(r["Messages"]) + @test length(r["Messages"]["errors"]) > 0 + @test length(r["Messages"]["warnings"]) > 0 + + # Type is dict when errors, otherwise type REoptInputs + @test isa(REoptInputs(d), Dict) + + # Using filepath + n1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + n2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt([n1,n2], "./scenarios/logger.json") + @test r["status"] == "error" + @test "Messages" ∈ keys(r) + @test "errors" ∈ keys(r["Messages"]) + @test "warnings" ∈ keys(r["Messages"]) + @test length(r["Messages"]["errors"]) > 0 + @test length(r["Messages"]["warnings"]) > 0 + + n = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt(n, "./scenarios/logger.json") + @test r["status"] == "error" + @test "Messages" ∈ keys(r) + @test "errors" ∈ keys(r["Messages"]) + @test "warnings" ∈ keys(r["Messages"]) + @test length(r["Messages"]["errors"]) > 0 + @test length(r["Messages"]["warnings"]) > 0 + + # Throw an unhandled error: Bad URDB rate -> stack gets returned for debugging + d["ElectricLoad"]["doe_reference_name"] = "MidriseApartment" + d["ElectricTariff"]["urdb_label"] = "62c70a6c40a0c425535d387x" + + m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt([m1,m2], d) + @test r["status"] == "error" + @test "Messages" ∈ keys(r) + @test "errors" ∈ keys(r["Messages"]) + @test "warnings" ∈ keys(r["Messages"]) + @test length(r["Messages"]["errors"]) > 0 + @test length(r["Messages"]["warnings"]) > 0 + + m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt(m, d) + @test r["status"] == "error" + @test "Messages" ∈ keys(r) + @test "errors" ∈ keys(r["Messages"]) + @test "warnings" ∈ keys(r["Messages"]) + @test length(r["Messages"]["errors"]) > 0 + @test length(r["Messages"]["warnings"]) > 0 + + # Type is dict when errors, otherwise type REoptInputs + @test isa(REoptInputs(d), Dict) + + # Using filepath + n1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + n2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt([n1,n2], "./scenarios/logger.json") + @test r["status"] == "error" + @test "Messages" ∈ keys(r) + @test "errors" ∈ keys(r["Messages"]) + @test "warnings" ∈ keys(r["Messages"]) + @test length(r["Messages"]["errors"]) > 0 + @test length(r["Messages"]["warnings"]) > 0 + + n = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false)) + r = run_reopt(n, "./scenarios/logger.json") + @test r["status"] == "error" + @test "Messages" ∈ keys(r) + @test "errors" ∈ keys(r["Messages"]) + @test "warnings" ∈ keys(r["Messages"]) + @test length(r["Messages"]["errors"]) > 0 + @test length(r["Messages"]["warnings"]) > 0 + end end end From 6d08397e9b4069312999a9e47f09a0d0f8213df3 Mon Sep 17 00:00:00 2001 From: Zolan Date: Wed, 24 Apr 2024 22:11:33 -0600 Subject: [PATCH 08/13] Update CHANGELOG.md --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec1700084..6efd3a119 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,10 @@ Classify the change according to the following categories: ### Deprecated ### Removed +## Develop 2024-04-24 +### Changed +- Updated test sets "Emissions and Renewable Energy Percent" and "Minimize Unserved Load" to decrease computing time. + ## v0.45.0 ### Fixed - Added `export_rate_beyond_net_metering_limit` to list of inputs to be converted to type Real, to avoid MethodError if type is vector of Any. From 50c8d4b9f56d1a63b9936353e7875e95f96ccc30 Mon Sep 17 00:00:00 2001 From: Zolan Date: Tue, 30 Apr 2024 08:56:18 -0600 Subject: [PATCH 09/13] rm minimize unserved load comment --- test/runtests.jl | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index f6494a55d..7ee8cf786 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -216,8 +216,6 @@ else # run HiGHS tests # removed Wind test for two reasons # 1. reduce WindToolKit calls in tests # 2. HiGHS does not support SOS or indicator constraints, which are needed for export constraints - - # @testset "Minimize Unserved Load" is too slow with Cbc (killed after 8 hours) @testset "Simulated load function consistency with REoptInputs.s (Scenario)" begin """ From e68ac127f70b4946dc11fe9fb03d0a44097158d0 Mon Sep 17 00:00:00 2001 From: Zolan Date: Tue, 30 Apr 2024 12:37:50 -0600 Subject: [PATCH 10/13] move test edits to .json files --- test/runtests.jl | 32 -------------------- test/scenarios/outage.json | 30 +++++++++--------- test/scenarios/outages_gen_pv_wind_stor.json | 12 ++++---- 3 files changed, 21 insertions(+), 53 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 7ee8cf786..87a7a7c6c 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -908,23 +908,6 @@ else # run HiGHS tests @testset "Minimize Unserved Load" begin d = JSON.parsefile("./scenarios/outage.json") - d["ElectricLoad"]["loads_kw"] = ones(8760)*200.0 - d["ElectricLoad"]["loads_kw"][5100:5109] .= 410.0 - d["ElectricLoad"]["loads_kw"][5200:5209] .= 410.0 - d["ElectricLoad"]["critical_load_fraction"] = 0.5 - d["PV"]["existing_kw"] = 0.0 - d["PV"]["min_kw"] = 100.0 - d["PV"]["max_kw"] = 100.0 - d["CHP"]["min_kw"] = 100.0 - d["CHP"]["max_kw"] = 100.0 - d["Generator"]["existing_kw"] = 0.0 - d["Generator"]["min_kw"] = 100.0 - d["Generator"]["max_kw"] = 100.0 - d["ElectricStorage"]["min_kw"] = 20 - d["ElectricStorage"]["max_kw"] = 20 - d["ElectricStorage"]["min_kwh"] = 50 - d["ElectricStorage"]["max_kwh"] = 50 - d["Financial"]["microgrid_upgrade_cost_fraction"] = 0.0 s = Scenario(d) p = REoptInputs(s) m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) @@ -971,21 +954,6 @@ else # run HiGHS tests # Scenario with generator, PV, wind, electric storage d = JSON.parsefile("./scenarios/outages_gen_pv_wind_stor.json") - d["ElectricLoad"]["loads_kw"] = ones(8760)*200.0 - d["ElectricLoad"]["loads_kw"][5100:5119] .= 425.0 - d["ElectricLoad"]["critical_load_fraction"] = 0.5 - d["PV"]["existing_kw"] = 0.0 - d["PV"]["min_kw"] = 100.0 - d["PV"]["max_kw"] = 100.0 - d["Wind"]["min_kw"] = 100.0 - d["Wind"]["max_kw"] = 100.0 - d["Generator"]["min_kw"] = 100.0 - d["Generator"]["max_kw"] = 100.0 - d["ElectricStorage"]["min_kw"] = 100 - d["ElectricStorage"]["max_kw"] = 100 - d["ElectricStorage"]["min_kwh"] = 100 - d["ElectricStorage"]["max_kwh"] = 100 - d["Site"]["min_resil_time_steps"] = 1 s = Scenario(d) p = REoptInputs(s) m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) diff --git a/test/scenarios/outage.json b/test/scenarios/outage.json index 9b7f560be..defb09a16 100644 --- a/test/scenarios/outage.json +++ b/test/scenarios/outage.json @@ -12,8 +12,8 @@ "fuel_avail_gal": 660, "installed_cost_per_kw": 500.0, "existing_kw": 0.0, - "min_kw": 150.0, - "max_kw": 150.0, + "min_kw": 100.0, + "max_kw": 100.0, "min_turn_down_fraction": 0.0, "only_runs_during_grid_outage": true, "sells_energy_back_to_grid": false, @@ -26,13 +26,15 @@ "thermal_efficiency_full_load": 0.0, "prime_mover": "recip_engine", "fuel_cost_per_mmbtu": 12.0, - "min_kw": 150.0, - "max_kw": 150.0, + "min_kw": 100.0, + "max_kw": 100.0, "electric_efficiency_full_load": 0.35, "electric_efficiency_half_load": 0.35 }, "PV": { - "existing_kw": 3580.54, + "existing_kw": 0.0, + "min_kw": 100.0, + "max_kw": 100.0, "array_type": 0, "installed_cost_per_kw": 1600, "om_cost_per_kw": 16, @@ -41,15 +43,9 @@ "tilt": 39.7407 }, "ElectricLoad": { - "loads_kw": [4323.64, 4308.39, 4295.48, 4271.64, 4319.28, 4336.74, 4421.35, 4482.93, 4422.83, 4344.48, 4261.96, 4286.53, 4301.41, 4147.72, 4185.52, 4286.8, 4445.29, 4458.0, 4336.69, 4317.69, 4300.78, 4291.04, 4292.25, 4315.47, 4247.3, 4218.67, 4238.63, 4228.93, 4293.92, 4398.98, 4602.42, 4815.42, 4803.33, 4650.81, 4541.7, 4503.76, 4531.09, 4233.49, 4324.4, 4681.81, 4990.46, 4924.16, 4799.32, 4695.37, 4666.73, 4597.43, 4539.11, 4535.19, 4515.26, 4464.25, 4460.85, 4455.56, 4488.93, 4575.65, 4761.71, 4892.84, 4886.55, 4605.59, 4525.02, 4315.76, 4041.62, 3937.99, 4172.83, 4766.61, 5374.5, 5329.88, 5093.43, 4960.34, 4934.57, 4852.97, 4577.29, 4609.88, 4716.62, 4576.74, 4579.92, 4539.74, 4464.88, 4522.4, 4734.03, 5002.09, 4606.45, 4258.07, 3804.13, 3533.84, 3903.99, 3468.96, 4044.32, 4748.29, 5118.08, 4950.02, 4690.49, 4604.56, 4548.75, 4501.28, 4502.22, 4456.13, 4421.56, 4462.61, 4452.3, 4443.08, 4483.97, 4472.32, 4484.96, 4448.46, 3960.69, 3247.24, 2846.28, 2842.1, 2739.37, 3444.7, 3791.82, 4151.74, 4302.42, 4299.63, 4305.64, 4343.54, 4374.35, 4390.37, 4375.31, 4398.61, 4467.47, 4484.25, 4479.71, 4455.08, 4463.78, 4474.53, 4458.66, 4444.69, 4256.89, 3719.34, 2866.52, 3549.03, 3478.85, 3805.98, 3781.37, 3866.19, 4431.2, 4413.65, 4483.14, 4504.05, 4486.59, 4420.69, 4383.44, 4412.2, 4393.28, 4281.31, 4240.78, 4251.79, 4271.73, 4415.11, 4616.29, 4707.06, 4750.5, 3832.05, 3410.26, 3249.13, 3258.47, 3384.71, 3681.25, 4280.07, 4768.69, 4661.44, 4523.52, 4426.41, 4375.74, 4297.02, 4198.59, 4246.83, 4196.98, 4132.39, 4117.31, 4071.65, 4143.66, 4291.08, 4448.57, 4664.64, 4347.08, 4083.46, 3539.45, 3264.22, 3179.43, 3515.78, 3732.88, 4538.87, 4870.39, 4823.55, 4661.51, 4561.73, 4548.97, 4502.05, 4424.13, 4355.49, 4286.6, 4264.79, 4232.77, 4194.08, 4375.98, 4518.39, 4674.51, 4789.32, 4729.34, 4348.58, 3841.36, 3761.52, 3951.71, 4083.24, 4186.86, 4548.16, 4793.24, 4725.72, 4602.47, 4491.89, 4446.74, 4346.45, 4304.56, 4267.31, 4222.26, 4157.26, 4074.21, 4076.69, 4158.05, 4257.71, 4500.97, 4633.32, 4432.43, 3894.7, 3725.15, 3583.0, 3830.45, 4142.73, 4505.61, 4811.05, 4835.64, 4774.91, 4600.66, 4522.46, 4373.94, 4390.43, 4315.79, 4318.38, 4302.49, 4340.11, 4290.5, 4330.29, 4374.02, 4448.4, 4608.39, 4822.06, 5015.06, 5045.16, 5071.89, 5001.03, 4876.33, 4896.09, 4896.19, 4902.12, 4844.39, 4726.15, 4607.51, 4416.88, 4256.58, 4148.41, 4099.93, 4091.19, 4072.65, 4071.07, 4030.93, 4005.13, 4000.97, 4015.2, 4034.1, 4026.31, 3988.55, 4002.34, 4000.24, 3936.9, 3895.07, 3935.2, 3755.8, 3894.27, 4140.38, 4153.87, 4121.22, 4131.57, 4143.25, 4140.24, 4149.93, 4151.26, 4140.98, 4152.26, 4214.71, 4147.95, 4138.23, 4115.49, 4087.49, 4076.08, 3976.25, 3566.66, 3424.71, 3389.2, 3360.67, 3331.54, 3399.84, 3680.34, 3964.78, 4001.87, 4004.12, 4006.29, 4022.77, 4000.72, 3965.4, 3982.3, 3973.69, 3958.99, 3949.1, 3965.64, 4010.83, 4094.21, 4415.24, 4528.95, 4512.85, 4219.14, 4154.75, 4254.72, 4261.65, 4182.41, 4211.69, 4601.67, 4850.98, 4666.18, 4507.8, 4421.74, 4382.89, 4281.77, 4175.89, 4139.59, 4153.19, 4140.9, 4122.94, 4104.15, 4130.21, 4250.83, 4526.32, 4677.69, 4702.31, 4442.11, 4224.85, 4247.51, 4272.54, 4487.73, 4204.7, 4680.22, 4804.11, 4769.6, 4574.44, 4440.73, 4396.0, 4367.98, 4364.06, 4293.07, 4276.85, 4246.25, 4242.15, 4221.69, 4222.99, 4353.22, 4656.71, 4813.56, 4843.44, 4723.01, 4414.05, 4410.41, 4307.58, 4682.01, 4651.67, 5463.03, 4898.98, 4670.98, 4587.67, 4470.73, 4473.55, 4409.96, 4332.3, 4242.39, 4327.27, 4271.9, 4198.03, 4169.6, 4239.98, 4315.44, 4612.4, 4686.71, 4551.36, 4198.42, 4003.78, 3748.31, 3729.4, 3904.22, 4513.87, 4417.52, 4738.27, 4722.74, 4560.05, 4456.36, 4354.26, 4149.44, 4107.0, 4059.98, 4058.65, 4043.27, 4025.78, 4009.09, 4046.25, 4127.91, 4393.47, 4601.16, 4704.53, 4857.03, 5612.18, 5399.08, 4847.33, 5542.97, 4705.56, 4608.99, 4548.1, 4563.38, 4473.06, 4408.12, 4526.52, 4540.09, 4213.35, 4196.91, 4194.58, 4172.37, 4063.34, 4054.13, 4121.11, 4133.07, 4133.57, 4161.31, 3972.5, 3695.74, 3501.6, 3429.11, 3282.14, 3478.34, 3822.26, 3789.47, 3948.61, 3981.8, 3946.3, 3938.54, 3927.84, 3940.65, 3911.13, 3945.68, 3892.23, 3868.0, 3851.13, 3825.54, 3872.65, 3920.61, 4084.76, 4087.97, 3742.23, 3032.17, 2811.1, 2807.72, 2331.29, 2608.63, 2608.41, 3416.36, 3924.54, 3993.08, 3984.4, 4004.56, 4015.19, 3987.76, 3928.23, 3925.31, 3874.81, 3864.18, 3834.89, 3833.03, 3881.64, 3971.52, 4245.1, 4374.82, 3983.14, 3374.15, 3683.9, 3527.74, 3392.07, 2823.72, 4248.88, 4440.6, 4626.77, 4656.5, 4453.91, 4344.04, 4341.11, 4334.49, 4296.7, 4275.87, 4216.65, 4170.43, 4191.31, 4226.58, 4345.2, 4481.07, 4676.87, 4806.05, 4876.29, 4539.42, 4709.14, 4305.8, 4307.69, 4336.87, 4495.52, 4650.44, 4834.72, 4846.43, 4677.61, 4582.53, 4531.0, 4487.53, 4429.93, 4372.81, 4293.01, 4256.51, 4266.95, 4352.13, 4408.24, 4496.63, 4696.94, 4843.94, 4380.31, 4235.1, 4389.71, 4259.42, 4436.08, 4083.05, 4139.03, 4189.88, 4790.53, 4793.77, 4600.46, 4504.93, 4494.03, 4401.52, 4254.6, 4223.15, 4136.71, 4136.65, 4150.63, 4133.65, 4128.53, 4248.68, 4525.2, 4717.43, 4843.45, 4887.74, 4938.4, 5021.32, 5024.44, 4707.71, 4648.93, 4445.27, 4722.37, 4713.03, 4583.14, 4504.4, 4462.22, 4315.85, 4198.62, 4168.04, 4138.87, 4105.88, 4133.22, 4192.46, 4325.1, 4472.44, 4620.21, 4710.98, 4623.53, 4399.13, 4236.38, 3928.27, 3778.26, 3689.32, 4429.33, 4567.39, 4590.64, 4663.86, 4628.23, 4533.04, 4491.57, 4433.91, 4297.08, 4275.51, 4201.88, 4140.71, 4147.78, 4091.6, 4117.32, 4168.56, 4155.16, 4196.33, 3946.22, 3142.54, 3030.13, 2829.3, 2285.85, 2240.33, 2724.42, 3372.57, 4037.31, 4088.45, 4148.92, 4149.75, 4135.1, 4159.19, 4273.27, 4155.5, 4211.63, 4213.77, 4109.43, 4045.49, 4040.1, 4063.71, 4313.1, 4302.19, 3698.78, 3346.44, 3545.59, 3192.21, 3776.77, 3852.31, 3774.31, 3648.51, 3910.44, 4021.84, 4046.77, 4039.84, 3976.62, 4022.19, 4093.98, 4250.99, 4186.82, 4113.48, 4051.89, 4049.69, 4111.78, 4166.42, 4492.49, 4765.79, 4729.77, 4765.96, 4770.06, 4742.08, 4524.45, 4388.71, 4400.17, 4485.86, 4674.56, 4681.14, 4500.09, 4406.91, 4263.39, 4174.55, 4084.17, 4060.7, 4058.1, 4035.27, 4037.96, 4038.6, 4090.17, 4159.28, 4451.05, 4590.49, 4503.53, 4512.06, 4445.9, 4307.37, 4172.37, 4297.41, 4413.34, 4620.33, 4934.79, 4984.59, 4609.11, 4486.46, 4490.24, 4433.55, 4331.25, 4300.11, 4285.11, 4258.63, 4221.19, 4241.0, 4247.62, 4392.48, 4635.23, 4714.63, 4604.03, 4819.5, 4640.53, 4516.92, 4392.26, 4510.06, 4540.59, 4521.35, 4522.74, 4613.82, 4487.42, 4413.72, 4336.78, 4293.85, 4206.26, 4172.24, 4158.55, 4142.27, 4121.97, 4126.32, 4190.69, 4270.19, 4555.93, 4675.56, 4511.19, 4076.7, 3788.34, 3452.08, 3181.89, 2988.42, 3226.48, 3863.48, 4470.76, 4514.31, 4451.27, 4483.94, 4192.27, 4127.84, 4065.85, 4091.16, 4052.1, 4029.16, 4028.99, 4026.69, 4102.8, 4200.26, 4568.76, 4609.34, 4097.38, 3371.96, 2930.87, 2726.47, 2806.64, 2914.1, 3178.63, 3783.78, 4548.57, 4569.14, 4444.37, 4357.02, 4292.17, 4193.66, 4195.75, 4127.11, 4132.94, 4097.79, 4070.47, 4068.08, 4110.34, 4123.03, 4152.07, 4097.43, 3396.81, 2801.35, 2339.68, 2101.91, 2564.98, 3451.07, 3538.42, 3273.73, 3904.0, 3983.43, 3932.88, 3937.85, 3926.76, 3907.37, 3911.94, 3920.04, 3895.08, 3894.83, 3924.94, 3888.14, 3903.88, 3922.07, 3953.68, 3939.88, 3745.49, 3271.16, 2150.82, 1970.94, 1883.48, 1987.43, 2440.35, 3070.07, 3823.81, 3927.45, 3913.1, 3954.85, 3946.1, 3935.42, 3914.01, 3902.14, 3876.03, 3848.21, 3861.44, 3842.12, 3870.8, 3931.22, 4201.29, 4302.18, 3981.51, 3242.25, 3652.5, 3639.18, 3595.91, 3659.69, 3793.5, 4604.97, 4926.66, 4542.53, 4413.17, 4252.45, 4216.86, 4155.42, 4025.63, 4047.58, 4033.14, 4025.03, 4023.3, 4019.34, 4058.73, 4221.45, 4428.16, 4615.43, 4141.83, 3340.11, 2941.4, 2780.72, 2730.75, 2786.18, 2946.69, 3602.28, 4492.37, 4576.23, 4393.81, 4214.03, 4193.9, 4109.6, 4016.39, 3985.27, 3965.41, 3961.84, 3964.85, 3974.7, 4026.78, 4253.42, 4494.71, 4731.69, 4998.48, 4951.94, 4869.45, 4939.75, 5078.94, 4853.56, 4807.9, 4741.15, 4669.74, 4675.43, 4602.82, 4511.31, 4516.89, 4439.02, 4411.66, 4365.71, 4483.89, 4371.77, 4344.08, 4302.99, 4420.0, 4492.8, 4697.24, 4776.87, 4713.15, 4735.91, 4850.71, 4920.16, 4985.34, 4975.46, 5010.66, 4998.94, 5014.84, 4838.83, 4756.2, 4681.75, 4573.58, 4499.16, 4443.86, 4394.72, 4405.62, 4427.44, 4348.02, 4465.87, 4415.55, 4472.55, 4656.53, 4914.05, 4908.63, 4942.16, 4957.02, 4928.15, 4634.67, 4482.75, 4366.23, 4394.26, 4586.6, 4648.34, 4603.83, 4495.01, 4454.98, 4393.16, 4338.18, 4251.1, 4230.68, 4166.23, 4151.19, 4125.42, 4131.09, 4163.09, 4164.71, 4132.03, 3852.05, 3548.11, 3471.06, 3402.22, 3386.07, 3393.41, 3524.88, 3910.54, 4040.11, 4117.54, 4135.34, 4120.7, 4091.53, 4115.75, 4118.22, 4163.71, 4097.08, 4135.21, 4095.36, 4093.18, 4126.82, 4172.46, 4159.99, 4092.81, 3806.09, 3348.48, 3211.17, 3067.13, 2989.55, 2916.86, 2934.04, 3438.95, 3988.62, 4174.64, 4185.52, 4174.11, 4151.73, 4123.58, 4185.81, 4195.27, 4122.83, 4096.3, 4099.12, 4095.22, 4108.48, 4269.57, 4482.95, 4578.72, 4201.63, 3688.93, 3427.11, 3264.64, 3898.2, 3324.33, 4259.38, 4731.94, 4683.51, 4885.18, 4805.22, 4695.57, 4641.51, 4580.01, 4524.93, 4532.04, 4504.67, 4490.89, 4460.15, 4435.92, 4451.51, 4520.23, 4749.92, 4829.27, 4440.78, 3860.73, 3538.18, 4286.08, 3477.64, 3158.61, 3367.53, 4572.01, 4503.7, 4853.19, 4789.09, 4648.4, 4571.98, 4519.53, 4463.57, 4459.18, 4453.13, 4433.21, 4371.21, 4384.6, 4384.28, 4472.77, 4662.32, 4749.08, 4200.72, 3395.45, 3478.66, 3551.04, 3402.33, 4169.11, 3827.64, 4521.79, 4738.3, 4778.47, 4629.45, 4587.1, 4619.71, 4494.27, 4390.62, 4486.43, 4433.5, 4403.45, 4355.46, 4306.31, 4318.75, 4369.41, 4517.17, 4607.35, 4503.71, 4463.51, 4237.43, 4282.75, 4371.77, 4515.98, 4586.66, 4722.42, 4708.18, 4745.97, 4653.31, 4532.98, 4412.36, 4236.63, 4245.41, 4257.66, 4228.49, 4225.47, 4166.43, 4158.29, 4247.22, 4317.14, 4660.47, 4606.0, 3915.54, 3260.23, 2847.06, 2569.19, 2582.74, 2771.35, 3003.75, 3547.52, 4315.33, 4534.66, 4425.07, 4373.81, 4359.88, 4205.88, 4124.88, 4204.14, 4168.44, 4164.1, 4179.15, 4132.25, 4143.38, 4210.59, 4176.99, 3919.0, 3893.84, 3608.19, 2404.75, 3861.73, 4131.4, 4095.73, 3955.8, 3724.54, - 3862.3, 4212.78, 4192.55, 4135.0, 4111.2, 4141.85, 4089.69, 4100.44, 4142.64, 4151.85, 4095.55, 4118.0, 4146.11, 4137.73, 4151.92, 4117.24, 3976.53, 2474.1, 2120.69, 3517.99, 1952.57, 3573.86, 3656.9, 3868.36, 4041.82, 4068.22, 4064.16, 4097.3, 4072.91, 4053.41, 4028.3, 4005.47, 4001.42, 4053.46, 4076.47, 4051.34, 4055.0, 4123.11, 4222.16, 4273.29, 4226.25, 4155.53, 3977.75, 4046.81, 4102.34, 4097.95, 4263.22, 4463.46, 4453.67, 4419.8, 4254.58, 4180.37, 4166.92, 4142.43, 4112.85, 4099.59, 4049.96, 4059.1, 4061.21, 4048.25, 4121.44, 4241.34, 4430.3, 4670.47, 4835.62, 4803.62, 4776.23, 4742.79, 4790.33, 4765.9, 4751.0, 4800.66, 4771.92, 4713.45, 4576.7, 4508.21, 4513.21, 4389.95, 4336.63, 4323.51, 4301.07, 4239.74, 4279.87, 4213.08, 4279.32, 4346.51, 4617.89, 4710.04, 4726.97, 4691.75, 4429.07, 4191.42, 3998.7, 3931.26, 4008.74, 4225.65, 4555.52, 4653.29, 4592.11, 4541.57, 4504.46, 4480.85, 4406.52, 4406.89, 4341.19, 4382.75, 4335.0, 4281.97, 4314.72, 4391.52, 4606.73, 4663.37, 4428.92, 4551.15, 4089.73, 3986.18, 3746.3, 3926.53, 4475.3, 4229.09, 4658.15, 4760.8, 4617.23, 4484.19, 4446.0, 4407.73, 4292.45, 4364.67, 4328.29, 4342.33, 4280.19, 4307.54, 4322.21, 4390.15, 4593.12, 4756.73, 4859.72, 4910.57, 4941.7, 4752.14, 4641.22, 4682.65, 4929.0, 4990.42, 4933.42, 4702.57, 4536.43, 4520.76, 4487.01, 4402.1, 4430.7, 4345.76, 4245.7, 4301.27, 4335.93, 4340.56, 4346.9, 4388.59, 4363.13, 4254.05, 4054.17, 3607.57, 3624.4, 3545.03, 3431.82, 3542.19, 3259.03, 3496.45, 3985.54, 4125.72, 4150.37, 4101.47, 4135.74, 4139.54, 4106.42, 4112.37, 4067.06, 4078.83, 4024.89, 4042.52, 4045.64, 4084.25, 4073.15, 3995.37, 3579.73, 3405.19, 3344.47, 3227.0, 3012.05, 2936.24, 2927.48, 3302.91, 3950.78, 4240.11, 4235.45, 4230.93, 4246.81, 4202.78, 4193.76, 4246.69, 4225.16, 4194.01, 4174.71, 4211.92, 4198.04, 4366.61, 4452.02, 4299.21, 4123.21, 3481.21, 3339.38, 3452.83, 3060.12, 4005.86, 3553.24, 3581.03, 4568.63, 4704.24, 4640.18, 4549.77, 4500.23, 4431.18, 4324.26, 4255.52, 4218.7, 4235.16, 4202.28, 4209.21, 4265.19, 4381.07, 4524.19, 4556.12, 4193.51, 3596.92, 3638.61, 2771.6, 2734.53, 2795.81, 3062.3, 3760.48, 4613.93, 4706.62, 4421.76, 4405.68, 4432.44, 4344.97, 4219.56, 4312.44, 4236.53, 4240.56, 4283.56, 4350.8, 4446.14, 4526.18, 4699.41, 4860.51, 5005.98, 5023.67, 4480.5, 3389.82, 3047.32, 2977.94, 4466.1, 4560.63, 4803.71, 4822.79, 4761.84, 4716.64, 4658.45, 4602.58, 4539.1, 4500.25, 4497.59, 4511.47, 4420.67, 4408.82, 4410.36, 4520.15, 4654.25, 4711.76, 4198.98, 4219.2, 4137.97, 3795.57, 3884.49, 4408.74, 4614.36, 4693.19, 4826.85, 4968.73, 4830.96, 4709.76, 4641.4, 4549.03, 4454.76, 4442.96, 4395.39, 4467.33, 4430.6, 4415.23, 4445.71, 4553.05, 4682.86, 4659.16, 3966.04, 3522.36, 3415.54, 4146.83, 4447.72, 4611.73, 3601.23, 4828.36, 4721.0, 4819.71, 4732.06, 4671.14, 4610.83, 4566.52, 4515.22, 4523.06, 4492.72, 4454.32, 4486.67, 4514.08, 4454.54, 4499.87, 4499.57, 4492.68, 3721.18, 3801.28, 3944.5, 3782.96, 3963.33, 4123.88, 4122.44, 4224.34, 4252.04, 4280.8, 4270.78, 4283.46, 4248.16, 4232.09, 4218.37, 4221.98, 4203.38, 4153.79, 4162.8, 4126.73, 4200.06, 4196.27, 4233.43, 4185.42, 4049.22, 3929.59, 3894.95, 3893.51, 3939.26, 3989.14, 3985.47, 4053.68, 4111.55, 4119.34, 4162.2, 4181.22, 4164.06, 4195.5, 4157.6, 4156.52, 4093.56, 4057.03, 4052.31, 4059.33, 4073.24, 4114.48, 4379.93, 4456.1, 4472.26, 4738.88, 4919.18, 4842.02, 4825.93, 4818.63, 4747.88, 4227.6, 4461.22, 4513.99, 4468.75, 4427.94, 4518.95, 4480.49, 4491.31, 4486.41, 4417.14, 4401.4, 4400.15, 4414.46, 4411.41, 4479.56, 4716.52, 4711.97, 4571.91, 4474.6, 4511.15, 4481.38, 4460.15, 4260.21, 4196.69, 4367.74, 4598.91, 4618.59, 4555.73, 4555.13, 4561.82, 4427.21, 4284.19, 4319.25, 4343.12, 4320.8, 4280.13, 4244.35, 4352.73, 4395.35, 4555.15, 4646.57, 4626.8, 4329.1, 4400.82, 4688.27, 4845.77, 4761.12, 4970.84, 5039.59, 5813.94, 4883.49, 4784.14, 4737.03, 4705.07, 4629.14, 4588.3, 4588.36, 4567.05, 4516.21, 4520.2, 4488.64, 4484.23, 4545.06, 4678.17, 4832.27, 4745.66, 4286.61, 4691.38, 4640.95, 3611.23, 2975.5, 3281.16, 4362.29, 5568.74, 5608.57, 4764.27, 4644.62, 4623.2, 4573.41, 4600.11, 4580.7, 4508.42, 4525.04, 4478.46, 4449.69, 4479.68, 4559.4, 4641.0, 4461.67, 3799.09, 3748.86, 4003.57, 3582.9, 3374.08, 3914.8, 4253.47, 4656.68, 4715.66, 4596.94, 4619.27, 4538.24, 4496.72, 4329.77, 4222.69, 4196.91, 4179.44, 4166.53, 4167.45, 4118.21, 4178.64, 4223.61, 4192.4, 3853.15, 2754.53, 2610.77, 2213.66, 2010.01, 3045.63, 1827.54, 1981.72, 2779.37, 3528.69, 4032.29, 4094.8, 4085.86, 4211.32, 4289.97, 4161.37, 4218.14, 4094.33, 4004.11, 3987.39, 3981.54, 4011.52, 3992.18, 4018.11, 3994.87, 3557.9, 2822.58, 2353.54, 2038.64, 1737.17, 1986.36, 2874.13, 3444.97, 3162.67, 3859.61, 4260.59, 4294.31, 4302.9, 4398.82, 4367.73, 4310.5, 4283.72, 4245.87, 4156.54, 4162.32, 4193.62, 4271.3, 4531.09, 4783.65, 4876.38, 4760.3, 4489.17, 4119.87, 3681.0, 3833.68, 4284.68, 4205.11, 4731.35, 4512.76, 4706.61, 4703.32, 4687.82, 4630.09, 4558.57, 4537.54, 4505.09, 4493.42, 4470.98, 4425.69, 4427.93, 4455.73, 4672.92, 4892.84, 4853.53, 4420.89, 4009.19, 3752.14, 3753.58, 3718.35, 3991.51, 3711.83, 4330.29, 4517.37, 4653.75, 4611.97, 4567.66, 4523.83, 4537.06, 4524.88, 4499.43, 4505.26, 4493.55, 4450.46, 4459.96, 4538.14, 4715.16, 4866.98, 5135.8, 5079.42, 5116.93, 4852.67, 4637.39, 4565.87, 4538.03, 4512.87, 4448.46, 4403.72, 4345.05, 4268.15, 4301.12, 4403.1, 4424.09, 4341.89, 4282.28, 4241.22, 4268.37, 4206.98, 4145.1, 4227.85, 4349.23, 4522.11, 4509.7, 4553.55, 4691.56, 4617.11, 4554.74, 4281.91, 4276.03, 4444.44, 4444.62, 4380.07, 4473.81, 4560.03, 4580.89, 4509.66, 4502.52, 4413.0, 4383.92, 4466.09, 4470.35, 4371.01, 4406.16, 4504.35, 4733.0, 4725.34, 4639.02, 4334.26, 4210.11, 3803.13, 3433.07, 3339.49, 3202.15, 3324.04, 3511.03, 4058.5, 4500.16, 4606.82, 4561.58, 4468.78, 4404.14, 4432.33, 4402.63, 4415.08, 4399.42, 4366.16, 4404.0, 4393.72, 4470.48, 4521.37, 4078.24, 3336.49, 2920.4, 2686.33, 2470.07, 2383.95, 2440.76, 2617.87, 3032.07, 3758.95, 4313.54, 4424.05, 4268.9, 4249.59, 4244.12, 4439.74, 4313.78, 4257.65, 4227.62, 4294.79, 4398.63, 4439.08, 4386.0, 4316.24, 3778.47, 2922.1, 2427.92, 2050.73, 1756.15, 1742.28, 1741.09, 2088.31, 2564.43, 3450.61, 3956.39, 4046.13, 4027.85, 4045.65, 4023.74, 4065.93, 4072.67, 4034.85, 4029.87, 4031.81, 4061.14, 4177.88, 4380.26, 4539.5, 4452.29, 4087.92, 3641.6, 3160.87, 2842.45, 3039.1, 3225.13, 3369.15, 4126.85, 4189.17, 4446.99, 4429.78, 4378.48, 4326.39, 4285.49, 4259.87, 4219.66, 4170.28, 4143.2, 4131.0, 4187.15, 4322.68, 4581.29, 4637.92, 4644.75, 4282.13, 3840.44, 4397.42, 4409.09, 3465.9, 4350.66, 3295.97, 3748.6, 4381.25, 4467.24, 4502.23, 4527.63, 4465.89, 4228.84, 4239.33, 4200.28, 4251.97, 4360.88, 4372.17, 4352.77, 4444.04, 4653.23, 4696.26, 4203.56, 3866.94, 3310.35, 2846.75, 2617.94, 2488.97, 2648.37, 2902.64, 3274.99, 3907.81, 4346.65, 4319.39, 4217.3, 4212.55, 4114.83, 4132.23, 4112.05, 4122.33, 4153.21, 4141.94, 4171.64, 4295.3, 4510.97, 4598.39, 4166.53, 3858.57, 3833.36, 3848.35, 3336.13, 3985.83, 4445.4, 4008.75, 4132.61, 4192.63, 4493.74, 4495.21, 4439.08, 4346.56, 4245.71, 4217.69, 4315.65, 4214.47, 4247.24, 4260.57, 4311.54, 4361.41, 4636.01, 4803.76, 4904.24, 4641.87, 4361.94, 3601.47, 3257.57, 3073.53, 4834.71, 5333.58, 5145.88, 4502.74, 4525.58, 4498.56, 4511.42, 4471.63, 4393.49, 4386.87, 4380.27, 4339.46, 4341.07, 4335.95, 4380.39, 4363.7, 4361.48, 4361.45, 4083.14, 3261.31, 2256.99, 2780.19, 2759.29, 1790.21, 2004.62, 3348.19, 3699.04, 3745.87, 4039.13, 4127.46, 4126.36, 4024.8, 4001.56, 4013.74, 3969.68, 3955.96, 3955.85, 3948.41, 3977.39, 3979.37, 4001.55, 3908.92, 3266.16, 2488.3, 1930.85, 1565.04, 2494.25, 3062.54, 3397.23, 3028.63, 3838.45, 3962.57, 4001.94, 3939.1, 3950.88, 3916.72, 3946.47, 3943.9, 3907.85, 3880.7, 3902.96, 3876.78, 3930.27, 4117.61, 4328.34, 4365.32, 3826.76, 3476.28, 3138.7, 2899.77, 2809.72, 2484.01, 2828.73, 3107.07, 3289.8, 3856.71, 4393.81, 4391.91, 4305.63, 4251.5, 4281.14, 4256.75, 4193.3, 4227.96, 4203.3, 4153.87, 4186.46, 4168.62, 4534.0, 4590.78, 4308.08, 3555.21, 3359.65, 2762.9, 2675.2, 2909.77, 2798.03, 3098.27, 3540.47, 4352.78, 4534.9, 4481.75, 4471.81, 4341.69, 4279.31, 4279.61, 4237.27, 4253.24, 4139.3, 4118.05, 4207.52, 4328.92, 4492.3, 4555.17, 4461.31, 3772.19, 3784.86, 3008.32, 2776.3, 2760.01, 3386.57, 3869.1, 4302.25, 4580.83, 4697.79, 4582.64, 4564.42, 4513.95, 4385.32, 4346.28, 4293.9, 4262.82, 4326.33, 4289.56, 4351.23, 4398.87, 4619.42, 4656.69, 4214.33, 3994.61, 3364.97, 3038.37, 2933.9, 2897.24, 4051.17, 4113.9, 4524.19, 4426.93, 4420.27, 4573.59, 4554.99, 4466.73, 4407.88, 4316.61, 4251.68, 4274.79, 4226.63, 4189.46, 4276.24, 4278.1, 4451.38, 4685.17, 4600.62, 4767.32, 4774.67, 4991.15, 4831.94, 4677.58, 4785.08, 4891.16, 4898.44, 4809.4, 4656.45, 4566.92, 4487.06, 4419.7, 4378.72, 4376.95, 4340.22, 4369.92, 4441.39, 4430.8, 4463.0, 4446.74, 4463.59, 4334.24, 4255.11, 4346.62, 4159.41, 3839.75, 3713.2, 3816.14, 3874.27, 3863.53, 4148.63, 4241.93, 4344.69, 4399.9, 4341.99, 4373.88, 4330.49, 4298.74, 4222.26, 4196.3, 4215.25, 4183.75, 4261.52, 4256.16, 4234.86, 4176.97, 4042.46, 3878.18, 3312.34, 3017.27, 2561.81, 3237.18, 2731.89, 2855.34, 3365.77, 3204.8, 3693.71, 3802.0, 3851.31, 3813.7, 3855.23, 3852.11, 3830.62, 3765.88, 3758.14, 3751.57, 3806.6, 3958.91, 4091.67, 4061.03, 4082.28, 3794.49, 3479.18, 3544.86, 2385.77, 2144.23, 4148.44, 4064.21, 4029.44, 3920.72, 3982.52, 3972.07, 3978.26, 3959.29, 3907.45, 3917.84, 3896.46, 3912.42, 3922.3, 3899.09, 3909.3, 4026.77, 4314.59, 4388.41, 4428.5, 4378.65, 4281.59, 4375.91, 4043.39, 3681.26, 3463.19, 3968.2, 3829.52, 4132.92, 4097.45, 4114.67, 4073.96, 4002.02, 3956.59, 3931.64, 3903.38, 3926.76, 3917.68, 3924.1, 3970.94, 4071.24, 4289.69, 4327.63, 3865.08, 3778.94, 3977.64, 3786.66, 3342.45, 3155.71, 3940.51, 4034.48, 4012.8, 4142.31, 4113.97, 4186.79, 4096.05, 4127.57, 4134.78, 4067.65, 4026.4, 4021.47, 4013.24, 4164.9, 4148.74, 4205.83, 4479.73, 4471.91, 3787.63, 3668.08, 3735.26, 3673.7, - 3963.26, 3806.59, 3189.58, 2921.38, 3209.49, 3812.17, 4284.93, 4325.29, 4189.54, 4183.39, 4074.91, 4022.26, 3997.76, 3965.57, 4091.32, 4052.63, 3956.59, 4045.05, 4292.14, 4335.9, 4356.55, 4322.67, 4088.98, 3709.0, 3544.29, 3313.44, 3009.8, 4368.77, 3623.76, 4192.76, 4436.64, 4511.07, 4495.69, 4443.29, 4297.41, 4261.82, 4193.02, 4185.88, 4186.64, 4133.41, 4147.35, 4117.8, 4113.57, 4003.03, 3419.45, 2429.78, 2056.95, 1441.63, 3036.28, 3201.51, 3439.61, 3227.84, 3704.96, 3898.92, 3977.18, 4059.24, 4067.36, 4051.0, 4014.56, 3966.64, 3915.04, 3942.01, 3984.73, 3943.27, 3967.11, 3971.36, 3992.76, 3832.25, 3013.65, 2409.86, 1944.73, 1677.16, 1413.49, 1416.96, 1688.42, 2729.7, 3424.53, 3650.07, 3778.34, 3899.53, 3907.87, 3902.55, 3886.53, 3892.25, 3858.35, 3839.55, 3770.89, 3767.53, 3777.1, 3914.8, 4177.1, 4120.04, 3712.52, 3246.04, 3336.02, 2793.37, 3231.62, 3352.22, 3657.86, 4433.97, 3786.97, 3717.47, 4217.03, 4370.84, 4323.21, 4207.56, 4157.47, 4104.2, 4046.59, 4013.59, 3919.61, 3904.23, 3955.43, 4071.41, 4317.85, 4284.35, 4569.57, 4451.4, 4157.79, 3638.31, 2796.07, 3383.53, 3977.74, 4538.58, 4576.14, 4354.66, 4169.31, 4298.31, 4264.39, 4203.84, 4090.29, 4081.87, 4067.45, 4017.9, 4016.15, 3998.67, 4135.56, 4193.4, 4444.71, 4535.8, 5013.28, 5018.5, 4935.79, 4861.0, 4863.01, 4956.91, 4830.62, 4649.19, 4461.0, 4478.68, 4453.45, 4347.2, 4302.62, 4250.05, 4184.94, 4203.83, 4209.24, 4202.97, 4202.45, 4207.0, 4216.82, 4263.6, 4397.18, 4458.59, 4502.26, 4416.13, 4246.06, 4202.32, 3959.91, 4149.66, 4429.94, 4748.59, 4935.19, 4023.37, 4431.98, 4487.12, 4471.11, 4353.49, 4311.22, 4318.33, 4262.01, 4257.84, 4269.5, 4249.62, 4304.45, 4476.27, 4600.81, 4669.02, 4721.35, 4600.05, 4528.55, 4526.94, 4476.56, 4116.58, 3847.07, 3461.66, 4071.69, 4423.5, 4519.07, 4546.25, 4512.74, 4402.91, 4269.01, 4265.39, 4200.77, 4113.69, 4106.02, 4093.19, 4098.18, 4128.44, 4193.17, 4250.44, 4196.22, 4166.85, 4132.32, 4140.17, 3832.79, 3444.78, 3084.2, 3078.25, 3313.86, 3138.89, 3944.77, 4110.49, 4170.0, 4105.5, 4101.6, 4094.15, 4069.06, 4046.48, 4062.29, 4068.56, 4026.56, 4060.17, 4060.22, 3891.93, 3879.32, 3661.47, 3030.67, 1649.97, 1630.34, 1716.7, 1970.98, 2423.55, 2573.5, 2598.45, 3472.27, 3820.02, 3839.79, 3920.13, 3896.99, 3868.64, 3830.93, 3803.72, 3828.06, 3834.83, 3878.95, 4050.3, 4166.14, 4154.95, 4106.24, 4007.2, 3624.18, 2518.75, 3364.56, 3405.1, 4061.07, 3499.17, 4131.43, 4277.36, 4534.94, 4493.73, 4479.66, 4377.41, 4250.35, 4127.79, 4069.91, 4061.47, 4095.83, 4080.35, 4158.88, 4225.22, 4429.36, 4506.6, 3684.37, 3365.61, 3227.59, 3220.79, 2942.77, 3313.08, 4031.16, 4172.92, 4253.32, 4404.37, 4183.58, 4228.8, 4199.82, 4092.77, 3994.29, 3963.08, 3965.35, 3965.83, 3969.34, 3953.94, 4017.92, 4096.17, 4236.84, 4303.51, 4292.8, 3532.41, 3741.19, 3517.45, 3572.57, 4457.98, 2983.76, 3695.45, 3071.79, 4357.27, 4243.22, 4280.73, 4273.35, 4260.62, 4130.94, 4040.25, 4026.9, 4087.76, 4091.5, 4081.16, 4058.54, 4182.44, 4360.43, 4520.03, 4221.4, 3855.31, 4336.33, 4875.92, 4478.12, 3661.99, 2996.8, 4031.84, 3785.09, 4356.93, 4247.25, 4320.05, 4285.25, 4248.55, 4130.12, 4028.34, 4035.27, 4035.48, 3983.16, 4022.17, 4069.3, 4147.6, 4292.36, 4142.69, 3644.78, 3105.5, 2636.3, 2547.44, 2311.96, 2624.93, 2777.62, 2916.38, 3186.06, 3663.28, 4316.19, 4360.97, 4386.81, 4390.84, 4296.93, 4209.25, 4189.55, 4155.44, 4128.65, 4100.5, 4080.55, 4092.49, 4136.46, 3663.86, 3012.85, 2989.14, 2563.34, 2434.48, 2290.28, 2425.47, 3393.04, 3385.61, 3741.04, 3877.61, 4032.3, 4019.09, 3964.19, 3991.62, 3931.01, 3904.1, 3892.36, 3860.37, 3849.96, 3839.88, 3859.33, 3881.73, 3942.05, 3674.29, 2808.21, 2198.71, 2306.69, 3764.12, 3685.99, 3195.95, 3278.6, 3820.09, 3094.13, 3211.85, 3818.73, 3847.14, 3860.57, 3850.43, 3816.68, 3851.91, 3845.37, 3848.58, 3855.0, 3921.97, 3975.8, 4039.32, 4377.86, 4517.1, 4522.95, 4826.29, 4761.95, 4832.8, 4921.6, 4869.69, 4882.38, 4886.45, 4743.91, 4484.45, 4366.79, 4268.17, 4242.44, 4160.33, 4115.93, 4065.96, 4016.41, 4008.38, 3986.02, 3975.95, 4049.79, 4111.57, 4368.15, 4378.94, 4200.36, 3998.03, 2823.66, 2509.04, 2368.36, 2434.87, 2469.27, 2987.49, 3369.27, 3664.39, 4158.77, 4250.34, 4217.31, 4158.58, 4059.06, 3994.29, 3983.59, 4084.95, 4112.5, 4059.3, 4073.83, 4163.78, 4401.53, 4234.5, 4040.12, 3811.98, 3462.81, 3259.59, 3716.92, 3490.77, 3042.85, 3964.52, 4090.88, 4405.59, 4116.88, 4187.56, 4168.94, 4100.83, 4092.91, 4089.83, 3955.41, 3956.42, 3978.32, 3915.11, 3984.96, 4047.12, 4214.8, 4297.59, 4212.17, 3810.98, 4069.89, 2708.92, 2309.43, 2407.62, 2541.82, 2739.8, 2921.51, 3643.09, 4074.44, 4225.73, 4203.29, 4136.36, 4034.71, 4014.58, 3928.28, 3893.31, 3959.09, 3952.27, 3950.21, 4029.78, 4179.51, 3802.12, 3493.65, 3842.71, 3722.49, 3702.95, 3236.04, 3524.59, 3274.24, 3509.13, 4227.54, 4328.09, 4127.68, 4168.13, 4184.46, 4152.15, 4107.63, 4087.3, 4041.06, 4005.8, 3935.17, 3918.71, 3916.22, 3978.36, 3966.06, 3771.42, 3634.96, 2754.35, 2611.02, 1471.97, 1567.63, 1351.09, 1474.28, 2290.63, 2409.94, 3163.46, 3769.1, 3890.41, 3871.1, 3844.53, 3801.17, 3810.84, 3780.86, 3808.69, 3828.14, 3828.55, 3818.83, 3808.37, 3839.91, 3476.25, 2762.34, 2762.4, 1643.33, 1303.85, 1164.06, 1303.31, 1996.84, 3186.23, 3323.97, 3444.56, 3565.96, 3900.94, 3919.54, 3886.86, 3911.45, 3925.93, 3889.96, 3806.21, 3790.25, 3782.62, 3860.57, 4091.72, 4240.34, 4252.19, 4421.14, 4412.55, 4548.63, 3943.18, 3930.69, 4022.6, 3680.79, 4169.56, 4592.1, 4420.14, 4302.58, 4231.19, 4160.61, 4081.89, 3965.99, 3987.39, 3951.15, 3918.26, 3932.78, 3928.32, 3958.68, 4014.01, 4260.41, 4370.71, 4828.08, 4784.64, 4795.39, 4740.79, 4964.43, 4996.93, 4715.25, 4880.3, 4577.67, 4447.93, 4119.81, 4111.74, 4028.14, 4021.12, 3903.32, 4052.68, 3919.91, 3967.26, 3976.66, 3958.13, 3992.2, 4080.69, 4250.19, 4402.85, 4417.99, 4447.13, 4485.12, 4595.97, 4470.59, 4917.06, 4728.01, 4840.37, 4749.88, 4742.91, 4333.35, 4176.28, 4106.87, 4029.49, 4122.16, 4177.95, 4151.56, 4139.11, 4248.65, 4183.68, 4248.76, 4274.33, 4398.17, 4125.43, 3889.37, 3368.72, 2705.59, 2308.89, 2098.97, 2081.34, 2734.74, 4106.84, 3941.53, 4220.13, 4192.84, 4282.47, 4296.59, 4209.68, 4127.28, 4062.29, 4032.99, 4034.94, 4001.57, 3942.33, 3959.45, 3988.43, 4103.54, 3829.13, 3604.99, 3211.84, 2650.76, 2384.6, 2166.07, 2216.18, 2389.46, 2622.01, 2873.99, 3448.7, 3875.95, 4031.73, 4038.5, 3962.16, 3886.62, 3843.09, 3889.04, 3913.17, 3820.02, 3796.11, 3819.17, 3813.03, 3824.04, 3427.57, 2602.24, 2157.89, 1775.26, 1996.82, 1446.71, 2189.9, 2999.15, 3322.74, 3477.53, 3637.46, 3919.78, 4079.68, 4094.12, 4089.09, 4058.85, 4010.02, 3974.02, 3946.14, 3941.45, 3899.9, 3900.38, 3929.88, 3916.15, 3548.15, 3262.72, 3124.5, 1719.1, 1436.15, 2821.24, 2740.64, 2582.92, 2316.46, 3191.88, 3543.46, 3709.11, 3787.54, 3741.76, 3696.71, 3672.83, 3667.52, 3614.63, 3609.35, 3624.92, 3711.26, 3760.48, 3792.29, 3878.0, 3657.74, 3145.87, 2852.82, 2208.3, 3671.77, 4366.06, 3418.34, 4495.59, 4029.16, 3625.77, 4084.86, 4069.07, 3982.12, 3971.66, 3965.05, 3908.85, 3886.32, 3852.19, 3870.4, 3870.15, 3818.33, 3842.22, 3911.52, 4189.42, 4362.61, 4656.11, 4628.67, 4524.46, 4590.32, 4798.31, 4734.51, 3936.43, 4665.15, 4463.31, 4254.44, 4221.16, 4192.17, 4155.45, 4064.06, 3985.0, 3934.34, 3931.59, 3953.22, 3972.68, 3961.77, 3957.34, 4096.7, 4378.48, 4465.63, 4799.82, 4924.99, 4905.05, 4713.12, 4619.84, 4999.73, 4977.03, 4907.17, 4713.13, 4589.46, 4480.5, 4331.81, 4284.57, 4130.38, 4092.73, 4013.62, 3962.45, 3959.55, 3916.46, 3906.23, 3932.0, 4043.83, 4210.7, 4550.85, 4843.11, 4852.62, 4886.86, 4918.12, 4927.41, 4775.61, 4783.53, 4764.57, 4750.07, 4464.83, 4229.88, 4217.32, 4231.54, 4155.21, 4153.38, 4142.5, 4087.6, 4053.6, 4028.25, 4139.19, 4188.48, 4312.81, 4590.0, 4648.99, 4499.91, 4771.19, 4629.73, 4489.99, 3945.83, 3468.3, 3162.73, 3857.31, 3632.81, 3813.38, 3799.33, 3922.93, 3979.62, 3845.22, 3872.76, 3913.88, 3865.62, 3830.16, 3789.36, 3801.39, 3815.3, 3821.77, 3812.09, 3326.95, 2548.22, 2264.45, 1943.0, 1907.95, 2593.07, 3214.97, 3273.48, 3448.06, 3329.09, 3533.48, 3583.76, 3785.29, 3785.29, 3759.54, 3752.59, 3830.47, 3817.36, 3812.69, 3821.38, 3812.21, 3823.0, 3844.82, 3826.59, 3345.41, 2604.51, 1995.91, 1603.82, 1576.52, 1476.08, 1485.96, 1739.21, 1878.72, 2290.35, 2883.99, 3579.06, 3799.09, 3820.63, 3771.05, 3802.61, 3784.06, 3774.17, 3768.18, 3753.6, 3715.12, 3777.18, 3840.53, 4011.55, 4074.51, 3525.57, 3026.31, 4005.2, 3680.4, 2991.47, 3724.95, 4387.1, 3563.35, 4254.06, 4204.45, 4180.09, 4204.53, 4205.36, 4074.73, 4024.77, 3972.59, 3953.22, 3894.89, 3914.12, 3844.92, 3901.33, 3987.26, 4084.09, 4068.88, 3541.92, 3377.47, 3122.07, 3710.62, 4441.47, 3769.22, 2688.32, 4917.27, 4811.09, 4297.76, 4153.88, 4265.5, 4273.59, 4187.65, 4123.73, 4107.46, 4087.3, 4074.73, 4054.34, 4004.87, 4058.44, 4174.24, 4296.17, 3910.13, 3388.31, 3117.88, 3878.59, 3505.7, 3461.81, 4170.39, 4356.73, 2771.79, 3290.62, 3581.74, 4035.49, 4143.22, 4089.47, 3981.89, 3945.0, 3949.38, 3955.14, 3948.76, 3955.49, 3878.89, 3800.35, 3919.83, 4244.66, 4306.35, 4236.95, 3814.15, 3964.49, 3734.05, 3768.66, 4204.03, 4571.2, 4823.22, 4272.13, 4060.6, 4042.85, 4014.74, 4112.32, 4023.74, 3979.76, 3975.19, 3959.88, 3967.42, 3937.96, 3961.79, 4031.79, 4101.18, 4198.07, 4209.79, 3332.29, 2903.04, 2580.74, 3272.35, 3567.59, 4398.13, 4275.05, 3902.9, 4273.02, 4331.71, 4364.92, 4291.33, 4239.5, 4181.08, 4087.73, 4127.23, 4086.6, 4082.19, 4064.01, 3984.09, 4014.18, 4004.29, 3923.02, 3439.46, 3420.11, 3581.02, 3397.91, 3308.96, 2807.07, 3205.68, 2422.62, 3386.06, 3098.04, 3299.84, 3556.49, 3908.86, 4014.64, 4038.45, 3987.46, 3972.84, 3973.81, 3951.3, 3987.8, 3968.81, 4007.87, 4016.64, 4044.32, 3969.11, 3842.47, 3559.48, 3311.53, 2691.64, 2571.93, 2716.59, 2742.42, 3301.03, 3875.39, 3685.95, 3652.06, 3925.31, 4007.65, 3955.09, 3924.38, 3962.71, 3953.69, 3928.3, 3898.7, 3889.16, 3974.7, 4062.74, 4341.79, 4415.05, 4493.09, 4583.08, 4433.32, 4258.4, 4325.16, 4378.59, 4398.86, 4409.68, 4514.36, 4446.64, 4379.95, 4270.93, 4262.36, 4169.86, 4076.16, 4055.96, 4022.65, 4029.92, 4005.9, 3968.15, 4004.75, - 4093.26, 4302.5, 4495.33, 4619.78, 4629.9, 4346.76, 4395.69, 4461.95, 4586.89, 4605.99, 4582.35, 4502.45, 4413.36, 4322.59, 4298.76, 4203.46, 4157.46, 4064.28, 4036.68, 3984.96, 3989.81, 3937.64, 3933.44, 3989.92, 4074.42, 4233.95, 4375.9, 4411.71, 4497.06, 4394.58, 4294.23, 4460.47, 4581.36, 4547.24, 4475.58, 4433.71, 4290.25, 4124.41, 4270.66, 4354.58, 4281.8, 4162.92, 4138.25, 4128.97, 4100.38, 4106.85, 4067.0, 4098.42, 4265.0, 4323.23, 3488.04, 3919.66, 3950.29, 4257.81, 4176.08, 4014.94, 4232.37, 4492.4, 4441.0, 4408.03, 4255.87, 4241.8, 4206.1, 4245.59, 4235.12, 4141.42, 4096.33, 4069.49, 4080.54, 4108.48, 4061.52, 4083.35, 4112.28, 4252.51, 3784.56, 3162.16, 2713.67, 2336.33, 2142.83, 1965.36, 2068.37, 2346.84, 3613.15, 2715.47, 3338.0, 3920.41, 4255.31, 4275.18, 4224.04, 4157.91, 4109.74, 4086.76, 4094.33, 4064.86, 4033.5, 4082.75, 4093.49, 3996.37, 3474.86, 2759.55, 2101.18, 1759.67, 1863.86, 1739.63, 2194.47, 2220.25, 2663.78, 3092.13, 3565.62, 3820.96, 3842.95, 3945.23, 3933.46, 3860.74, 3832.83, 3824.45, 3885.29, 3860.66, 3857.31, 3943.67, 3903.01, 3825.68, 3467.87, 2633.34, 2145.71, 1562.28, 1306.09, 2068.88, 2862.91, 3048.37, 3263.1, 3776.68, 3526.84, 3512.13, 3716.97, 3800.52, 3811.68, 3780.13, 3788.18, 3752.99, 3727.84, 3724.55, 3674.97, 3709.68, 3749.8, 3839.48, 3823.16, 2619.31, 3249.06, 2775.41, 2552.09, 2722.37, 3063.87, 2051.2, 3416.23, 3623.18, 3701.07, 3718.86, 3868.15, 3927.34, 3921.6, 3889.63, 3925.93, 3914.31, 3912.32, 3847.31, 3855.01, 3904.3, 3960.15, 4076.05, 3956.76, 4048.89, 4309.6, 3819.62, 4783.91, 4683.27, 1921.01, 4375.99, 4587.86, 4006.45, 3936.48, 4123.5, 4334.61, 4330.35, 4240.73, 4180.54, 4126.42, 4081.91, 4077.19, 4029.66, 4019.77, 4106.65, 4201.58, 4273.2, 4335.79, 3978.55, 3730.07, 3499.95, 2959.75, 2307.12, 3282.81, 3017.24, 3936.47, 2933.09, 3665.9, 4180.8, 4405.14, 4443.12, 4426.56, 4330.51, 4217.96, 4212.63, 4241.72, 4200.41, 4194.53, 4232.93, 4356.46, 4390.1, 4109.23, 3189.3, 2956.85, 2708.56, 2517.55, 2534.72, 3862.29, 2778.09, 4245.34, 4263.04, 3888.17, 4139.64, 4408.84, 4442.12, 4391.64, 4307.19, 4221.86, 4171.71, 4164.97, 4173.98, 4182.74, 4171.45, 4251.2, 4301.78, 3809.37, 3329.41, 2805.4, 2499.65, 2396.96, 4054.64, 3254.51, 4248.56, 4459.69, 4340.56, 4403.41, 4393.62, 4359.53, 4439.82, 4433.56, 4277.37, 4226.37, 4174.67, 4206.34, 4188.06, 4164.5, 4203.94, 4198.74, 4137.29, 3422.79, 2766.04, 1998.13, 2168.78, 1690.82, 2082.85, 4045.7, 3902.7, 2030.63, 3546.57, 3023.62, 3907.29, 4065.77, 4053.98, 4077.36, 4064.36, 4086.8, 4088.99, 4069.33, 4103.34, 4023.56, 4038.23, 4032.16, 3972.6, 3469.67, 2666.79, 2224.5, 1914.19, 2572.65, 3445.22, 3340.03, 3411.98, 3112.19, 3626.85, 2900.29, 3840.1, 3902.57, 3910.76, 3896.36, 3884.48, 3899.34, 3851.23, 3842.33, 3854.66, 3836.5, 3874.93, 3957.99, 3973.44, 3960.01, 3225.66, 3234.22, 3295.75, 4793.45, 4136.63, 4452.83, 4168.52, 5206.09, 5014.89, 3695.56, 4114.61, 4144.12, 4281.53, 4205.85, 4097.82, 4024.45, 3984.33, 3989.17, 4116.32, 4084.04, 4086.03, 4249.1, 4348.25, 3906.34, 3310.83, 2969.84, 3585.58, 3600.51, 4493.27, 4798.11, 3080.91, 4688.74, 4552.63, 4433.01, 3952.08, 4138.91, 4216.78, 4188.66, 4099.5, 4060.51, 4031.58, 4021.18, 4012.94, 4014.38, 4058.85, 4133.84, 4230.75, 3813.26, 3225.92, 2868.08, 2897.16, 2788.75, 2725.73, 4600.87, 4395.36, 4292.91, 4509.85, 4553.56, 4430.98, 4243.12, 4198.15, 4122.58, 4055.18, 3987.37, 3960.34, 3942.86, 3971.8, 3943.09, 4007.05, 4090.6, 4174.34, 3784.01, 3195.54, 3138.18, 2981.66, 2704.04, 2626.14, 2687.21, 2810.69, 3145.56, 3475.98, 3678.06, 4180.06, 4438.33, 4498.07, 4528.66, 4401.4, 4390.84, 4325.25, 4186.49, 4166.61, 4175.79, 4195.47, 4265.03, 4396.43, 4015.13, 3749.06, 3477.93, 3258.82, 4677.3, 5055.24, 4898.44, 3742.18, 4998.23, 5068.14, 4207.03, 4261.51, 4496.5, 4506.53, 4468.4, 4424.42, 4357.19, 4293.52, 4283.0, 4296.46, 4307.45, 4314.61, 4340.2, 4297.91, 4133.98, 3781.18, 2346.84, 2124.56, 1925.44, 1855.54, 1892.17, 3869.31, 4100.09, 4045.66, 4174.06, 4269.93, 4402.81, 4439.45, 4377.44, 4345.76, 4372.85, 4250.18, 4258.58, 4251.45, 4284.61, 4355.11, 4393.18, 4379.36, 4346.51, 3926.99, 3755.0, 3519.78, 2878.73, 2897.84, 3039.44, 3259.06, 3419.98, 3606.74, 3666.6, 3591.01, 4115.36, 4232.25, 4225.39, 4231.38, 4249.81, 4193.63, 4110.18, 4112.41, 4120.62, 4180.81, 4270.46, 4316.74, 3971.62, 3500.86, 3244.12, 2828.58, 2779.12, 2622.16, 2770.4, 2937.12, 3093.17, 3232.7, 3800.21, 4234.58, 4436.42, 4503.01, 4472.48, 4393.91, 4312.84, 4299.82, 4301.16, 4220.61, 4196.91, 4251.69, 4345.66, 4292.72, 4267.06, 3408.3, 3325.17, 2999.1, 2857.18, 4025.41, 3379.65, 4050.3, 4384.15, 4786.1, 4506.24, 4146.1, 4394.37, 4408.27, 4324.28, 4195.81, 4183.61, 4149.96, 4187.76, 4148.12, 4129.33, 4172.74, 4251.36, 4459.79, 4512.54, 3619.63, 4237.43, 2810.65, 3629.93, 3508.89, 2708.33, 2679.9, 3002.83, 3211.84, 3780.24, 4481.17, 4529.2, 4559.82, 4486.02, 4407.35, 4432.78, 4410.61, 4370.47, 4358.22, 4406.59, 4424.13, 4471.21, 4387.3, 4073.3, 3794.2, 3526.96, 3181.75, 3259.66, 3606.75, 2984.99, 4538.14, 5228.11, 4924.6, 4647.25, 4521.96, 4550.14, 4543.93, 4413.66, 4405.94, 4361.62, 4267.07, 4179.03, 4219.8, 4177.98, 4204.77, 4290.63, 4366.83, 3928.78, 4188.25, 4113.2, 3292.19, 2990.48, 3737.65, 4632.9, 4843.71, 4784.43, 4203.0, 4610.68, 4516.1, 4517.51, 4546.19, 4476.99, 4273.05, 4278.56, 4231.74, 4170.51, 4190.81, 4179.2, 4197.93, 4221.35, 4171.19, 3894.35, 2886.44, 2561.21, 2212.41, 2194.93, 3238.75, 3576.79, 3828.06, 3453.84, 3385.41, 3390.45, 4198.53, 4185.57, 4271.78, 4275.12, 4242.76, 4239.32, 4237.11, 4230.08, 4152.34, 4190.68, 4191.15, 4182.92, 4085.24, 3733.8, 2785.51, 2268.47, 1917.83, 2703.74, 3144.05, 2091.1, 3541.08, 4239.22, 4134.5, 4177.35, 4013.09, 4036.05, 4166.06, 4145.16, 4087.51, 4119.6, 4089.64, 4169.24, 4126.63, 4040.58, 4098.5, 4159.61, 4372.95, 4454.01, 4448.17, 4816.16, 4478.54, 4016.87, 4991.68, 3887.11, 5035.86, 5153.79, 5021.28, 4145.87, 4392.92, 4414.7, 4574.33, 4544.28, 4417.47, 4436.71, 4400.9, 4388.33, 4319.86, 4284.89, 4353.72, 4370.69, 4528.72, 4544.04, 4659.98, 4492.63, 4829.27, 5009.61, 4637.71, 4252.08, 4543.93, 3966.03, 4377.6, 4427.22, 4514.08, 4499.68, 4472.62, 4459.71, 4402.26, 4347.97, 4301.72, 4270.54, 4269.95, 4253.59, 4271.29, 4419.75, 4519.11, 4529.07, 3444.08, 3120.24, 4054.62, 4331.51, 2541.44, 2800.65, 4302.8, 4544.27, 4600.52, 4545.55, 4511.07, 4557.0, 4550.09, 4462.82, 4360.18, 4341.69, 4364.95, 4299.92, 4296.29, 4313.38, 4342.89, 4334.31, 4388.07, 4186.4, 3741.48, 3358.17, 3113.37, 2908.14, 2878.86, 4904.79, 4742.32, 4603.35, 4706.64, 4570.08, 4530.91, 4565.8, 4498.48, 4401.75, 4332.01, 4290.24, 4303.27, 4313.11, 4286.4, 4221.93, 4279.31, 4324.59, 4428.64, 4394.25, 4066.86, 3498.04, 3141.52, 4300.43, 4611.13, 4952.1, 4370.23, 4705.26, 4664.57, 4654.01, 4606.97, 4515.04, 4508.45, 4448.7, 4415.92, 4399.92, 4407.49, 4400.9, 4369.55, 4266.09, 4367.88, 4370.17, 4400.87, 4303.4, 4087.07, 4011.55, 3251.11, 2873.24, 3583.63, 3577.99, 4311.61, 4084.54, 4261.66, 4250.06, 4356.5, 4377.8, 4348.65, 4297.02, 4276.97, 4285.07, 4267.79, 4240.44, 4190.53, 4148.9, 4179.2, 4228.83, 4155.13, 3706.37, 3709.79, 3847.16, 3633.09, 2633.02, 2330.95, 2085.87, 3134.52, 3428.48, 3257.43, 3819.71, 3973.08, 3977.68, 4114.35, 4121.02, 4079.09, 4104.78, 4161.46, 4160.38, 4151.88, 4116.84, 4213.5, 4307.64, 4370.44, 4092.08, 4056.6, 3320.13, 4335.8, 4085.53, 3476.77, 3166.71, 3730.28, 3544.65, 3486.55, 3748.24, 4231.54, 4435.76, 4464.34, 4412.9, 4315.14, 4230.07, 4230.82, 4210.49, 4225.42, 4139.42, 4185.31, 4295.46, 4315.11, 4112.4, 4170.86, 4240.66, 3557.46, 3645.57, 4461.34, 4724.7, 4500.47, 4515.03, 4333.1, 4551.94, 4436.64, 4499.35, 4472.02, 4408.65, 4301.4, 4316.09, 4238.38, 4339.06, 4354.44, 4271.8, 4299.5, 4341.45, 4404.62, 4320.38, 4201.36, 4119.34, 3490.49, 3873.13, 3679.53, 3366.3, 4830.13, 4803.62, 4876.92, 4710.66, 4476.01, 4525.61, 4542.96, 4459.8, 4319.35, 4266.51, 4244.17, 4217.74, 4210.78, 4181.71, 4201.84, 4244.53, 4392.97, 4443.31, 3786.36, 4115.4, 3669.38, 3910.56, 4487.63, 4501.29, 3982.35, 3840.27, 4056.27, 4017.75, 4302.07, 4719.51, 4688.2, 4585.38, 4542.6, 4438.41, 4425.84, 4401.91, 4415.5, 4341.4, 4367.83, 4448.01, 4568.57, 4390.06, 3767.69, 3824.26, 3658.12, 3502.61, 3439.56, 3448.56, 3495.56, 4528.02, 4574.19, 4746.24, 4750.16, 4788.05, 4742.42, 4704.1, 4576.56, 4556.58, 4489.6, 4486.68, 4471.87, 4439.58, 4477.26, 4430.67, 4179.89, 4006.58, 3327.15, 2870.85, 2480.35, 3271.24, 3595.67, 4173.71, 3853.59, 3954.23, 4015.91, 3836.86, 4214.91, 4354.7, 4312.92, 4251.86, 4201.32, 4166.02, 4122.76, 4154.43, 4152.72, 4082.68, 4055.26, 4047.84, 4013.43, 3721.02, 3918.27, 2927.14, 2905.37, 2247.33, 4026.29, 4264.89, 4191.77, 4024.64, 3913.56, 4211.69, 4042.4, 3995.28, 4073.91, 4058.7, 4050.07, 4032.0, 3985.89, 3945.79, 3963.98, 3954.65, 3978.29, 4176.53, 4225.38, 4385.91, 4476.59, 4469.95, 4452.25, 3408.19, 3641.62, 5442.44, 5240.65, 5756.99, 5455.54, 5161.96, 4785.52, 4769.86, 4802.92, 4721.86, 4630.43, 4494.72, 4509.51, 4515.33, 4485.25, 4381.46, 4403.13, 4393.59, 4596.1, 4353.81, 4033.84, 3860.09, 3670.62, 3609.27, 3746.27, 5525.0, 5843.15, 4969.77, 5020.57, 4896.9, 4682.05, 5012.99, 5039.65, 4954.08, 4811.81, 4762.78, 4711.12, 4655.67, 4593.47, 4575.39, 4655.23, 4710.02, 4791.28, 4668.86, 4840.45, 4054.94, 3889.96, 3555.34, 5161.82, 3678.3, 4901.7, 5035.78, 3906.24, 4904.07, 4685.86, 4653.22, 4664.98, 4577.91, 4526.28, 4538.04, 4433.83, 4411.16, 4378.16, 4354.45, 4371.0, 4396.35, 4470.78, 4130.7, 3659.5, 3342.63, 3180.41, 3238.7, 2944.49, 2631.56, 2697.03, 2907.55, 3400.14, 4548.07, 4550.92, 4246.75, 4466.02, 4434.31, 4426.41, 4455.03, 4452.13, 4324.05, 4303.33, 4288.66, 4261.33, 4344.9, 4496.26, 4538.71, 4159.09, 3378.27, 2929.87, 2819.44, 3003.07, 4251.6, 4563.96, 4520.34, 4788.63, 4569.98, 4892.6, 4637.9, 4498.1, 4468.42, 4336.96, 4298.97, 4263.51, 4228.32, 4188.68, 4121.16, 4116.12, 4074.12, 4056.17, 3926.28, 3036.89, 2502.0, 3016.57, 2024.34, 3781.99, 4018.65, 4015.81, 3279.35, 3015.29, 3621.87, 4133.22, 4242.94, 4250.36, 4218.56, 4112.49, 4075.39, - 4054.64, 4032.01, 4060.86, 4076.33, 4064.89, 4081.85, 4030.44, 3691.06, 3132.13, 2535.98, 2357.47, 1994.65, 2708.34, 2315.19, 2222.57, 2325.51, 3340.15, 3797.91, 3916.64, 4010.89, 4002.05, 4010.06, 3984.18, 3952.01, 3882.48, 3885.64, 3900.15, 3865.59, 3881.54, 4056.74, 4047.01, 3979.37, 4129.16, 3695.25, 3733.03, 4587.81, 5038.12, 5102.96, 4366.18, 4119.19, 3367.23, 4454.68, 4766.85, 4581.43, 4573.24, 4518.48, 4444.71, 4404.67, 4328.02, 4342.62, 4348.83, 4363.47, 4422.03, 4478.59, 4546.63, 4323.46, 3813.77, 3540.99, 3267.95, 3163.81, 3037.42, 3049.19, 2887.38, 3086.08, 3947.61, 4177.53, 4505.59, 4647.28, 4651.31, 4559.37, 4429.75, 4612.86, 4434.06, 4438.07, 4361.7, 4335.49, 4393.98, 4477.82, 4547.98, 4502.3, 3766.7, 3548.15, 3414.42, 3507.41, 3352.53, 3369.69, 3544.41, 3725.57, 3929.09, 4289.0, 4713.79, 4796.09, 4801.53, 4788.08, 4750.96, 4668.94, 4602.81, 4600.82, 4565.7, 4558.08, 4548.57, 4593.38, 4668.7, 4582.08, 4205.41, 3958.72, 3709.28, 3542.68, 3468.54, 3499.69, 4144.63, 4323.29, 4263.63, 4797.07, 5077.59, 5067.62, 5051.47, 4907.02, 4768.89, 4656.92, 4607.82, 4582.92, 4561.42, 4522.82, 4556.59, 4601.0, 4717.71, 4568.48, 4204.58, 3965.31, 3844.34, 3989.07, 3746.78, 4754.6, 4950.75, 4479.3, 4624.68, 4893.71, 4827.14, 4678.93, 4697.12, 4604.13, 4531.44, 4489.44, 4401.05, 4460.3, 4461.77, 4461.83, 4455.07, 4477.72, 4453.08, 4104.37, 3461.9, 3127.16, 2921.28, 2735.01, 2712.82, 2674.01, 3029.95, 4618.86, 4478.06, 4563.51, 4813.39, 4791.15, 4707.16, 4657.8, 4647.67, 4631.5, 4616.71, 4561.4, 4576.05, 4578.1, 4583.68, 4584.59, 4535.93, 4234.77, 3553.07, 3284.73, 3570.69, 4038.66, 4646.06, 4564.69, 4287.96, 4489.54, 4074.31, 4513.76, 4554.35, 4472.86, 4541.94, 4464.42, 4426.75, 4395.93, 4331.93, 4315.69, 4347.71, 4350.87, 4400.82, 4494.05, 4516.09, 4437.64, 4122.06, 3632.11, 3506.99, 3410.41, 3185.37, 4092.24, 5637.9, 5664.21, 4720.16, 5033.21, 5020.91, 4611.94, 4635.8, 4564.52, 4511.8, 4510.69, 4471.15, 4401.04, 4412.07, 4453.29, 4563.72, 4556.04, 4612.54, 4452.75, 4921.68, 4867.94, 4814.97, 3897.36, 4358.52, 5191.08, 4331.03, 4691.78, 3863.41, 4031.39, 4874.79, 4824.85, 4864.75, 4822.06, 4666.45, 4536.96, 4537.91, 4483.78, 4462.11, 4490.83, 4510.6, 4565.43, 4688.49, 4547.2, 4037.49, 3756.87, 3509.32, 3835.79, 4241.84, 5110.13, 4775.46, 4398.71, 4976.82, 4155.62, 4381.31, 4816.06, 4858.21, 4702.89, 4608.47, 4489.93, 4407.75, 4301.03, 4300.62, 4269.27, 4325.45, 4362.72, 4499.81, 4264.33, 3692.66, 3287.5, 3274.58, 3117.04, 3142.71, 3226.25, 3230.6, 3595.14, 3813.63, 4083.81, 4653.75, 4928.6, 4933.79, 4827.96, 4695.08, 4667.04, 4627.14, 4566.5, 4586.36, 4554.16, 4572.41, 4612.11, 4802.13, 4571.29, 3978.64, 3679.32, 3448.02, 3216.95, 3062.24, 2982.38, 3073.62, 3239.32, 3632.31, 3994.45, 4517.86, 4822.6, 4918.37, 4841.03, 4722.49, 4658.91, 4641.64, 4614.89, 4558.97, 4568.0, 4564.34, 4547.43, 4539.51, 4219.28, 3363.0, 2961.66, 2618.04, 2475.44, 2456.62, 3928.63, 4884.11, 4862.07, 4657.21, 4878.09, 4712.2, 4499.55, 4553.66, 4598.27, 4535.23, 4438.49, 4448.61, 4460.63, 4462.21, 4411.62, 4419.3, 4387.28, 4334.79, 4032.08, 3131.91, 2729.97, 2386.78, 2206.77, 2026.46, 2168.06, 3127.18, 2804.75, 3361.21, 4815.14, 4715.35, 4561.1, 4653.65, 4568.73, 4495.06, 4460.01, 4415.38, 4670.59, 4694.2, 4557.53, 4610.07, 4682.74, 4825.99, 4698.19, 4513.67, 4282.31, 4147.04, 3398.37, 3713.28, 3746.94, 4669.87, 5056.55, 5368.23, 5400.94, 4573.9, 4907.99, 4946.36, 4804.82, 4687.73, 4661.86, 4623.15, 4608.94, 4443.86, 4317.86, 4429.02, 4461.23, 4529.22, 4358.85, 3663.26, 3334.74, 3119.83, 2999.92, 2899.52, 2963.86, 3138.06, 4179.16, 3659.47, 4826.4, 4672.95, 4674.41, 4729.77, 4716.84, 4666.23, 4597.04, 4545.77, 4510.21, 4496.9, 4474.6, 4502.46, 4638.95, 4814.57, 4628.22, 3926.46, 3677.93, 3402.43, 3237.9, 3147.55, 3094.13, 3744.4, 4737.15, 5203.48, 5076.94, 5066.16, 4816.08, 4930.81, 4872.77, 4763.35, 4651.11, 4613.57, 4583.44, 4548.39, 4515.79, 4562.16, 4690.29, 4845.49, 4895.68, 4462.56, 4273.02, 4422.46, 4385.37, 5405.01, 5251.89, 4106.35, 4772.63, 5560.79, 5610.19, 5182.81, 5058.93, 5041.5, 4978.76, 4882.66, 4811.14, 4849.42, 4799.93, 4853.06, 4810.92, 4824.23, 4860.37, 5070.32, 4866.13, 4153.39, 3814.51, 3642.51, 3424.11, 3290.6, 3352.1, 3754.32, 5048.21, 5237.4, 5443.84, 5311.14, 5148.04, 5127.6, 5123.6, 4978.87, 4924.94, 4898.74, 4801.8, 4647.68, 4590.7, 4579.52, 4555.09, 4615.58, 4502.68, 3421.14, 2679.55, 3507.74, 4153.13, 4265.99, 4392.51, 4512.26, 3628.98, 4056.76, 4699.47, 4644.77, 4635.81, 4716.39, 4682.81, 4650.86, 4665.44, 4619.87, 4632.27, 4584.88, 4585.81, 4580.7, 4591.56, 4606.96, 4338.41, 3382.27, 2844.88, 2699.94, 3592.85, 4010.13, 2527.58, 3307.18, 4330.65, 3508.82, 3786.47, 4650.95, 4741.63, 4756.93, 4688.77, 4639.76, 4624.33, 4537.99, 4514.85, 4480.84, 4262.14, 4367.98, 4498.89, 4575.12, 4369.62, 3683.16, 3476.42, 3332.95, 3219.19, 3096.03, 3235.57, 4223.64, 5291.05, 3957.88, 4497.18, 5022.74, 5099.06, 5105.81, 5035.61, 4898.71, 4928.93, 4943.17, 4945.17, 4875.61, 4849.1, 4861.67, 4949.29, 5115.69, 4878.35, 4538.17, 4521.09, 4824.93, 4742.7, 4922.2, 4671.79, 4795.55, 4636.13, 5580.38, 5545.73, 5182.99, 4926.63, 4862.36, 4825.82, 4710.44, 4624.53, 4605.69, 4599.26, 4549.45, 4569.46, 4605.32, 4657.68, 4832.11, 4762.69, 4593.88, 4059.8, 3871.32, 3415.21, 3478.78, 3325.44, 4816.4, 4922.66, 4931.73, 4980.79, 5159.87, 5094.32, 4918.48, 4847.96, 4786.08, 4667.64, 4637.48, 4584.66, 4578.64, 4526.72, 4502.85, 4526.59, 4711.93, 4832.38, 4477.83, 4179.66, 4475.77, 3591.19, 4544.16, 4846.45, 4728.11, 4877.63, 4976.31, 4470.03, 4445.92, 4558.09, 4539.17, 4496.11, 4320.42, 4344.47, 4285.48, 4200.52, 4198.59, 4140.22, 4197.9, 4250.12, 4369.82, 4330.37, 3629.74, 3194.75, 2921.47, 2784.26, 3506.89, 2409.84, 4600.36, 4645.77, 3308.44, 3414.03, 4042.69, 4165.24, 4167.07, 4103.73, 3952.46, 3907.61, 3932.52, 3866.32, 3797.06, 3785.39, 3772.17, 3768.84, 3770.28, 3510.1, 2640.11, 2202.68, 1938.23, 1877.49, 1779.34, 1740.69, 1810.53, 2160.34, 2562.46, 3167.81, 3879.94, 4162.93, 4107.66, 4089.32, 4072.75, 4026.48, 3975.38, 3942.0, 3935.39, 3916.72, 3943.76, 3934.57, 3908.25, 3690.79, 2831.48, 2561.48, 1997.6, 1842.98, 1658.3, 4019.02, 3967.8, 3844.43, 3432.32, 3995.35, 4057.22, 4112.56, 4015.55, 3977.26, 3985.57, 3932.99, 3924.24, 3915.01, 3916.36, 3912.9, 3921.13, 4040.07, 4180.75, 4180.42, 3367.69, 3086.05, 2869.07, 2662.05, 2582.97, 4401.06, 2590.16, 4384.01, 4503.3, 3889.76, 4223.33, 4245.78, 4258.37, 4188.85, 4074.26, 4011.64, 4016.4, 3927.02, 3892.27, 3875.28, 3834.11, 3831.1, 3962.29, 3917.23, 3243.49, 3241.53, 3123.39, 4737.57, 3275.42, 4546.76, 4253.7, 3147.41, 3316.26, 4362.22, 4287.93, 4363.18, 4324.9, 4215.33, 4109.23, 3996.33, 3971.62, 3970.69, 3955.98, 3964.79, 3973.05, 4033.77, 4219.6, 4157.99, 3484.68, 3215.69, 2912.23, 3574.78, 3040.9, 4474.33, 4328.87, 4685.42, 5218.54, 4952.58, 4733.85, 4759.38, 4760.01, 4748.9, 4712.97, 4606.11, 4565.17, 4548.09, 4397.04, 4348.74, 4378.3, 4481.77, 4625.1, 4774.79, 4499.57, 3998.65, 3693.92, 3306.44, 4509.77, 4778.39, 5405.76, 5233.78, 5027.78, 4758.9, 4732.27, 4709.63, 4770.35, 4699.25, 4576.34, 4670.63, 4509.23, 4561.68, 4529.94, 4440.19, 4433.46, 4487.56, 4611.95, 4629.81, 3777.28, 3570.17, 3547.27, 3231.44, 3145.03, 4368.93, 4954.69, 3864.33, 3824.92, 4822.9, 4682.15, 4786.32, 4763.74, 4697.16, 4594.66, 4590.43, 4563.18, 4556.83, 4537.76, 4552.93, 4512.09, 4513.48, 4544.89, 4442.5, 4128.06, 3980.06, 3785.63, 3838.85, 3010.74, 3290.64, 3140.86, 4000.7, 3974.95, 4499.76, 4507.58, 4428.19, 4508.27, 4589.44, 4500.67, 4497.48, 4483.78, 4473.35, 4410.4, 4346.82, 4255.88, 4273.63, 4189.31, 4253.51, 3780.64, 2864.22, 3112.32, 3189.29, 3737.57, 3831.34, 3923.52, 3258.02, 3881.69, 4068.56, 4105.54, 4154.22, 4174.91, 4133.44, 4034.98, 4014.22, 4011.75, 3960.66, 3988.06, 3956.13, 3984.0, 4110.41, 4229.7, 4176.73, 3508.79, 3263.71, 2913.94, 2887.57, 2580.81, 2787.63, 2744.78, 4706.7, 3910.84, 3701.41, 4222.67, 4826.21, 4765.56, 4735.09, 4706.83, 4648.93, 4547.69, 4546.7, 4537.61, 4495.9, 4500.55, 4575.45, 4709.38, 4649.41, 4000.26, 3517.46, 3369.12, 3133.42, 4164.43, 5142.63, 4835.93, 4735.97, 4582.84, 4220.36, 4818.15, 4777.21, 4879.26, 4790.54, 4641.58, 4591.33, 4552.2, 4549.34, 4506.06, 4515.6, 4522.05, 4531.22, 4654.1, 4556.15, 3945.06, 3485.78, 3286.74, 3108.49, 3011.76, 3216.89, 3124.36, 3352.04, 3499.28, 4306.59, 4796.14, 4854.21, 4830.65, 4673.85, 4597.4, 4559.19, 4503.31, 4489.73, 4364.17, 4406.98, 4440.32, 4540.67, 4639.98, 4580.9, 3880.85, 3651.93, 3399.28, 3193.55, 3133.77, 4406.78, 3831.47, 3377.84, 3773.41, 4260.73, 5025.29, 4891.71, 4856.63, 4759.23, 4688.25, 4679.46, 4649.57, 4590.08, 4535.45, 4500.3, 4507.07, 4587.19, 4810.43, 4976.64, 4574.75, 3556.07, 4391.65, 4536.33, 4172.37, 4761.81, 3859.95, 5042.61, 5129.46, 4607.76, 5073.28, 4983.62, 4881.57, 4857.13, 4727.67, 4681.2, 4586.27, 4603.38, 4530.74, 4485.13, 4534.78, 4540.09, 4522.62, 4352.02, 3439.8, 2913.26, 3466.1, 3740.49, 3909.43, 2992.49, 3938.89, 4280.3, 4201.68, 4353.94, 4468.7, 4508.95, 4485.12, 4455.63, 4416.38, 4396.37, 4280.47, 4262.2, 4257.07, 4273.54, 4271.07, 4241.21, 4220.19, 4145.48, 3638.89, 2760.42, 2121.84, 1974.91, 1901.51, 2106.83, 2260.53, 2640.83, 4249.54, 3806.73, 4465.4, 4552.25, 4508.63, 4485.71, 4464.07, 4380.21, 4293.76, 4260.48, 4249.97, 4262.27, 4298.71, 4483.7, 4602.93, 4578.23, 3900.79, 3275.45, 2986.74, 2944.43, 2963.79, 3135.95, 3122.86, 4360.82, 4625.4, 4645.91, 4611.7, 4593.47, 4553.52, 4523.75, 4470.82, 4453.36, 4412.26, 4320.58, 4302.97, 4306.56, 4284.94, 4364.95, 4612.35, 4573.84, 4222.09, 3819.79, 3500.82, 3306.25, 3155.8, 3128.48, 3214.69, 4169.48, 4138.28, 4887.86, 4871.74, 4794.41, 4763.83, 4720.16, 4647.17, 4548.63, 4558.95, 4530.92, 4467.63, 4511.02, 4500.41, 4570.1, 4809.66, 4866.14, 4344.58, 4394.07, 3644.03, 4233.57, 4527.09, 4427.71, 5079.96, 5353.56, 5330.69, 5198.06, 5107.68, 4631.27, 4537.95, 4519.02, 4350.57, 4321.68, 4266.5, 4478.12, 4306.27, 4316.35, 4270.89, 4294.69, 4485.1, 4478.98, 3949.67, 3826.33, 3233.62, 3114.17, 5252.75, 4789.96, 4809.03, 5008.7, - 4794.82, 4847.34, 4790.01, 4631.73, 4623.71, 4553.78, 4453.53, 4379.53, 4359.45, 4364.05, 4316.43, 4316.13, 4360.42, 4418.97, 4620.02, 4773.71, 4346.86, 3440.68, 4234.83, 4103.86, 3544.28, 4358.48, 4640.31, 4725.33, 4672.96, 4577.96, 4518.98, 4484.41, 4515.27, 4436.7, 4348.43, 4360.75, 4327.83, 4285.44, 4253.51, 4267.95, 4220.07, 4205.98, 4208.06, 4025.65, 3144.08, 2327.18, 3224.46, 3174.62, 3202.67, 2707.63, 2119.25, 3707.7, 3907.46, 3935.23, 4164.88, 4206.24, 4208.04, 4155.19, 4102.1, 4076.19, 4062.61, 4070.8, 4075.4, 4069.93, 4139.08, 4152.92, 4180.88, 3890.64, 3389.09, 2684.38, 2280.4, 2026.75, 2303.56, 3697.64, 2109.35, 2468.51, 4307.87, 4418.25, 4357.46, 4454.32, 4348.2, 4315.99, 4244.45, 4216.69, 4241.58, 4202.38, 4208.51, 4180.76, 4175.78, 4144.18, 4342.47, 4416.41, 3809.23, 3422.65, 2983.79, 2785.41, 2623.51, 2742.33, 2807.88, 3163.63, 3555.97, 4127.9, 4482.15, 4435.53, 4444.3, 4381.42, 4261.35, 4146.29, 4085.69, 4064.67, 4097.57, 4118.8, 4200.95, 4319.22, 4514.37, 4409.21, 3766.78, 3263.66, 2959.14, 2845.88, 2596.15, 2652.52, 2744.29, 3047.56, 3450.4, 4031.16, 4535.1, 4514.91, 4475.73, 4439.76, 4382.75, 4290.52, 4249.76, 4191.36, 4172.2, 4169.33, 4232.95, 4395.59, 4557.64, 4525.76, 3905.04, 3370.45, 3184.39, 2927.68, 3006.95, 3108.84, 3201.77, 3442.89, 3811.06, 4377.4, 4788.75, 4800.52, 4769.2, 4687.12, 4606.17, 4576.57, 4558.49, 4561.76, 4539.63, 4471.23, 4486.94, 4597.77, 4769.75, 4815.03, 4346.64, 4089.11, 3462.82, 4283.87, 4515.77, 4814.19, 4893.38, 4920.2, 4718.18, 4743.78, 4783.65, 4684.4, 4658.56, 4691.38, 4551.04, 4508.07, 4490.19, 4463.69, 4362.39, 4384.17, 4431.73, 4591.05, 4747.46, 4623.46, 4197.26, 3659.44, 3467.7, 3334.21, 4899.84, 4886.76, 4952.18, 5054.35, 3910.11, 4785.6, 5023.29, 4822.67, 4774.69, 4690.0, 4602.83, 4573.95, 4551.8, 4559.04, 4588.46, 4545.21, 4538.8, 4554.41, 4578.31, 4455.03, 3956.33, 3055.11, 3054.71, 2958.72, 2635.26, 2724.38, 2870.65, 3007.95, 4078.71, 4608.28, 4732.96, 4653.97, 4799.47, 4705.49, 4628.2, 4600.42, 4541.9, 4551.31, 4529.17, 4517.4, 4576.93, 4605.86, 4582.34, 4514.25, 3715.75, 3157.65, 2724.27, 2909.46, 2755.45, 3349.73, 3499.17, 4127.79, 4379.49, 4534.35, 4789.46, 4752.25, 4695.68, 4613.15, 4605.34, 4586.28, 4574.9, 4514.22, 4528.88, 4498.13, 4535.88, 4631.04, 4693.82, 4684.74, 3910.0, 3343.9, 3034.84, 3573.56, 3104.45, 3581.83, 3188.29, 3129.57, 4294.02, 4709.01, 4628.06, 4575.12, 4538.5, 4430.54, 4406.22, 4394.48, 4298.55, 4364.7, 4325.1, 4314.53, 4390.83, 4507.96, 4698.56, 4739.07, 4376.65, 3830.96, 3399.39, 3226.21, 3132.38, 3017.38, 3338.88, 4562.23, 4897.1, 5004.24, 5085.06, 4892.55, 4884.31, 4805.04, 4705.91, 4645.2, 4562.27, 4477.42, 4555.27, 4547.38, 4540.34, 4542.26, 4704.49, 4957.13, 4552.06, 4622.55, 3942.86, 4226.53, 5148.08, 5381.99, 5461.13, 4883.82, 5243.63, 4880.53, 4859.33, 4766.51, 4709.01, 4687.68, 4602.62, 4593.0, 4551.03, 4589.84, 4609.43, 4359.68, 4363.32, 4484.1, 4651.79, 4727.42, 4049.67, 3835.19, 3616.63, 3358.11, 3334.9, 4686.08, 5311.32, 5416.11, 4973.03, 4972.31, 5076.98, 4941.72, 4852.9, 4818.62, 4728.82, 4702.57, 4670.43, 4638.39, 4647.15, 4635.79, 4593.33, 4672.66, 4918.32, 5004.68, 4794.5, 4790.93, 4641.89, 3984.32, 3345.61, 4278.98, 5643.29, 5663.03, 5333.42, 5336.04, 4881.53, 4850.22, 4779.83, 4672.78, 4650.75, 4568.0, 4504.99, 4557.57, 4555.6, 4536.55, 4540.71, 4560.8, 4546.48, 4530.23, 3887.62, 3355.81, 2849.47, 3207.79, 2730.13, 2403.77, 3411.98, 4021.68, 4274.08, 4539.8, 4677.53, 4708.96, 4664.69, 4633.43, 4600.23, 4608.9, 4515.17, 4429.33, 4384.36, 4364.39, 4389.14, 4428.55, 4468.04, 4320.44, 3577.79, 2785.27, 2333.98, 2065.67, 1943.98, 2926.82, 4189.33, 4610.8, 4615.83, 4514.38, 4487.53, 4379.34, 4445.18, 4408.68, 4368.51, 4379.75, 4287.29, 4267.65, 4265.86, 4255.36, 4292.07, 4464.22, 4646.48, 4649.02, 4049.85, 3523.07, 3283.57, 3188.54, 3134.37, 3007.13, 3317.74, 4204.4, 3901.03, 4979.19, 4885.88, 4773.13, 4725.12, 4641.22, 4582.49, 4534.28, 4481.68, 4464.44, 4447.08, 4364.64, 4363.25, 4502.14, 4720.15, 4864.04, 4674.13, 3641.84, 3406.49, 3284.13, 3210.74, 3361.32, 3415.83, 3954.62, 4286.32, 4753.32, 4876.31, 4750.45, 4763.62, 4645.98, 4559.83, 4596.47, 4529.15, 4185.25, 4138.02, 4052.97, 4077.9, 4159.3, 4379.43, 4490.15, 4022.16, 3451.78, 4118.04, 4032.44, 4237.74, 3725.41, 4638.97, 5105.57, 5209.65, 4917.72, 4883.95, 4710.2, 4628.92, 4600.49, 4499.77, 4499.37, 4456.1, 4339.25, 4381.72, 4379.11, 4464.86, 4574.16, 4745.42, 4743.75, 4019.59, 3429.85, 3100.69, 2605.97, 2467.96, 2492.5, 2595.52, 2944.83, 3443.63, 4170.69, 4599.8, 4514.63, 4500.36, 4302.27, 4232.33, 4219.27, 4155.09, 4151.72, 4191.78, 4211.79, 4226.67, 4298.4, 4540.8, 4598.57, 3926.43, 3267.84, 2922.76, 2671.83, 2571.36, 2732.03, 2860.2, 3354.57, 3855.32, 4527.88, 4755.18, 4612.16, 4577.19, 4533.64, 4467.06, 4455.91, 4377.69, 4372.45, 4324.21, 4335.31, 4356.44, 4372.1, 4356.01, 4303.27, 3593.04, 2924.64, 2518.89, 1996.42, 2354.37, 2326.72, 2488.24, 2856.15, 3424.19, 4211.79, 4589.25, 4566.31, 4495.95, 4489.3, 4394.58, 4379.33, 4346.77, 4339.85, 4230.59, 4385.73, 4440.77, 4451.35, 4414.5, 4376.64, 3684.68, 2956.08, 2607.33, 2409.7, 2343.15, 2607.05, 3015.22, 3229.7, 4055.37, 4450.74, 4564.46, 4444.72, 4411.97, 4313.81, 4375.26, 4425.57, 4387.83, 4362.1, 4368.77, 4339.44, 4334.19, 4427.36, 4563.45, 4727.62, 4688.81, 4416.23, 4082.98, 3012.43, 3959.75, 4065.5, 4040.22, 4785.25, 4857.98, 5024.71, 5080.95, 4787.6, 4715.88, 4662.14, 4577.23, 4553.16, 4479.84, 4520.23, 4524.22, 4525.61, 4546.61, 4658.67, 4827.82, 5033.33, 4939.21, 4824.27, 4411.38, 3738.43, 3204.08, 4176.17, 5303.01, 5077.47, 5038.96, 4624.81, 4997.95, 4808.45, 4739.48, 4667.53, 4515.6, 4528.77, 4495.08, 4495.82, 4458.3, 4465.78, 4485.13, 4584.53, 4785.66, 4853.59, 4357.37, 3683.6, 3318.99, 3077.7, 2729.86, 3571.55, 4537.93, 4436.68, 4382.52, 4901.72, 4890.84, 4681.24, 4644.27, 4560.93, 4483.28, 4468.64, 4397.45, 4369.52, 4350.48, 4377.59, 4417.73, 4518.03, 4760.66, 4765.53, 4251.22, 3520.28, 3251.34, 3087.62, 2929.8, 3035.31, 3195.42, 3846.5, 4636.7, 4724.44, 4980.84, 4739.27, 4730.66, 4683.09, 4623.9, 4588.7, 4577.14, 4567.73, 4518.04, 4515.08, 4543.93, 4647.74, 4775.96, 4885.0, 4411.47, 3772.41, 3413.51, 3158.0, 3013.15, 3140.78, 3143.72, 4427.8, 3966.09, 4747.12, 5026.95, 4707.56, 4647.49, 4616.25, 4524.36, 4507.82, 4483.82, 4472.26, 4471.28, 4475.97, 4483.67, 4485.38, 4477.5, 4468.6, 3318.3, 2804.15, 2462.22, 2173.59, 2078.13, 2761.38, 3571.51, 3611.58, 3867.52, 4454.34, 4472.29, 4425.45, 4468.21, 4397.68, 4396.59, 4380.96, 4348.27, 4268.15, 4293.72, 4274.23, 4343.48, 4335.74, 4387.76, 4366.08, 3635.44, 3042.02, 2384.95, 2099.63, 2030.9, 2169.29, 2330.15, 2748.25, 3409.01, 4176.07, 4528.58, 4465.98, 4448.91, 4398.55, 4309.5, 4349.3, 4322.87, 4335.87, 4310.75, 4271.82, 4340.15, 4439.3, 4622.76, 4717.22, 4528.44, 4215.98, 3725.39, 3741.81, 3490.84, 3609.39, 3905.55, 4445.66, 4638.19, 4819.71, 4905.8, 4743.2, 4740.79, 4606.16, 4522.05, 4491.47, 4481.02, 4489.57, 4466.36, 4477.89, 4478.27, 4546.73, 4762.53, 4816.85, 4401.14, 3756.87, 3384.83, 3131.4, 3094.51, 3237.92, 3273.44, 3557.35, 3978.91, 4567.47, 4738.42, 4597.13, 4583.38, 4528.98, 4486.92, 4478.86, 4467.12, 4449.61, 4403.1, 4379.88, 4462.01, 4520.3, 4777.25, 4821.8, 4284.89, 3648.24, 3276.9, 3078.41, 2999.87, 3072.62, 3258.59, 3663.88, 4194.23, 4741.35, 4882.71, 4702.67, 4628.45, 4561.12, 4500.11, 4462.87, 4453.22, 4445.93, 4413.27, 4382.23, 4345.5, 4445.07, 4728.59, 4784.28, 4402.12, 3662.59, 3186.57, 3070.85, 3143.48, 3565.01, 4156.26, 3750.15, 5041.75, 5004.39, 4979.86, 4728.18, 4634.76, 4574.18, 4457.03, 4431.98, 4354.03, 4351.54, 4394.61, 4413.19, 4405.46, 4464.39, 4562.72, 4656.22, 4201.68, 4078.16, 3181.36, 2949.3, 3780.12, 4267.51, 3800.3, 4342.48, 4622.91, 4608.48, 4715.67, 4534.43, 4515.88, 4490.03, 4490.63, 4477.18, 4502.47, 4502.49, 4486.14, 4443.6, 4484.12, 4510.59, 4606.24, 4522.69, 3882.98, 3118.46, 2570.49, 2293.33, 2142.15, 2255.45, 2496.19, 2862.68, 3819.71, 4277.28, 4516.15, 4439.97, 4421.75, 4362.56, 4354.56, 4286.05, 4288.48, 4322.54, 4340.18, 4329.76, 4376.26, 4407.67, 4423.59, 4420.37, 3576.83, 2824.47, 2448.62, 2189.12, 2034.93, 2659.99, 2659.76, 2854.56, 3447.37, 4311.77, 4555.37, 4426.91, 4352.2, 4349.77, 4284.08, 4231.16, 4191.95, 4125.81, 4102.21, 4092.88, 4090.5, 4400.04, 4570.62, 4583.0, 4077.75, 3366.75, 3007.1, 2803.85, 2643.71, 2816.83, 3018.23, 3291.22, 3858.77, 4483.75, 4636.05, 4458.29, 4310.69, 4258.71, 4174.79, 4106.52, 4103.64, 4131.06, 4109.21, 4079.31, 4212.07, 4266.4, 4464.59, 4613.95, 4637.78, 4559.99, 4340.99, 4228.71, 4114.42, 4184.53, 4347.21, 4431.57, 4479.95, 4470.21, 4281.29, 4129.18, 4019.95, 3949.75, 3906.55, 3889.79, 3896.55, 3878.83, 3878.98, 3837.31, 3927.09, 3986.09, 4221.69, 4465.21, 4538.5, 4222.08, 3993.4, 3835.77, 3831.57, 3224.91, 2629.34, 2929.88, 3604.4, 4072.83, 4277.2, 4200.23, 4181.71, 4133.44, 4071.58, 4046.75, 4023.42, 3996.43, 3912.41, 3845.71, 3876.07, 3977.59, 4186.42, 4431.08, 4594.4, 4148.49, 3082.64, 2704.41, 2415.07, 2560.49, 2745.36, 3066.43, 3699.73, 4242.32, 4463.75, 4278.26, 4431.09, 4376.04, 4167.19, 4142.29, 4127.1, 4131.23, 3991.33, 4010.24, 4019.56, 4080.06, 4331.66, 4433.49, 3890.2, 3318.7, 3082.64, 2659.91, 2384.62, 2462.85, 4042.96, 4115.88, 3679.12, 4263.44, 4420.57, 4151.82, 4079.69, 4056.29, 3910.86, 3917.93, 3864.47, 3939.52, 3954.41, 3966.82, 3875.64, 3879.12, 4086.95, 3938.69, 3722.4, 3506.47, 2074.86, 2138.71, 1392.41, 1502.31, 1928.86, 2198.09, 2899.42, 3681.27, 3836.71, 3873.34, 3864.39, 3888.44, 3880.84, 3885.93, 3794.78, 3808.33, 3792.09, 3773.09, 3820.19, 3826.9, 3858.5, 3820.69, 3234.55, 2386.01, 1873.33, 1663.33, 1513.69, 1493.27, 1696.84, 2127.69, 2878.97, 3650.87, 3815.11, 3859.43, 3780.53, 3749.04, 3790.28, 3783.64, 3771.06, 3767.33, 3749.69, 3762.15, 3800.77, 3954.73, 4110.36, 4194.9, 3771.22, 3021.81, 2631.44, 2374.14, 2281.47, 2555.37, 2725.96, 3149.77, 3689.8, 4487.39, 4550.05, 4416.6, 4276.55, 4219.38, 4141.58, 4101.61, 4020.56, 3963.93, 3971.22, 3961.56, 3963.97, 4085.41, 4372.0, 4475.3, 4493.76, 4209.3, - 3804.31, 2737.8, 2654.71, 2931.85, 3016.93, 3506.09, 4156.39, 4636.53, 4756.16, 4575.28, 4505.48, 4407.5, 4349.83, 4301.71, 4220.59, 4252.12, 4233.32, 4240.57, 4276.85, 4374.32, 4510.25, 4603.61, 4628.9, 4372.39, 3587.12, 3885.33, 3033.52, 3060.43, 4489.77, 4691.45, 4649.0, 4817.82, 4757.93, 4615.78, 4546.57, 4505.22, 4432.05, 4408.85, 4375.85, 4420.39, 4431.29, 4425.21, 4531.38, 4641.97, 4790.16, 4844.77, 4938.47, 4903.47, 4998.08, 4979.37, 4909.44, 4881.14, 4817.77, 4784.83, 4707.18, 4638.3, 4615.87, 4458.34, 4398.33, 4328.92, 4243.13, 4213.12, 4161.62, 4171.3, 4146.03, 4104.88, 4153.82, 4181.22, 4340.3, 4471.68, 4421.83, 4387.79, 4332.86, 4252.39, 4037.27, 3778.95, 3540.58, 3386.61, 3851.77, 4448.05, 4529.69, 4371.13, 4300.19, 4251.76, 4229.09, 4208.88, 4183.95, 4176.19, 4154.06, 4139.3, 4199.62, 4256.37, 4292.25, 4289.18, 3778.02, 2889.64, 2349.6, 2053.02, 1905.78, 1925.14, 2142.93, 2576.4, 3302.66, 4024.89, 4188.43, 4148.8, 4054.61, 4045.46, 3981.07, 3979.72, 3956.09, 3993.81, 3996.84, 4015.69, 3994.18, 4031.31, 4025.67, 4012.69, 3445.32, 2639.29, 2137.77, 1820.3, 1719.57, 1788.37, 2021.8, 2561.49, 3296.25, 3975.91, 4162.23, 4021.45, 4231.63, 4174.94, 4095.59, 4120.51, 4083.87, 4079.61, 4080.35, 4064.99, 4019.5, 4106.72, 4402.83, 4429.38, 4044.43, 3424.47, 3196.19, 2939.82, 2758.18, 2903.17, 3078.32, 4700.94, 4786.57, 4609.48, 4721.68, 4469.37, 4418.13, 4389.77, 4314.89, 4268.57, 4165.23, 4171.07, 4183.19, 4282.83, 4409.36, 4454.43, 4708.92, 4709.41, 4253.08, 3557.3, 3566.23, 2938.09, 2730.81, 2754.64, 2871.64, 3404.8, 4104.7, 4631.77, 4658.19, 4461.6, 4322.28, 4238.91, 4109.59, 4102.42, 4033.62, 4054.16, 4038.81, 4003.34, 4024.77, 4101.57, 4306.82, 4410.85, 4226.39, 4040.09, 3767.34, 3435.51, 4086.37, 3924.25, 3645.11, 3677.36, 4776.6, 4754.44, 4736.27, 4521.43, 4449.16, 4398.44, 4352.57, 4268.66, 4365.9, 4397.18, 4368.41, 4359.4, 4429.02, 4449.06, 4694.15, 4760.85, 4530.28, 4468.59, 4296.02, 4289.84, 3696.29, 3969.79, 4010.2, 4828.96, 4846.25, 5017.67, 4777.85, 4584.21, 4514.9, 4433.2, 4389.73, 4367.64, 4326.11, 4313.29, 4187.29, 4121.85, 4157.38, 4041.86, 4222.51, 4271.76, 4127.41, 3877.55, 4011.87, 4621.94, 4779.18, 4657.88, 4383.97, 4002.67, 3807.22, 4473.53, 4520.52, 4474.15, 4459.81, 4272.87, 4165.78, 4163.16, 4174.23, 4145.1, 4137.89, 4150.21, 4158.4, 4181.53, 4152.9, 4061.41, 3664.58, 2698.95, 2355.19, 2069.26, 1872.55, 1914.17, 2148.85, 2609.09, 3328.65, 3987.07, 4093.64, 4065.14, 3972.22, 3959.38, 3920.53, 3913.37, 3899.27, 3909.48, 3967.89, 3936.32, 3955.57, 3973.15, 3995.82, 3966.33, 3511.92, 2639.81, 2132.53, 2923.13, 2764.36, 3201.17, 3323.05, 3483.44, 2998.23, 3806.63, 3973.58, 3958.71, 3993.81, 3994.59, 3988.0, 4046.97, 4021.04, 3986.33, 3956.64, 3961.68, 4000.84, 4112.24, 4320.51, 4464.86, 4118.37, 3353.7, 3021.87, 2601.96, 2518.76, 2909.58, 4205.06, 4176.95, 4544.93, 4490.86, 4466.83, 4376.59, 4305.79, 4263.88, 4176.39, 4146.64, 4108.67, 4059.43, 4045.3, 4009.06, 4045.19, 4116.19, 4338.62, 4452.19, 4103.76, 3619.99, 3787.69, 3184.46, 3254.16, 3867.2, 3667.75, 3645.86, 4271.99, 4644.47, 4587.01, 4331.16, 4449.03, 4434.8, 4377.8, 4313.47, 4326.97, 4300.7, 4262.43, 4254.78, 4203.34, 4273.73, 4428.01, 4572.49, 4458.16, 3520.59, 3370.08, 3157.57, 2991.65, 4735.52, 4859.0, 4986.48, 4763.26, 4684.15, 4559.54, 4452.19, 4344.88, 4306.73, 4279.27, 4291.48, 4261.95, 4247.01, 4284.95, 4185.83, 4188.31, 4267.02, 4437.46, 4581.63, 4670.1, 4524.35, 4457.35, 4118.83, 4179.98, 4160.83, 4078.83, 4163.06, 4480.82, 4649.08, 4598.56, 4528.21, 4555.68, 4229.3, 4040.52, 4000.22, 4014.42, 3978.82, 3920.95, 3897.83, 3934.06, 3994.49, 4199.3, 4318.97, 4439.68, 4092.22, 4030.78, 4213.88, 4144.34, 4038.11, 3981.25, 3850.82, 4076.34, 4412.29, 4429.34, 4226.92, 4149.55, 4026.54, 4065.92, 4269.49, 4105.31, 4021.81, 4018.98, 4062.06, 4076.28, 4080.51, 4116.03, 4127.66, 3686.4, 3209.68, 3740.66, 3712.83, 2017.83, 2266.84, 2366.35, 2839.96, 3596.45, 4174.24, 4183.09, 4132.27, 4139.77, 4079.46, 4036.92, 4038.72, 4050.54, 4057.22, 4039.97, 4014.14, 4094.81, 4103.34, 4134.25, 4099.86, 4050.8, 4002.05, 3938.39, 3908.03, 3912.46, 3964.26, 3987.55, 4034.1, 4062.64, 4024.03, 4067.37, 4055.83, 4056.57, 4034.3, 4031.76, 4043.31, 4044.61, 4031.4, 4046.42, 4017.33, 4080.23, 4107.13, 4268.33, 4408.45, 4470.79, 4587.72, 4621.16, 4691.34, 4627.59, 4585.22, 4495.77, 4380.86, 4373.04, 4559.2, 4526.95, 4478.39, 4440.41, 4351.75, 4317.04, 4287.33, 4236.3, 4222.4, 4195.81, 4179.99, 4212.17, 4292.94, 4481.8, 4655.13, 4612.31, 4649.87, 4634.0, 4639.22, 4620.88, 4564.52, 4538.45, 4621.06, 4628.57, 4467.08, 4418.21, 4326.68, 4328.34, 4252.68, 4271.7, 4230.55, 4220.44, 4148.85, 4126.13, 4134.16, 4142.27, 4202.89, 4330.75, 4439.28, 4423.77, 4501.34, 4668.08, 4739.42, 4787.12, 4729.34, 4743.04, 4639.97, 4587.21, 4520.73, 4406.46, 4325.17, 4299.82, 4272.91, 4172.9, 4266.18, 4245.06, 4230.04, 4251.23, 4192.96, 4202.33, 4317.66, 4489.42, 4635.01, 4504.79, 4713.35, 4730.02, 4729.76, 4904.64, 4803.21, 4518.04, 4903.9, 4776.53, 4528.99, 4489.32, 4687.23, 4649.05, 4439.05, 4319.25, 4317.73, 4269.2, 4348.28, 4354.44, 4406.75, 4481.13, 4554.54, 4722.7, 4812.63, 4853.49, 4506.81, 4342.19, 4350.62, 4670.1, 4846.44, 4945.49, 5231.75, 5067.98, 4862.91, 4706.5, 4653.06, 4570.72, 4532.74, 4462.69, 4467.12, 4414.81, 4426.11, 4406.1, 4408.24, 4407.11, 4432.02, 4488.15, 4449.57, 4234.86, 3791.37, 3641.69, 3858.9, 4104.51, 3468.76, 3386.82, 3574.04, 3966.9, 4338.57, 4337.94, 4319.25, 4339.66, 4315.05, 4280.72, 4253.04, 4204.37, 4192.55, 4181.69, 4196.08, 4217.04, 4238.09, 4203.32, 4020.5, 3594.73, 3833.72, 3398.99, 3196.34, 3826.69, 3790.56, 3905.32, 3858.93, 4316.15, 4359.59, 4370.47, 4392.42, 4294.03, 4285.41, 4291.92, 4327.93, 4281.9, 4260.31, 4266.26, 4222.52, 4359.41, 4402.25, 4504.61, 4564.72, 4164.1, 4533.98, 4165.51, 3786.27, 3237.95, 3166.41, 3699.32, 4394.07, 5021.73, 4850.78, 4468.8, 4309.37, 4165.63, 4151.93, 4114.34, 4097.36, 4063.1, 4092.91, 4088.39, 4051.55, 4127.65, 4213.48, 4378.52, 4189.26, 3723.58, 3105.92, 3129.98, 3227.64, 3204.53, 3385.54, 4005.18, 4709.97, 5089.05, 4692.79, 4603.93, 4237.82, 4192.88, 4165.38, 4045.72, 4056.61, 3986.61, 3992.87, 3988.82, 3955.03, 3965.96, 4077.76, 4276.31, 4071.36, 3555.11, 3212.49, 3127.89, 3346.07, 3507.34, 5078.84, 5099.98, 5160.7, 5131.07, 4712.35, 4603.39, 4400.02, 4335.41, 4307.44, 4231.59, 4228.01, 4164.01, 4166.77, 4180.33, 4149.85, 4181.09, 4315.68, 4493.84, 4542.86, 4136.29, 3364.28, 3418.37, 3135.66, 3221.76, 3379.05, 3891.85, 4644.43, 4927.12, 4587.62, 4443.71, 4330.79, 4298.26, 4197.38, 4178.02, 4136.43, 4119.46, 4119.02, 4144.79, 4096.62, 4063.12, 4152.84, 4297.54, 4094.84, 3591.07, 3407.14, 3217.94, 3179.25, 3107.63, 3655.17, 4039.19, 4810.04, 5168.87, 4902.58, 4653.01, 4538.7, 4502.35, 4437.84, 4355.29, 4347.15, 4309.41, 4333.17, 4315.68, 4309.96, 4320.6, 4346.61, 4400.04, 4158.84, 3419.68, 2838.01, 2625.11, 2492.75, 2535.93, 2805.34, 3229.11, 3788.75, 4188.22, 4191.14, 4159.89, 4142.29, 4099.7, 4085.13, 4038.13, 3994.71, 3995.58, 4005.28, 3994.65, 3972.27, 4004.02, 3991.9, 4040.66, 3813.47, 3015.55, 2385.94, 2392.66, 2066.36, 2120.45, 2263.2, 3644.56, 3912.7, 4038.42, 4020.06, 4046.59, 4101.67, 4008.29, 4056.17, 4059.07, 4092.0, 4081.85, 4135.07, 4046.21, 4011.17, 4018.5, 4095.88, 4272.33, 4432.36, 4630.05, 5001.29, 4973.34, 4860.04, 4908.32, 4846.74, 4759.48, 4878.57, 5007.95, 4973.9, 4792.1, 4672.19, 4641.12, 4593.4, 4504.02, 4486.18, 4282.86, 4230.72, 4206.85, 4197.6, 4219.89, 4318.22, 4531.77, 4553.43, 4394.8, 4729.98, 4235.32, 3357.65, 3069.73, 3194.13, 3947.57, 4495.44, 4810.44, 4734.32, 4492.25, 4447.42, 4466.7, 4462.84, 4325.89, 4294.48, 4276.28, 4284.94, 4264.37, 4186.35, 4384.96, 4501.72, 4604.36, 4491.17, 4516.9, 4509.39, 4356.65, 4529.71, 4506.36, 3329.25, 3707.52, 4512.11, 4868.63, 4746.28, 4641.0, 4479.1, 4420.04, 4158.17, 4079.16, 4071.4, 4005.28, 3988.85, 3984.77, 3947.79, 3983.0, 4168.28, 4350.76, 4260.32, 3724.93, 3189.67, 3028.92, 3365.18, 3611.41, 4043.72, 4668.08, 4860.72, 4910.83, 4818.77, 4619.87, 4552.42, 4470.71, 4471.52, 4393.68, 4411.43, 4400.57, 4379.16, 4375.64, 4333.18, 4342.75, 4372.3, 4571.68, 4606.0, 4617.24, 4219.77, 4470.42, 4244.47, 3216.2, 3430.33, 4356.17, 4820.76, 4883.52, 4818.56, 4681.69, 4429.28, 4372.57, 4309.59, 4370.93, 4354.57, 4328.69, 4284.31, 4318.6, 4283.75, 4254.25, 4283.26, 4305.7, 4304.97, 4008.53, 3724.66, 3135.02, 3211.89, 3792.23, 3382.37, 4025.46, 4022.55, 4402.02, 4378.65, 4274.49, 4232.79, 3988.79, 4006.65, 3935.35, 3978.29, 3953.68, 3979.63, 3993.89, 3963.62, 4006.81, 3986.07, 3972.12, 3890.72, 3139.99, 2555.32, 1030.8, 1222.73, 2344.23, 1584.61, 2327.83, 2777.94, 3252.6, 3440.67, 3393.67, 3568.73, 3463.91, 3457.85, 3484.21, 3521.3, 3502.07, 3493.75, 3477.0, 3444.04, 3478.28, 3559.13, 3882.89, 3834.34, 3228.17, 2771.99, 2546.5, 2498.22, 2494.83, 3572.73, 4622.04, 4789.01, 4370.42, 4465.39, 4370.47, 4117.56, 4108.26, 4110.9, 3889.44, 3868.55, 3825.75, 3788.67, 3761.2, 3785.08, 3823.7, 3884.02, 4109.25, 4073.42, 3286.64, 3701.29, 3992.66, 3975.03, 4124.67, 4482.84, 4852.39, 4936.56, 4950.3, 4512.16, 4450.91, 4305.93, 4204.56, 4068.69, 3988.4, 4055.05, 4040.66, 4041.69, 4034.51, 4035.69, 4104.5, 4106.3, 4232.77, 4235.15, 4656.06, 4531.18, 4523.8, 4395.85, 4775.57, 5118.33, 5154.19, 5130.01, 5156.29, 4623.58, 4321.25, 4168.14, 4121.35, 4098.39, 3976.42, 4022.67, 3997.71, 4034.42, 3993.26, 3919.09, 3956.73, 4062.27, 4283.86, 4459.91, 4937.61, 5272.57, 5330.64, 5424.55, 5253.47, 5287.8, 5276.46, 5313.85, 5108.66, 4755.0, 4356.51, 4333.36, 4305.31, 4252.17, 4133.64, 4115.07, 4039.23, 4025.89, 4046.72, 4038.57, 4135.37, 4174.47, 4343.6, 4474.9, 4669.81, 4835.91, 4862.06, 4846.17, 4614.32, 4464.58, 4077.92, 4278.4, 4484.12, 4450.56, 4274.54, 4175.2, 4163.39, 4057.36, 4005.19, 3988.48, 3969.53, 3950.62, 3952.45, 3970.69, 3930.69, 3924.09, 3922.45, 3849.59, 3498.73, 3237.12, 3189.35, 3049.43, 2778.66, 2503.59, 2865.3, 3513.2, 3852.19, 3872.63, 3858.54, 3782.39, 3770.49, 3782.2, 3786.07, 3780.06, 3765.37, 3750.24, 3681.01, - 3694.68, 3722.35, 3728.96, 3772.79, 3773.26, 3739.95, 3455.01, 2539.33, 3423.66, 3321.17, 2460.33, 2744.37, 3474.64, 3965.15, 3964.9, 3971.23, 3914.91, 3886.98, 3893.18, 3889.76, 3877.12, 3928.63, 3924.78, 3930.56, 3940.97, 3975.39, 4082.06, 4296.59, 4359.01, 4092.15, 4465.58, 4371.79, 4548.83, 4690.72, 5096.76, 5219.39, 5053.07, 4817.96, 4425.24, 4235.57, 4169.54, 4150.28, 4121.11, 4152.98, 4140.56, 4118.22, 4146.1, 4172.95, 4139.74, 4213.96, 4273.91, 4372.49, 4398.46, 4303.49, 4258.92, 4185.69, 4116.34, 4095.7, 4079.51, 4125.89, 4205.45, 4316.36, 4256.44, 4190.93, 4194.33, 4150.92, 4117.85, 4076.17, 4099.95, 4106.66, 4126.75, 4172.43, 4153.14, 4207.68, 4248.33, 4410.1, 4392.79, 4334.46, 4042.09, 4069.17, 4047.26, 4094.57, 4039.12, 4268.85, 4401.54, 4437.13, 4427.94, 4392.94, 4246.25, 4214.59, 4168.85, 4133.13, 4158.1, 4098.31, 4114.47, 4046.49, 4079.5, 4130.8, 4224.05, 4321.02, 4288.0, 3949.33, 3948.97, 3823.71, 3839.64, 3676.89, 3641.29, 3769.05, 3974.61, 4179.42, 4108.64, 4061.35, 4075.69, 4046.49, 4017.72, 4100.96, 4079.3, 4028.26, 4084.76, 4076.89, 4074.71, 4096.45, 4144.32, 4273.94, 4309.18, 4056.95, 3865.38, 3852.92, 3590.51, 3679.58, 3898.46, 4063.25, 4213.25, 4283.61, 4255.24, 4175.14, 4139.21, 4125.31, 4105.75, 4079.84, 4093.21, 4030.78, 4068.42, 4073.91, 4014.52, 4073.85, 4104.25, 4135.29, 4062.13, 3759.25, 3768.9, 3784.44, 3598.59, 3529.74, 3277.03, 3469.53, 3862.72, 4151.59, 4153.64, 4080.09, 4058.19, 4127.31, 4088.91, 3985.44, 4004.61, 3975.75, 3956.5, 3921.28, 3954.17, 3970.18, 3964.64, 3981.68, 3971.25, 3518.33, 2917.68, 2698.27, 2544.73, 2663.14, 2803.37, 3154.74, 3861.2, 4135.08, 4142.11, 4125.5, 4134.86, 4127.52, 4135.53, 4078.65, 4061.05, 4001.39, 3934.68, 3927.61, 3983.83, 4092.69, 4119.53, 4327.35, 4423.15, 3966.92, 3651.93, 3729.58, 3633.5, 3558.71, 3436.05, 4031.13, 4675.53, 4958.96, 4519.66, 4383.83, 4290.92, 4165.84, 4095.67, 4055.65, 4020.63, 3985.14, 3979.59, 3823.16, 3800.43, 3979.0, 4039.37, 4286.31, 4317.56, 4043.37, 3813.85, 3483.57, 3343.14, 3204.75, 3364.25, 3813.16, 4513.26, 4762.69, 4649.46, 4428.49, 4267.8, 4192.54, 4186.5, 4085.26, 3807.15, 3775.21, 3779.44, 3753.91, 3764.53, 3747.26, 3836.36, 4061.07, 4177.02, 4185.76, 4049.99, 3999.21, 4005.0, 3933.34, 2982.19, 3479.96, 4114.81, 4556.15, 4563.0, 4485.24, 4367.81, 4291.66, 4259.57, 4146.6, 4157.94, 4093.16, 4093.69, 4055.61, 4057.42, 4039.86, 4146.34, 4330.3, 4501.74, 4625.92, 4751.09, 4817.43, 4752.81, 4607.2, 4772.45, 4941.8, 4933.0, 4833.73, 4691.09, 4570.18, 4502.39, 4462.73, 4379.37, 4291.17, 4270.63, 4252.26, 4287.8, 4278.55, 4226.81, 4176.32, 4240.73, 4507.2, 4594.11, 4505.36, 3932.34, 3282.61, 3164.74, 3073.59, 3356.3, 3844.52, 4436.45, 4785.1, 4638.54, 4514.93, 4442.54, 4449.18, 4448.54, 4372.34, 4321.11, 4335.16, 4319.75, 4276.27, 4274.58, 4298.18, 4332.19, 4338.54, 4255.08, 3786.16, 3684.43, 3542.81, 2877.27, 2538.43, 3229.64, 3464.67, 4005.83, 4233.75, 4242.23, 4284.77, 4225.24, 4253.73, 4237.98, 4008.16, 4031.68, 4027.64, 4041.19, 4024.61, 4015.08, 4004.2, 4020.77, 4059.07, 4069.13, 3951.19, 3707.44, 3509.81, 3491.38, 3436.24, 2685.98, 3379.9, 4259.6, 4398.07, 4326.11, 4296.54, 4255.15, 4309.63, 4273.29, 4252.75, 4250.46, 4240.67, 4255.21, 4271.93, 4258.75, 4286.06, 4330.02, 4554.88, 4618.45, 4212.45, 3641.31, 3284.76, 3358.61, 3896.54, 4258.33, 4404.97, 4523.44, 4681.52, 4629.33, 4486.26, 4421.43, 4291.07, 4278.31, 4206.05, 4181.83, 4148.47, 4173.25, 4132.4, 4155.64, 4171.5, 4233.08, 4453.55, 4526.52, 4182.37, 4248.29, 3499.17, 3576.4, 3550.21, 3532.31, 4550.21, 4764.25, 4737.3, 4649.36, 4520.04, 4373.36, 4405.29, 4381.94, 4217.01, 4188.39, 4146.0, 4160.45, 4149.04, 4143.37, 4178.36, 4321.99, 4468.09, 4542.15, 4155.49, 3620.16, 4206.53, 4393.16, 4397.26, 3875.49, 4170.5, 4521.43, 4743.92, 4712.94, 4477.81, 4396.98, 4334.12, 4290.02, 4211.52, 4212.09, 4172.06, 4178.44, 4213.0, 4161.36, 4149.46, 4208.61, 4379.68, 4546.25, 4761.09, 5418.63, 4422.23, 3356.98, 3368.26, 4444.53, 4704.72, 4552.86, 4837.95, 4778.4, 4553.72, 4484.67, 4518.25, 4486.41, 4469.94, 4427.75, 4377.65, 4453.36, 4475.98, 4436.16, 4468.28, 4537.73, 4672.07, 4746.87, 4355.46, 4226.48, 3858.67, 3291.9, 3251.42, 3699.89, 4009.9, 4693.3, 4896.08, 4812.98, 4692.22, 4605.3, 4575.42, 4536.67, 4483.08, 4472.32, 4457.88, 4446.95, 4432.06, 4443.22, 4478.63, 4487.81, 4553.1, 4537.33, 4181.86, 3538.64, 4116.18, 4269.82, 3979.22, 4261.63, 4173.96, 4477.01, 4530.2, 4538.56, 4521.33, 4484.73, 4484.42, 4504.33, 4520.15, 4545.55, 4495.29, 4502.92, 4456.09, 4449.6, 4520.83, 4555.19, 4560.34, 4522.19, 4457.92, 4234.09, 3997.44, 3699.55, 3665.58, 3894.15, 3961.07, 4241.72, 4386.6, 4397.39, 4359.78, 4364.98, 4362.15, 4368.12, 4347.15, 4344.88, 4321.05, 4295.09, 4253.73, 4316.82, 4438.89, 4506.58, 4626.29, 4868.3, 5027.34, 5031.67, 4369.08, 3532.85, 3343.32, 4084.57, 4133.69, 4611.78, 4929.53, 4931.04, 4725.71, 4661.22, 4609.0, 4515.26, 4473.61, 4506.59, 4473.83, 4488.78, 4512.59, 4508.6, 4560.91, 4602.89, 4834.0, 4915.35, 4527.04, 4086.52, 3610.83, 3613.96, 3859.85, 3462.09, 3915.69, 4567.13, 4867.4, 4796.17, 4626.28, 4567.56, 4552.71, 4533.7, 4411.33, 4388.33, 4370.95, 4381.88, 4320.64, 4338.53, 4343.39, 4436.39, 4630.95, 4702.72, 4438.21, 3756.44, 3480.47, 3295.18, 3324.72, 3731.42, 4021.66, 4623.61, 4753.28, 4646.86, 4509.5, 4437.76, 4419.4, 4359.37, 4282.72, 4241.67, 4242.01, 4221.42, 4228.64, 4240.86, 4280.58, 4392.1, 4587.39, 4695.33, 4620.59, 4156.64, 4041.54, 3664.31, 3628.54, 4062.76, 4428.48, 4530.93, 4699.29, 4658.92, 4511.21, 4400.22, 4374.27, 4315.16, 4228.4, 4236.79, 4182.71, 4179.58, 4136.29, 4139.75, 4156.65, 4260.61, 4438.92, 4491.63, 4173.5, 3606.02, 3177.97, 3007.98, 3018.14, 3354.15, 3914.89, 4524.51, 4676.73, 4575.94, 4433.08, 4356.56, 4309.08, 4192.42, 4120.36, 4167.43, 4156.27, 4139.3, 4134.53, 4131.85, 4156.81, 4202.46, 4248.88, 4154.54, 3764.13, 3088.44, 2699.36, 2640.56, 2603.45, 2661.25, 3180.1, 3868.04, 4185.18, 4202.38, 4110.99, 4087.57, 4044.26, 4055.78, 3981.34, 3988.77, 4041.33, 4017.46, 4018.76, 4023.85, 4042.76, 4081.21, 4111.38, 4107.71, 3863.03, 3209.7, 2872.51, 2912.68, 2479.91, 3479.07, 3664.29, 3968.92, 4282.15, 4261.74, 4241.48, 4215.64, 4219.45, 4202.08, 4182.58, 4187.88, 4162.2, 4141.91, 4131.49, 4127.98, 4193.43, 4268.9, 4368.2, 4514.4, 4540.16, 4510.11, 4204.03, 4039.33, 3846.08, 3991.05, 4023.29, 4489.98, 4523.43, 4400.68, 4217.86, 4152.66, 4154.4, 4133.23, 4036.75, 4013.84, 4007.07, 3998.95, 3921.5, 3931.25, 3951.24, 3976.94, 4089.85, 4105.13, 3972.06, 3753.57, 3777.42, 3570.17, 3402.26, 3479.78, 3327.08, 3740.51, 4067.49, 4038.12, 3976.45, 3979.98, 3934.69, 3904.75, 3923.38, 3957.56, 3953.95, 3940.33, 3931.49, 3931.72, 3951.68, 4013.48, 4036.88, 4076.28, 3691.38, 3154.82, 2648.56, 2504.39, 3292.92, 3934.08, 3940.59, 3971.07, 4102.39, 4150.39, 4054.11, 4001.61, 4021.71, 3990.29, 3964.45, 3998.0, 4010.65, 3977.57, 3970.4, 3972.3, 3996.98, 4038.7, 4197.3, 4365.7, 4107.51, 3352.99, 2979.07, 2835.3, 2937.06, 2977.0, 3608.36, 4189.13, 4506.21, 4491.25, 4435.68, 4353.49, 4354.78, 4321.86, 4246.14, 4216.19, 4142.89, 4129.32, 4150.39, 4114.44, 4219.98, 4302.38, 4455.54, 4597.65, 4301.49, 4200.9, 4144.42, 3791.59, 3344.39, 3312.94, 4363.91, 4548.93, 4639.0, 4635.07, 4551.79, 4483.64, 4481.52, 4475.96, 4367.29, 4367.44, 4348.59, 4337.87, 4336.37, 4323.72, 4408.21, 4425.32, 4464.29, 4463.77, 4362.26, 4324.57, 4288.31, 4280.14, 4270.62, 4313.96, 4348.18, 4415.08, 4466.39, 4464.84, 4452.49, 4484.7, 4477.84, 4455.38, 4455.74, 4420.3, 4431.51, 4434.09, 4460.62, 4434.94, 4461.05, 4435.94, 4443.23, 4452.42, 4288.4, 4019.22, 3795.09, 3713.58, 3597.81, 3586.52, 3816.85, 4201.34, 4481.02, 4527.98, 4505.51, 4467.93, 4449.16, 4444.05, 4427.96, 4394.03, 4383.79, 4384.88, 4396.65, 4400.78, 4472.87, 4511.34, 4627.31, 4737.09, 4486.54, 4035.06, 3826.52, 3574.34, 3409.96, 3444.11, 3775.37, 4459.65, 4845.88, 4813.98, 4718.92, 4618.22, 4607.9, 4573.95, 4509.81, 4463.79, 4453.46, 4422.03, 4428.76, 4437.7, 4462.87, 4547.5, 4688.98, 4756.33, 4489.44, 3835.78, 3467.46, 3278.03, 3172.28, 3211.59, 3706.12, 4689.06, 4789.83, 4770.61, 4895.98, 4641.73, 4556.89, 4544.06, 4566.79, 4610.33] - }, + "loads_kw": [200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 410.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0], + "critical_load_fraction": 0.5 + }, "ElectricTariff": { "monthly_energy_rates": [0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01] }, @@ -62,7 +58,11 @@ "installed_cost_per_kwh": 420.0, "replace_cost_per_kw": 410.0, "replace_cost_per_kwh": 200.0, - "soc_min_applies_during_outages": true + "soc_min_applies_during_outages": true, + "min_kw": 20.0, + "max_kw": 20.0, + "min_kwh": 50.0, + "max_kwh": 50.0 }, "Financial": { "value_of_lost_load_per_kwh": 100.0, diff --git a/test/scenarios/outages_gen_pv_wind_stor.json b/test/scenarios/outages_gen_pv_wind_stor.json index 940057dd8..c7c443220 100644 --- a/test/scenarios/outages_gen_pv_wind_stor.json +++ b/test/scenarios/outages_gen_pv_wind_stor.json @@ -1,11 +1,11 @@ { "Financial": {"analysis_years": 25, "elec_cost_escalation_rate_fraction": 0.023, "offtaker_discount_rate_fraction": 0.03, "offtaker_tax_rate_fraction": 0.0, "om_cost_escalation_rate_fraction": 0.025, "owner_discount_rate_fraction": 0.1, "owner_tax_rate_fraction": 0.26, "third_party_ownership": true, "value_of_lost_load_per_kwh": 100.0, "microgrid_upgrade_cost_fraction": 0.3, "offgrid_other_capital_costs": 0.0, "offgrid_other_annual_costs": 0.0, "CO2_cost_per_tonne": 51.0, "CO2_cost_escalation_rate_fraction": 0.042173, "NOx_grid_cost_per_tonne": 1.4011388796869098, "SO2_grid_cost_per_tonne": 1.6923234175287591, "PM25_grid_cost_per_tonne": 1.6432284180219703, "NOx_onsite_fuelburn_cost_per_tonne": 1.4036671769284519, "SO2_onsite_fuelburn_cost_per_tonne": 1.7004369718294172, "PM25_onsite_fuelburn_cost_per_tonne": 1.5671524032006032, "NOx_cost_escalation_rate_fraction": 0.03162951500388087, "SO2_cost_escalation_rate_fraction": 0.043579183321441485, "PM25_cost_escalation_rate_fraction": 0.04170675045047632}, - "ElectricLoad": {"year": 2020, "loads_kw": [4323.64, 4308.39, 4295.48, 4271.64, 4319.28, 4336.74, 4421.35, 4482.93, 4422.83, 4344.48, 4261.96, 4286.53, 4301.41, 4147.72, 4185.52, 4286.8, 4445.29, 4458.0, 4336.69, 4317.69, 4300.78, 4291.04, 4292.25, 4315.47, 4247.3, 4218.67, 4238.63, 4228.93, 4293.92, 4398.98, 4602.42, 4815.42, 4803.33, 4650.81, 4541.7, 4503.76, 4531.09, 4233.49, 4324.4, 4681.81, 4990.46, 4924.16, 4799.32, 4695.37, 4666.73, 4597.43, 4539.11, 4535.19, 4515.26, 4464.25, 4460.85, 4455.56, 4488.93, 4575.65, 4761.71, 4892.84, 4886.55, 4605.59, 4525.02, 4315.76, 4041.62, 3937.99, 4172.83, 4766.61, 5374.5, 5329.88, 5093.43, 4960.34, 4934.57, 4852.97, 4577.29, 4609.88, 4716.62, 4576.74, 4579.92, 4539.74, 4464.88, 4522.4, 4734.03, 5002.09, 4606.45, 4258.07, 3804.13, 3533.84, 3903.99, 3468.96, 4044.32, 4748.29, 5118.08, 4950.02, 4690.49, 4604.56, 4548.75, 4501.28, 4502.22, 4456.13, 4421.56, 4462.61, 4452.3, 4443.08, 4483.97, 4472.32, 4484.96, 4448.46, 3960.69, 3247.24, 2846.28, 2842.1, 2739.37, 3444.7, 3791.82, 4151.74, 4302.42, 4299.63, 4305.64, 4343.54, 4374.35, 4390.37, 4375.31, 4398.61, 4467.47, 4484.25, 4479.71, 4455.08, 4463.78, 4474.53, 4458.66, 4444.69, 4256.89, 3719.34, 2866.52, 3549.03, 3478.85, 3805.98, 3781.37, 3866.19, 4431.2, 4413.65, 4483.14, 4504.05, 4486.59, 4420.69, 4383.44, 4412.2, 4393.28, 4281.31, 4240.78, 4251.79, 4271.73, 4415.11, 4616.29, 4707.06, 4750.5, 3832.05, 3410.26, 3249.13, 3258.47, 3384.71, 3681.25, 4280.07, 4768.69, 4661.44, 4523.52, 4426.41, 4375.74, 4297.02, 4198.59, 4246.83, 4196.98, 4132.39, 4117.31, 4071.65, 4143.66, 4291.08, 4448.57, 4664.64, 4347.08, 4083.46, 3539.45, 3264.22, 3179.43, 3515.78, 3732.88, 4538.87, 4870.39, 4823.55, 4661.51, 4561.73, 4548.97, 4502.05, 4424.13, 4355.49, 4286.6, 4264.79, 4232.77, 4194.08, 4375.98, 4518.39, 4674.51, 4789.32, 4729.34, 4348.58, 3841.36, 3761.52, 3951.71, 4083.24, 4186.86, 4548.16, 4793.24, 4725.72, 4602.47, 4491.89, 4446.74, 4346.45, 4304.56, 4267.31, 4222.26, 4157.26, 4074.21, 4076.69, 4158.05, 4257.71, 4500.97, 4633.32, 4432.43, 3894.7, 3725.15, 3583.0, 3830.45, 4142.73, 4505.61, 4811.05, 4835.64, 4774.91, 4600.66, 4522.46, 4373.94, 4390.43, 4315.79, 4318.38, 4302.49, 4340.11, 4290.5, 4330.29, 4374.02, 4448.4, 4608.39, 4822.06, 5015.06, 5045.16, 5071.89, 5001.03, 4876.33, 4896.09, 4896.19, 4902.12, 4844.39, 4726.15, 4607.51, 4416.88, 4256.58, 4148.41, 4099.93, 4091.19, 4072.65, 4071.07, 4030.93, 4005.13, 4000.97, 4015.2, 4034.1, 4026.31, 3988.55, 4002.34, 4000.24, 3936.9, 3895.07, 3935.2, 3755.8, 3894.27, 4140.38, 4153.87, 4121.22, 4131.57, 4143.25, 4140.24, 4149.93, 4151.26, 4140.98, 4152.26, 4214.71, 4147.95, 4138.23, 4115.49, 4087.49, 4076.08, 3976.25, 3566.66, 3424.71, 3389.2, 3360.67, 3331.54, 3399.84, 3680.34, 3964.78, 4001.87, 4004.12, 4006.29, 4022.77, 4000.72, 3965.4, 3982.3, 3973.69, 3958.99, 3949.1, 3965.64, 4010.83, 4094.21, 4415.24, 4528.95, 4512.85, 4219.14, 4154.75, 4254.72, 4261.65, 4182.41, 4211.69, 4601.67, 4850.98, 4666.18, 4507.8, 4421.74, 4382.89, 4281.77, 4175.89, 4139.59, 4153.19, 4140.9, 4122.94, 4104.15, 4130.21, 4250.83, 4526.32, 4677.69, 4702.31, 4442.11, 4224.85, 4247.51, 4272.54, 4487.73, 4204.7, 4680.22, 4804.11, 4769.6, 4574.44, 4440.73, 4396.0, 4367.98, 4364.06, 4293.07, 4276.85, 4246.25, 4242.15, 4221.69, 4222.99, 4353.22, 4656.71, 4813.56, 4843.44, 4723.01, 4414.05, 4410.41, 4307.58, 4682.01, 4651.67, 5463.03, 4898.98, 4670.98, 4587.67, 4470.73, 4473.55, 4409.96, 4332.3, 4242.39, 4327.27, 4271.9, 4198.03, 4169.6, 4239.98, 4315.44, 4612.4, 4686.71, 4551.36, 4198.42, 4003.78, 3748.31, 3729.4, 3904.22, 4513.87, 4417.52, 4738.27, 4722.74, 4560.05, 4456.36, 4354.26, 4149.44, 4107.0, 4059.98, 4058.65, 4043.27, 4025.78, 4009.09, 4046.25, 4127.91, 4393.47, 4601.16, 4704.53, 4857.03, 5612.18, 5399.08, 4847.33, 5542.97, 4705.56, 4608.99, 4548.1, 4563.38, 4473.06, 4408.12, 4526.52, 4540.09, 4213.35, 4196.91, 4194.58, 4172.37, 4063.34, 4054.13, 4121.11, 4133.07, 4133.57, 4161.31, 3972.5, 3695.74, 3501.6, 3429.11, 3282.14, 3478.34, 3822.26, 3789.47, 3948.61, 3981.8, 3946.3, 3938.54, 3927.84, 3940.65, 3911.13, 3945.68, 3892.23, 3868.0, 3851.13, 3825.54, 3872.65, 3920.61, 4084.76, 4087.97, 3742.23, 3032.17, 2811.1, 2807.72, 2331.29, 2608.63, 2608.41, 3416.36, 3924.54, 3993.08, 3984.4, 4004.56, 4015.19, 3987.76, 3928.23, 3925.31, 3874.81, 3864.18, 3834.89, 3833.03, 3881.64, 3971.52, 4245.1, 4374.82, 3983.14, 3374.15, 3683.9, 3527.74, 3392.07, 2823.72, 4248.88, 4440.6, 4626.77, 4656.5, 4453.91, 4344.04, 4341.11, 4334.49, 4296.7, 4275.87, 4216.65, 4170.43, 4191.31, 4226.58, 4345.2, 4481.07, 4676.87, 4806.05, 4876.29, 4539.42, 4709.14, 4305.8, 4307.69, 4336.87, 4495.52, 4650.44, 4834.72, 4846.43, 4677.61, 4582.53, 4531.0, 4487.53, 4429.93, 4372.81, 4293.01, 4256.51, 4266.95, 4352.13, 4408.24, 4496.63, 4696.94, 4843.94, 4380.31, 4235.1, 4389.71, 4259.42, 4436.08, 4083.05, 4139.03, 4189.88, 4790.53, 4793.77, 4600.46, 4504.93, 4494.03, 4401.52, 4254.6, 4223.15, 4136.71, 4136.65, 4150.63, 4133.65, 4128.53, 4248.68, 4525.2, 4717.43, 4843.45, 4887.74, 4938.4, 5021.32, 5024.44, 4707.71, 4648.93, 4445.27, 4722.37, 4713.03, 4583.14, 4504.4, 4462.22, 4315.85, 4198.62, 4168.04, 4138.87, 4105.88, 4133.22, 4192.46, 4325.1, 4472.44, 4620.21, 4710.98, 4623.53, 4399.13, 4236.38, 3928.27, 3778.26, 3689.32, 4429.33, 4567.39, 4590.64, 4663.86, 4628.23, 4533.04, 4491.57, 4433.91, 4297.08, 4275.51, 4201.88, 4140.71, 4147.78, 4091.6, 4117.32, 4168.56, 4155.16, 4196.33, 3946.22, 3142.54, 3030.13, 2829.3, 2285.85, 2240.33, 2724.42, 3372.57, 4037.31, 4088.45, 4148.92, 4149.75, 4135.1, 4159.19, 4273.27, 4155.5, 4211.63, 4213.77, 4109.43, 4045.49, 4040.1, 4063.71, 4313.1, 4302.19, 3698.78, 3346.44, 3545.59, 3192.21, 3776.77, 3852.31, 3774.31, 3648.51, 3910.44, 4021.84, 4046.77, 4039.84, 3976.62, 4022.19, 4093.98, 4250.99, 4186.82, 4113.48, 4051.89, 4049.69, 4111.78, 4166.42, 4492.49, 4765.79, 4729.77, 4765.96, 4770.06, 4742.08, 4524.45, 4388.71, 4400.17, 4485.86, 4674.56, 4681.14, 4500.09, 4406.91, 4263.39, 4174.55, 4084.17, 4060.7, 4058.1, 4035.27, 4037.96, 4038.6, 4090.17, 4159.28, 4451.05, 4590.49, 4503.53, 4512.06, 4445.9, 4307.37, 4172.37, 4297.41, 4413.34, 4620.33, 4934.79, 4984.59, 4609.11, 4486.46, 4490.24, 4433.55, 4331.25, 4300.11, 4285.11, 4258.63, 4221.19, 4241.0, 4247.62, 4392.48, 4635.23, 4714.63, 4604.03, 4819.5, 4640.53, 4516.92, 4392.26, 4510.06, 4540.59, 4521.35, 4522.74, 4613.82, 4487.42, 4413.72, 4336.78, 4293.85, 4206.26, 4172.24, 4158.55, 4142.27, 4121.97, 4126.32, 4190.69, 4270.19, 4555.93, 4675.56, 4511.19, 4076.7, 3788.34, 3452.08, 3181.89, 2988.42, 3226.48, 3863.48, 4470.76, 4514.31, 4451.27, 4483.94, 4192.27, 4127.84, 4065.85, 4091.16, 4052.1, 4029.16, 4028.99, 4026.69, 4102.8, 4200.26, 4568.76, 4609.34, 4097.38, 3371.96, 2930.87, 2726.47, 2806.64, 2914.1, 3178.63, 3783.78, 4548.57, 4569.14, 4444.37, 4357.02, 4292.17, 4193.66, 4195.75, 4127.11, 4132.94, 4097.79, 4070.47, 4068.08, 4110.34, 4123.03, 4152.07, 4097.43, 3396.81, 2801.35, 2339.68, 2101.91, 2564.98, 3451.07, 3538.42, 3273.73, 3904.0, 3983.43, 3932.88, 3937.85, 3926.76, 3907.37, 3911.94, 3920.04, 3895.08, 3894.83, 3924.94, 3888.14, 3903.88, 3922.07, 3953.68, 3939.88, 3745.49, 3271.16, 2150.82, 1970.94, 1883.48, 1987.43, 2440.35, 3070.07, 3823.81, 3927.45, 3913.1, 3954.85, 3946.1, 3935.42, 3914.01, 3902.14, 3876.03, 3848.21, 3861.44, 3842.12, 3870.8, 3931.22, 4201.29, 4302.18, 3981.51, 3242.25, 3652.5, 3639.18, 3595.91, 3659.69, 3793.5, 4604.97, 4926.66, 4542.53, 4413.17, 4252.45, 4216.86, 4155.42, 4025.63, 4047.58, 4033.14, 4025.03, 4023.3, 4019.34, 4058.73, 4221.45, 4428.16, 4615.43, 4141.83, 3340.11, 2941.4, 2780.72, 2730.75, 2786.18, 2946.69, 3602.28, 4492.37, 4576.23, 4393.81, 4214.03, 4193.9, 4109.6, 4016.39, 3985.27, 3965.41, 3961.84, 3964.85, 3974.7, 4026.78, 4253.42, 4494.71, 4731.69, 4998.48, 4951.94, 4869.45, 4939.75, 5078.94, 4853.56, 4807.9, 4741.15, 4669.74, 4675.43, 4602.82, 4511.31, 4516.89, 4439.02, 4411.66, 4365.71, 4483.89, 4371.77, 4344.08, 4302.99, 4420.0, 4492.8, 4697.24, 4776.87, 4713.15, 4735.91, 4850.71, 4920.16, 4985.34, 4975.46, 5010.66, 4998.94, 5014.84, 4838.83, 4756.2, 4681.75, 4573.58, 4499.16, 4443.86, 4394.72, 4405.62, 4427.44, 4348.02, 4465.87, 4415.55, 4472.55, 4656.53, 4914.05, 4908.63, 4942.16, 4957.02, 4928.15, 4634.67, 4482.75, 4366.23, 4394.26, 4586.6, 4648.34, 4603.83, 4495.01, 4454.98, 4393.16, 4338.18, 4251.1, 4230.68, 4166.23, 4151.19, 4125.42, 4131.09, 4163.09, 4164.71, 4132.03, 3852.05, 3548.11, 3471.06, 3402.22, 3386.07, 3393.41, 3524.88, 3910.54, 4040.11, 4117.54, 4135.34, 4120.7, 4091.53, 4115.75, 4118.22, 4163.71, 4097.08, 4135.21, 4095.36, 4093.18, 4126.82, 4172.46, 4159.99, 4092.81, 3806.09, 3348.48, 3211.17, 3067.13, 2989.55, 2916.86, 2934.04, 3438.95, 3988.62, 4174.64, 4185.52, 4174.11, 4151.73, 4123.58, 4185.81, 4195.27, 4122.83, 4096.3, 4099.12, 4095.22, 4108.48, 4269.57, 4482.95, 4578.72, 4201.63, 3688.93, 3427.11, 3264.64, 3898.2, 3324.33, 4259.38, 4731.94, 4683.51, 4885.18, 4805.22, 4695.57, 4641.51, 4580.01, 4524.93, 4532.04, 4504.67, 4490.89, 4460.15, 4435.92, 4451.51, 4520.23, 4749.92, 4829.27, 4440.78, 3860.73, 3538.18, 4286.08, 3477.64, 3158.61, 3367.53, 4572.01, 4503.7, 4853.19, 4789.09, 4648.4, 4571.98, 4519.53, 4463.57, 4459.18, 4453.13, 4433.21, 4371.21, 4384.6, 4384.28, 4472.77, 4662.32, 4749.08, 4200.72, 3395.45, 3478.66, 3551.04, 3402.33, 4169.11, 3827.64, 4521.79, 4738.3, 4778.47, 4629.45, 4587.1, 4619.71, 4494.27, 4390.62, 4486.43, 4433.5, 4403.45, 4355.46, 4306.31, 4318.75, 4369.41, 4517.17, 4607.35, 4503.71, 4463.51, 4237.43, 4282.75, 4371.77, 4515.98, 4586.66, 4722.42, 4708.18, 4745.97, 4653.31, 4532.98, 4412.36, 4236.63, 4245.41, 4257.66, 4228.49, 4225.47, 4166.43, 4158.29, 4247.22, 4317.14, 4660.47, 4606.0, 3915.54, 3260.23, 2847.06, 2569.19, 2582.74, 2771.35, 3003.75, 3547.52, 4315.33, 4534.66, 4425.07, 4373.81, 4359.88, 4205.88, 4124.88, 4204.14, 4168.44, 4164.1, 4179.15, 4132.25, 4143.38, 4210.59, 4176.99, 3919.0, 3893.84, 3608.19, 2404.75, 3861.73, 4131.4, 4095.73, 3955.8, 3724.54, 3862.3, 4212.78, 4192.55, 4135.0, 4111.2, 4141.85, 4089.69, 4100.44, 4142.64, 4151.85, 4095.55, 4118.0, 4146.11, 4137.73, 4151.92, 4117.24, 3976.53, 2474.1, 2120.69, 3517.99, 1952.57, 3573.86, 3656.9, 3868.36, 4041.82, 4068.22, 4064.16, 4097.3, 4072.91, 4053.41, 4028.3, 4005.47, 4001.42, 4053.46, 4076.47, 4051.34, 4055.0, 4123.11, 4222.16, 4273.29, 4226.25, 4155.53, 3977.75, 4046.81, 4102.34, 4097.95, 4263.22, 4463.46, 4453.67, 4419.8, 4254.58, 4180.37, 4166.92, 4142.43, 4112.85, 4099.59, 4049.96, 4059.1, 4061.21, 4048.25, 4121.44, 4241.34, 4430.3, 4670.47, 4835.62, 4803.62, 4776.23, 4742.79, 4790.33, 4765.9, 4751.0, 4800.66, 4771.92, 4713.45, 4576.7, 4508.21, 4513.21, 4389.95, 4336.63, 4323.51, 4301.07, 4239.74, 4279.87, 4213.08, 4279.32, 4346.51, 4617.89, 4710.04, 4726.97, 4691.75, 4429.07, 4191.42, 3998.7, 3931.26, 4008.74, 4225.65, 4555.52, 4653.29, 4592.11, 4541.57, 4504.46, 4480.85, 4406.52, 4406.89, 4341.19, 4382.75, 4335.0, 4281.97, 4314.72, 4391.52, 4606.73, 4663.37, 4428.92, 4551.15, 4089.73, 3986.18, 3746.3, 3926.53, 4475.3, 4229.09, 4658.15, 4760.8, 4617.23, 4484.19, 4446.0, 4407.73, 4292.45, 4364.67, 4328.29, 4342.33, 4280.19, 4307.54, 4322.21, 4390.15, 4593.12, 4756.73, 4859.72, 4910.57, 4941.7, 4752.14, 4641.22, 4682.65, 4929.0, 4990.42, 4933.42, 4702.57, 4536.43, 4520.76, 4487.01, 4402.1, 4430.7, 4345.76, 4245.7, 4301.27, 4335.93, 4340.56, 4346.9, 4388.59, 4363.13, 4254.05, 4054.17, 3607.57, 3624.4, 3545.03, 3431.82, 3542.19, 3259.03, 3496.45, 3985.54, 4125.72, 4150.37, 4101.47, 4135.74, 4139.54, 4106.42, 4112.37, 4067.06, 4078.83, 4024.89, 4042.52, 4045.64, 4084.25, 4073.15, 3995.37, 3579.73, 3405.19, 3344.47, 3227.0, 3012.05, 2936.24, 2927.48, 3302.91, 3950.78, 4240.11, 4235.45, 4230.93, 4246.81, 4202.78, 4193.76, 4246.69, 4225.16, 4194.01, 4174.71, 4211.92, 4198.04, 4366.61, 4452.02, 4299.21, 4123.21, 3481.21, 3339.38, 3452.83, 3060.12, 4005.86, 3553.24, 3581.03, 4568.63, 4704.24, 4640.18, 4549.77, 4500.23, 4431.18, 4324.26, 4255.52, 4218.7, 4235.16, 4202.28, 4209.21, 4265.19, 4381.07, 4524.19, 4556.12, 4193.51, 3596.92, 3638.61, 2771.6, 2734.53, 2795.81, 3062.3, 3760.48, 4613.93, 4706.62, 4421.76, 4405.68, 4432.44, 4344.97, 4219.56, 4312.44, 4236.53, 4240.56, 4283.56, 4350.8, 4446.14, 4526.18, 4699.41, 4860.51, 5005.98, 5023.67, 4480.5, 3389.82, 3047.32, 2977.94, 4466.1, 4560.63, 4803.71, 4822.79, 4761.84, 4716.64, 4658.45, 4602.58, 4539.1, 4500.25, 4497.59, 4511.47, 4420.67, 4408.82, 4410.36, 4520.15, 4654.25, 4711.76, 4198.98, 4219.2, 4137.97, 3795.57, 3884.49, 4408.74, 4614.36, 4693.19, 4826.85, 4968.73, 4830.96, 4709.76, 4641.4, 4549.03, 4454.76, 4442.96, 4395.39, 4467.33, 4430.6, 4415.23, 4445.71, 4553.05, 4682.86, 4659.16, 3966.04, 3522.36, 3415.54, 4146.83, 4447.72, 4611.73, 3601.23, 4828.36, 4721.0, 4819.71, 4732.06, 4671.14, 4610.83, 4566.52, 4515.22, 4523.06, 4492.72, 4454.32, 4486.67, 4514.08, 4454.54, 4499.87, 4499.57, 4492.68, 3721.18, 3801.28, 3944.5, 3782.96, 3963.33, 4123.88, 4122.44, 4224.34, 4252.04, 4280.8, 4270.78, 4283.46, 4248.16, 4232.09, 4218.37, 4221.98, 4203.38, 4153.79, 4162.8, 4126.73, 4200.06, 4196.27, 4233.43, 4185.42, 4049.22, 3929.59, 3894.95, 3893.51, 3939.26, 3989.14, 3985.47, 4053.68, 4111.55, 4119.34, 4162.2, 4181.22, 4164.06, 4195.5, 4157.6, 4156.52, 4093.56, 4057.03, 4052.31, 4059.33, 4073.24, 4114.48, 4379.93, 4456.1, 4472.26, 4738.88, 4919.18, 4842.02, 4825.93, 4818.63, 4747.88, 4227.6, 4461.22, 4513.99, 4468.75, 4427.94, 4518.95, 4480.49, 4491.31, 4486.41, 4417.14, 4401.4, 4400.15, 4414.46, 4411.41, 4479.56, 4716.52, 4711.97, 4571.91, 4474.6, 4511.15, 4481.38, 4460.15, 4260.21, 4196.69, 4367.74, 4598.91, 4618.59, 4555.73, 4555.13, 4561.82, 4427.21, 4284.19, 4319.25, 4343.12, 4320.8, 4280.13, 4244.35, 4352.73, 4395.35, 4555.15, 4646.57, 4626.8, 4329.1, 4400.82, 4688.27, 4845.77, 4761.12, 4970.84, 5039.59, 5813.94, 4883.49, 4784.14, 4737.03, 4705.07, 4629.14, 4588.3, 4588.36, 4567.05, 4516.21, 4520.2, 4488.64, 4484.23, 4545.06, 4678.17, 4832.27, 4745.66, 4286.61, 4691.38, 4640.95, 3611.23, 2975.5, 3281.16, 4362.29, 5568.74, 5608.57, 4764.27, 4644.62, 4623.2, 4573.41, 4600.11, 4580.7, 4508.42, 4525.04, 4478.46, 4449.69, 4479.68, 4559.4, 4641.0, 4461.67, 3799.09, 3748.86, 4003.57, 3582.9, 3374.08, 3914.8, 4253.47, 4656.68, 4715.66, 4596.94, 4619.27, 4538.24, 4496.72, 4329.77, 4222.69, 4196.91, 4179.44, 4166.53, 4167.45, 4118.21, 4178.64, 4223.61, 4192.4, 3853.15, 2754.53, 2610.77, 2213.66, 2010.01, 3045.63, 1827.54, 1981.72, 2779.37, 3528.69, 4032.29, 4094.8, 4085.86, 4211.32, 4289.97, 4161.37, 4218.14, 4094.33, 4004.11, 3987.39, 3981.54, 4011.52, 3992.18, 4018.11, 3994.87, 3557.9, 2822.58, 2353.54, 2038.64, 1737.17, 1986.36, 2874.13, 3444.97, 3162.67, 3859.61, 4260.59, 4294.31, 4302.9, 4398.82, 4367.73, 4310.5, 4283.72, 4245.87, 4156.54, 4162.32, 4193.62, 4271.3, 4531.09, 4783.65, 4876.38, 4760.3, 4489.17, 4119.87, 3681.0, 3833.68, 4284.68, 4205.11, 4731.35, 4512.76, 4706.61, 4703.32, 4687.82, 4630.09, 4558.57, 4537.54, 4505.09, 4493.42, 4470.98, 4425.69, 4427.93, 4455.73, 4672.92, 4892.84, 4853.53, 4420.89, 4009.19, 3752.14, 3753.58, 3718.35, 3991.51, 3711.83, 4330.29, 4517.37, 4653.75, 4611.97, 4567.66, 4523.83, 4537.06, 4524.88, 4499.43, 4505.26, 4493.55, 4450.46, 4459.96, 4538.14, 4715.16, 4866.98, 5135.8, 5079.42, 5116.93, 4852.67, 4637.39, 4565.87, 4538.03, 4512.87, 4448.46, 4403.72, 4345.05, 4268.15, 4301.12, 4403.1, 4424.09, 4341.89, 4282.28, 4241.22, 4268.37, 4206.98, 4145.1, 4227.85, 4349.23, 4522.11, 4509.7, 4553.55, 4691.56, 4617.11, 4554.74, 4281.91, 4276.03, 4444.44, 4444.62, 4380.07, 4473.81, 4560.03, 4580.89, 4509.66, 4502.52, 4413.0, 4383.92, 4466.09, 4470.35, 4371.01, 4406.16, 4504.35, 4733.0, 4725.34, 4639.02, 4334.26, 4210.11, 3803.13, 3433.07, 3339.49, 3202.15, 3324.04, 3511.03, 4058.5, 4500.16, 4606.82, 4561.58, 4468.78, 4404.14, 4432.33, 4402.63, 4415.08, 4399.42, 4366.16, 4404.0, 4393.72, 4470.48, 4521.37, 4078.24, 3336.49, 2920.4, 2686.33, 2470.07, 2383.95, 2440.76, 2617.87, 3032.07, 3758.95, 4313.54, 4424.05, 4268.9, 4249.59, 4244.12, 4439.74, 4313.78, 4257.65, 4227.62, 4294.79, 4398.63, 4439.08, 4386.0, 4316.24, 3778.47, 2922.1, 2427.92, 2050.73, 1756.15, 1742.28, 1741.09, 2088.31, 2564.43, 3450.61, 3956.39, 4046.13, 4027.85, 4045.65, 4023.74, 4065.93, 4072.67, 4034.85, 4029.87, 4031.81, 4061.14, 4177.88, 4380.26, 4539.5, 4452.29, 4087.92, 3641.6, 3160.87, 2842.45, 3039.1, 3225.13, 3369.15, 4126.85, 4189.17, 4446.99, 4429.78, 4378.48, 4326.39, 4285.49, 4259.87, 4219.66, 4170.28, 4143.2, 4131.0, 4187.15, 4322.68, 4581.29, 4637.92, 4644.75, 4282.13, 3840.44, 4397.42, 4409.09, 3465.9, 4350.66, 3295.97, 3748.6, 4381.25, 4467.24, 4502.23, 4527.63, 4465.89, 4228.84, 4239.33, 4200.28, 4251.97, 4360.88, 4372.17, 4352.77, 4444.04, 4653.23, 4696.26, 4203.56, 3866.94, 3310.35, 2846.75, 2617.94, 2488.97, 2648.37, 2902.64, 3274.99, 3907.81, 4346.65, 4319.39, 4217.3, 4212.55, 4114.83, 4132.23, 4112.05, 4122.33, 4153.21, 4141.94, 4171.64, 4295.3, 4510.97, 4598.39, 4166.53, 3858.57, 3833.36, 3848.35, 3336.13, 3985.83, 4445.4, 4008.75, 4132.61, 4192.63, 4493.74, 4495.21, 4439.08, 4346.56, 4245.71, 4217.69, 4315.65, 4214.47, 4247.24, 4260.57, 4311.54, 4361.41, 4636.01, 4803.76, 4904.24, 4641.87, 4361.94, 3601.47, 3257.57, 3073.53, 4834.71, 5333.58, 5145.88, 4502.74, 4525.58, 4498.56, 4511.42, 4471.63, 4393.49, 4386.87, 4380.27, 4339.46, 4341.07, 4335.95, 4380.39, 4363.7, 4361.48, 4361.45, 4083.14, 3261.31, 2256.99, 2780.19, 2759.29, 1790.21, 2004.62, 3348.19, 3699.04, 3745.87, 4039.13, 4127.46, 4126.36, 4024.8, 4001.56, 4013.74, 3969.68, 3955.96, 3955.85, 3948.41, 3977.39, 3979.37, 4001.55, 3908.92, 3266.16, 2488.3, 1930.85, 1565.04, 2494.25, 3062.54, 3397.23, 3028.63, 3838.45, 3962.57, 4001.94, 3939.1, 3950.88, 3916.72, 3946.47, 3943.9, 3907.85, 3880.7, 3902.96, 3876.78, 3930.27, 4117.61, 4328.34, 4365.32, 3826.76, 3476.28, 3138.7, 2899.77, 2809.72, 2484.01, 2828.73, 3107.07, 3289.8, 3856.71, 4393.81, 4391.91, 4305.63, 4251.5, 4281.14, 4256.75, 4193.3, 4227.96, 4203.3, 4153.87, 4186.46, 4168.62, 4534.0, 4590.78, 4308.08, 3555.21, 3359.65, 2762.9, 2675.2, 2909.77, 2798.03, 3098.27, 3540.47, 4352.78, 4534.9, 4481.75, 4471.81, 4341.69, 4279.31, 4279.61, 4237.27, 4253.24, 4139.3, 4118.05, 4207.52, 4328.92, 4492.3, 4555.17, 4461.31, 3772.19, 3784.86, 3008.32, 2776.3, 2760.01, 3386.57, 3869.1, 4302.25, 4580.83, 4697.79, 4582.64, 4564.42, 4513.95, 4385.32, 4346.28, 4293.9, 4262.82, 4326.33, 4289.56, 4351.23, 4398.87, 4619.42, 4656.69, 4214.33, 3994.61, 3364.97, 3038.37, 2933.9, 2897.24, 4051.17, 4113.9, 4524.19, 4426.93, 4420.27, 4573.59, 4554.99, 4466.73, 4407.88, 4316.61, 4251.68, 4274.79, 4226.63, 4189.46, 4276.24, 4278.1, 4451.38, 4685.17, 4600.62, 4767.32, 4774.67, 4991.15, 4831.94, 4677.58, 4785.08, 4891.16, 4898.44, 4809.4, 4656.45, 4566.92, 4487.06, 4419.7, 4378.72, 4376.95, 4340.22, 4369.92, 4441.39, 4430.8, 4463.0, 4446.74, 4463.59, 4334.24, 4255.11, 4346.62, 4159.41, 3839.75, 3713.2, 3816.14, 3874.27, 3863.53, 4148.63, 4241.93, 4344.69, 4399.9, 4341.99, 4373.88, 4330.49, 4298.74, 4222.26, 4196.3, 4215.25, 4183.75, 4261.52, 4256.16, 4234.86, 4176.97, 4042.46, 3878.18, 3312.34, 3017.27, 2561.81, 3237.18, 2731.89, 2855.34, 3365.77, 3204.8, 3693.71, 3802.0, 3851.31, 3813.7, 3855.23, 3852.11, 3830.62, 3765.88, 3758.14, 3751.57, 3806.6, 3958.91, 4091.67, 4061.03, 4082.28, 3794.49, 3479.18, 3544.86, 2385.77, 2144.23, 4148.44, 4064.21, 4029.44, 3920.72, 3982.52, 3972.07, 3978.26, 3959.29, 3907.45, 3917.84, 3896.46, 3912.42, 3922.3, 3899.09, 3909.3, 4026.77, 4314.59, 4388.41, 4428.5, 4378.65, 4281.59, 4375.91, 4043.39, 3681.26, 3463.19, 3968.2, 3829.52, 4132.92, 4097.45, 4114.67, 4073.96, 4002.02, 3956.59, 3931.64, 3903.38, 3926.76, 3917.68, 3924.1, 3970.94, 4071.24, 4289.69, 4327.63, 3865.08, 3778.94, 3977.64, 3786.66, 3342.45, 3155.71, 3940.51, 4034.48, 4012.8, 4142.31, 4113.97, 4186.79, 4096.05, 4127.57, 4134.78, 4067.65, 4026.4, 4021.47, 4013.24, 4164.9, 4148.74, 4205.83, 4479.73, 4471.91, 3787.63, 3668.08, 3735.26, 3673.7, 3963.26, 3806.59, 3189.58, 2921.38, 3209.49, 3812.17, 4284.93, 4325.29, 4189.54, 4183.39, 4074.91, 4022.26, 3997.76, 3965.57, 4091.32, 4052.63, 3956.59, 4045.05, 4292.14, 4335.9, 4356.55, 4322.67, 4088.98, 3709.0, 3544.29, 3313.44, 3009.8, 4368.77, 3623.76, 4192.76, 4436.64, 4511.07, 4495.69, 4443.29, 4297.41, 4261.82, 4193.02, 4185.88, 4186.64, 4133.41, 4147.35, 4117.8, 4113.57, 4003.03, 3419.45, 2429.78, 2056.95, 1441.63, 3036.28, 3201.51, 3439.61, 3227.84, 3704.96, 3898.92, 3977.18, 4059.24, 4067.36, 4051.0, 4014.56, 3966.64, 3915.04, 3942.01, 3984.73, 3943.27, 3967.11, 3971.36, 3992.76, 3832.25, 3013.65, 2409.86, 1944.73, 1677.16, 1413.49, 1416.96, 1688.42, 2729.7, 3424.53, 3650.07, 3778.34, 3899.53, 3907.87, 3902.55, 3886.53, 3892.25, 3858.35, 3839.55, 3770.89, 3767.53, 3777.1, 3914.8, 4177.1, 4120.04, 3712.52, 3246.04, 3336.02, 2793.37, 3231.62, 3352.22, 3657.86, 4433.97, 3786.97, 3717.47, 4217.03, 4370.84, 4323.21, 4207.56, 4157.47, 4104.2, 4046.59, 4013.59, 3919.61, 3904.23, 3955.43, 4071.41, 4317.85, 4284.35, 4569.57, 4451.4, 4157.79, 3638.31, 2796.07, 3383.53, 3977.74, 4538.58, 4576.14, 4354.66, 4169.31, 4298.31, 4264.39, 4203.84, 4090.29, 4081.87, 4067.45, 4017.9, 4016.15, 3998.67, 4135.56, 4193.4, 4444.71, 4535.8, 5013.28, 5018.5, 4935.79, 4861.0, 4863.01, 4956.91, 4830.62, 4649.19, 4461.0, 4478.68, 4453.45, 4347.2, 4302.62, 4250.05, 4184.94, 4203.83, 4209.24, 4202.97, 4202.45, 4207.0, 4216.82, 4263.6, 4397.18, 4458.59, 4502.26, 4416.13, 4246.06, 4202.32, 3959.91, 4149.66, 4429.94, 4748.59, 4935.19, 4023.37, 4431.98, 4487.12, 4471.11, 4353.49, 4311.22, 4318.33, 4262.01, 4257.84, 4269.5, 4249.62, 4304.45, 4476.27, 4600.81, 4669.02, 4721.35, 4600.05, 4528.55, 4526.94, 4476.56, 4116.58, 3847.07, 3461.66, 4071.69, 4423.5, 4519.07, 4546.25, 4512.74, 4402.91, 4269.01, 4265.39, 4200.77, 4113.69, 4106.02, 4093.19, 4098.18, 4128.44, 4193.17, 4250.44, 4196.22, 4166.85, 4132.32, 4140.17, 3832.79, 3444.78, 3084.2, 3078.25, 3313.86, 3138.89, 3944.77, 4110.49, 4170.0, 4105.5, 4101.6, 4094.15, 4069.06, 4046.48, 4062.29, 4068.56, 4026.56, 4060.17, 4060.22, 3891.93, 3879.32, 3661.47, 3030.67, 1649.97, 1630.34, 1716.7, 1970.98, 2423.55, 2573.5, 2598.45, 3472.27, 3820.02, 3839.79, 3920.13, 3896.99, 3868.64, 3830.93, 3803.72, 3828.06, 3834.83, 3878.95, 4050.3, 4166.14, 4154.95, 4106.24, 4007.2, 3624.18, 2518.75, 3364.56, 3405.1, 4061.07, 3499.17, 4131.43, 4277.36, 4534.94, 4493.73, 4479.66, 4377.41, 4250.35, 4127.79, 4069.91, 4061.47, 4095.83, 4080.35, 4158.88, 4225.22, 4429.36, 4506.6, 3684.37, 3365.61, 3227.59, 3220.79, 2942.77, 3313.08, 4031.16, 4172.92, 4253.32, 4404.37, 4183.58, 4228.8, 4199.82, 4092.77, 3994.29, 3963.08, 3965.35, 3965.83, 3969.34, 3953.94, 4017.92, 4096.17, 4236.84, 4303.51, 4292.8, 3532.41, 3741.19, 3517.45, 3572.57, 4457.98, 2983.76, 3695.45, 3071.79, 4357.27, 4243.22, 4280.73, 4273.35, 4260.62, 4130.94, 4040.25, 4026.9, 4087.76, 4091.5, 4081.16, 4058.54, 4182.44, 4360.43, 4520.03, 4221.4, 3855.31, 4336.33, 4875.92, 4478.12, 3661.99, 2996.8, 4031.84, 3785.09, 4356.93, 4247.25, 4320.05, 4285.25, 4248.55, 4130.12, 4028.34, 4035.27, 4035.48, 3983.16, 4022.17, 4069.3, 4147.6, 4292.36, 4142.69, 3644.78, 3105.5, 2636.3, 2547.44, 2311.96, 2624.93, 2777.62, 2916.38, 3186.06, 3663.28, 4316.19, 4360.97, 4386.81, 4390.84, 4296.93, 4209.25, 4189.55, 4155.44, 4128.65, 4100.5, 4080.55, 4092.49, 4136.46, 3663.86, 3012.85, 2989.14, 2563.34, 2434.48, 2290.28, 2425.47, 3393.04, 3385.61, 3741.04, 3877.61, 4032.3, 4019.09, 3964.19, 3991.62, 3931.01, 3904.1, 3892.36, 3860.37, 3849.96, 3839.88, 3859.33, 3881.73, 3942.05, 3674.29, 2808.21, 2198.71, 2306.69, 3764.12, 3685.99, 3195.95, 3278.6, 3820.09, 3094.13, 3211.85, 3818.73, 3847.14, 3860.57, 3850.43, 3816.68, 3851.91, 3845.37, 3848.58, 3855.0, 3921.97, 3975.8, 4039.32, 4377.86, 4517.1, 4522.95, 4826.29, 4761.95, 4832.8, 4921.6, 4869.69, 4882.38, 4886.45, 4743.91, 4484.45, 4366.79, 4268.17, 4242.44, 4160.33, 4115.93, 4065.96, 4016.41, 4008.38, 3986.02, 3975.95, 4049.79, 4111.57, 4368.15, 4378.94, 4200.36, 3998.03, 2823.66, 2509.04, 2368.36, 2434.87, 2469.27, 2987.49, 3369.27, 3664.39, 4158.77, 4250.34, 4217.31, 4158.58, 4059.06, 3994.29, 3983.59, 4084.95, 4112.5, 4059.3, 4073.83, 4163.78, 4401.53, 4234.5, 4040.12, 3811.98, 3462.81, 3259.59, 3716.92, 3490.77, 3042.85, 3964.52, 4090.88, 4405.59, 4116.88, 4187.56, 4168.94, 4100.83, 4092.91, 4089.83, 3955.41, 3956.42, 3978.32, 3915.11, 3984.96, 4047.12, 4214.8, 4297.59, 4212.17, 3810.98, 4069.89, 2708.92, 2309.43, 2407.62, 2541.82, 2739.8, 2921.51, 3643.09, 4074.44, 4225.73, 4203.29, 4136.36, 4034.71, 4014.58, 3928.28, 3893.31, 3959.09, 3952.27, 3950.21, 4029.78, 4179.51, 3802.12, 3493.65, 3842.71, 3722.49, 3702.95, 3236.04, 3524.59, 3274.24, 3509.13, 4227.54, 4328.09, 4127.68, 4168.13, 4184.46, 4152.15, 4107.63, 4087.3, 4041.06, 4005.8, 3935.17, 3918.71, 3916.22, 3978.36, 3966.06, 3771.42, 3634.96, 2754.35, 2611.02, 1471.97, 1567.63, 1351.09, 1474.28, 2290.63, 2409.94, 3163.46, 3769.1, 3890.41, 3871.1, 3844.53, 3801.17, 3810.84, 3780.86, 3808.69, 3828.14, 3828.55, 3818.83, 3808.37, 3839.91, 3476.25, 2762.34, 2762.4, 1643.33, 1303.85, 1164.06, 1303.31, 1996.84, 3186.23, 3323.97, 3444.56, 3565.96, 3900.94, 3919.54, 3886.86, 3911.45, 3925.93, 3889.96, 3806.21, 3790.25, 3782.62, 3860.57, 4091.72, 4240.34, 4252.19, 4421.14, 4412.55, 4548.63, 3943.18, 3930.69, 4022.6, 3680.79, 4169.56, 4592.1, 4420.14, 4302.58, 4231.19, 4160.61, 4081.89, 3965.99, 3987.39, 3951.15, 3918.26, 3932.78, 3928.32, 3958.68, 4014.01, 4260.41, 4370.71, 4828.08, 4784.64, 4795.39, 4740.79, 4964.43, 4996.93, 4715.25, 4880.3, 4577.67, 4447.93, 4119.81, 4111.74, 4028.14, 4021.12, 3903.32, 4052.68, 3919.91, 3967.26, 3976.66, 3958.13, 3992.2, 4080.69, 4250.19, 4402.85, 4417.99, 4447.13, 4485.12, 4595.97, 4470.59, 4917.06, 4728.01, 4840.37, 4749.88, 4742.91, 4333.35, 4176.28, 4106.87, 4029.49, 4122.16, 4177.95, 4151.56, 4139.11, 4248.65, 4183.68, 4248.76, 4274.33, 4398.17, 4125.43, 3889.37, 3368.72, 2705.59, 2308.89, 2098.97, 2081.34, 2734.74, 4106.84, 3941.53, 4220.13, 4192.84, 4282.47, 4296.59, 4209.68, 4127.28, 4062.29, 4032.99, 4034.94, 4001.57, 3942.33, 3959.45, 3988.43, 4103.54, 3829.13, 3604.99, 3211.84, 2650.76, 2384.6, 2166.07, 2216.18, 2389.46, 2622.01, 2873.99, 3448.7, 3875.95, 4031.73, 4038.5, 3962.16, 3886.62, 3843.09, 3889.04, 3913.17, 3820.02, 3796.11, 3819.17, 3813.03, 3824.04, 3427.57, 2602.24, 2157.89, 1775.26, 1996.82, 1446.71, 2189.9, 2999.15, 3322.74, 3477.53, 3637.46, 3919.78, 4079.68, 4094.12, 4089.09, 4058.85, 4010.02, 3974.02, 3946.14, 3941.45, 3899.9, 3900.38, 3929.88, 3916.15, 3548.15, 3262.72, 3124.5, 1719.1, 1436.15, 2821.24, 2740.64, 2582.92, 2316.46, 3191.88, 3543.46, 3709.11, 3787.54, 3741.76, 3696.71, 3672.83, 3667.52, 3614.63, 3609.35, 3624.92, 3711.26, 3760.48, 3792.29, 3878.0, 3657.74, 3145.87, 2852.82, 2208.3, 3671.77, 4366.06, 3418.34, 4495.59, 4029.16, 3625.77, 4084.86, 4069.07, 3982.12, 3971.66, 3965.05, 3908.85, 3886.32, 3852.19, 3870.4, 3870.15, 3818.33, 3842.22, 3911.52, 4189.42, 4362.61, 4656.11, 4628.67, 4524.46, 4590.32, 4798.31, 4734.51, 3936.43, 4665.15, 4463.31, 4254.44, 4221.16, 4192.17, 4155.45, 4064.06, 3985.0, 3934.34, 3931.59, 3953.22, 3972.68, 3961.77, 3957.34, 4096.7, 4378.48, 4465.63, 4799.82, 4924.99, 4905.05, 4713.12, 4619.84, 4999.73, 4977.03, 4907.17, 4713.13, 4589.46, 4480.5, 4331.81, 4284.57, 4130.38, 4092.73, 4013.62, 3962.45, 3959.55, 3916.46, 3906.23, 3932.0, 4043.83, 4210.7, 4550.85, 4843.11, 4852.62, 4886.86, 4918.12, 4927.41, 4775.61, 4783.53, 4764.57, 4750.07, 4464.83, 4229.88, 4217.32, 4231.54, 4155.21, 4153.38, 4142.5, 4087.6, 4053.6, 4028.25, 4139.19, 4188.48, 4312.81, 4590.0, 4648.99, 4499.91, 4771.19, 4629.73, 4489.99, 3945.83, 3468.3, 3162.73, 3857.31, 3632.81, 3813.38, 3799.33, 3922.93, 3979.62, 3845.22, 3872.76, 3913.88, 3865.62, 3830.16, 3789.36, 3801.39, 3815.3, 3821.77, 3812.09, 3326.95, 2548.22, 2264.45, 1943.0, 1907.95, 2593.07, 3214.97, 3273.48, 3448.06, 3329.09, 3533.48, 3583.76, 3785.29, 3785.29, 3759.54, 3752.59, 3830.47, 3817.36, 3812.69, 3821.38, 3812.21, 3823.0, 3844.82, 3826.59, 3345.41, 2604.51, 1995.91, 1603.82, 1576.52, 1476.08, 1485.96, 1739.21, 1878.72, 2290.35, 2883.99, 3579.06, 3799.09, 3820.63, 3771.05, 3802.61, 3784.06, 3774.17, 3768.18, 3753.6, 3715.12, 3777.18, 3840.53, 4011.55, 4074.51, 3525.57, 3026.31, 4005.2, 3680.4, 2991.47, 3724.95, 4387.1, 3563.35, 4254.06, 4204.45, 4180.09, 4204.53, 4205.36, 4074.73, 4024.77, 3972.59, 3953.22, 3894.89, 3914.12, 3844.92, 3901.33, 3987.26, 4084.09, 4068.88, 3541.92, 3377.47, 3122.07, 3710.62, 4441.47, 3769.22, 2688.32, 4917.27, 4811.09, 4297.76, 4153.88, 4265.5, 4273.59, 4187.65, 4123.73, 4107.46, 4087.3, 4074.73, 4054.34, 4004.87, 4058.44, 4174.24, 4296.17, 3910.13, 3388.31, 3117.88, 3878.59, 3505.7, 3461.81, 4170.39, 4356.73, 2771.79, 3290.62, 3581.74, 4035.49, 4143.22, 4089.47, 3981.89, 3945.0, 3949.38, 3955.14, 3948.76, 3955.49, 3878.89, 3800.35, 3919.83, 4244.66, 4306.35, 4236.95, 3814.15, 3964.49, 3734.05, 3768.66, 4204.03, 4571.2, 4823.22, 4272.13, 4060.6, 4042.85, 4014.74, 4112.32, 4023.74, 3979.76, 3975.19, 3959.88, 3967.42, 3937.96, 3961.79, 4031.79, 4101.18, 4198.07, 4209.79, 3332.29, 2903.04, 2580.74, 3272.35, 3567.59, 4398.13, 4275.05, 3902.9, 4273.02, 4331.71, 4364.92, 4291.33, 4239.5, 4181.08, 4087.73, 4127.23, 4086.6, 4082.19, 4064.01, 3984.09, 4014.18, 4004.29, 3923.02, 3439.46, 3420.11, 3581.02, 3397.91, 3308.96, 2807.07, 3205.68, 2422.62, 3386.06, 3098.04, 3299.84, 3556.49, 3908.86, 4014.64, 4038.45, 3987.46, 3972.84, 3973.81, 3951.3, 3987.8, 3968.81, 4007.87, 4016.64, 4044.32, 3969.11, 3842.47, 3559.48, 3311.53, 2691.64, 2571.93, 2716.59, 2742.42, 3301.03, 3875.39, 3685.95, 3652.06, 3925.31, 4007.65, 3955.09, 3924.38, 3962.71, 3953.69, 3928.3, 3898.7, 3889.16, 3974.7, 4062.74, 4341.79, 4415.05, 4493.09, 4583.08, 4433.32, 4258.4, 4325.16, 4378.59, 4398.86, 4409.68, 4514.36, 4446.64, 4379.95, 4270.93, 4262.36, 4169.86, 4076.16, 4055.96, 4022.65, 4029.92, 4005.9, 3968.15, 4004.75, 4093.26, 4302.5, 4495.33, 4619.78, 4629.9, 4346.76, 4395.69, 4461.95, 4586.89, 4605.99, 4582.35, 4502.45, 4413.36, 4322.59, 4298.76, 4203.46, 4157.46, 4064.28, 4036.68, 3984.96, 3989.81, 3937.64, 3933.44, 3989.92, 4074.42, 4233.95, 4375.9, 4411.71, 4497.06, 4394.58, 4294.23, 4460.47, 4581.36, 4547.24, 4475.58, 4433.71, 4290.25, 4124.41, 4270.66, 4354.58, 4281.8, 4162.92, 4138.25, 4128.97, 4100.38, 4106.85, 4067.0, 4098.42, 4265.0, 4323.23, 3488.04, 3919.66, 3950.29, 4257.81, 4176.08, 4014.94, 4232.37, 4492.4, 4441.0, 4408.03, 4255.87, 4241.8, 4206.1, 4245.59, 4235.12, 4141.42, 4096.33, 4069.49, 4080.54, 4108.48, 4061.52, 4083.35, 4112.28, 4252.51, 3784.56, 3162.16, 2713.67, 2336.33, 2142.83, 1965.36, 2068.37, 2346.84, 3613.15, 2715.47, 3338.0, 3920.41, 4255.31, 4275.18, 4224.04, 4157.91, 4109.74, 4086.76, 4094.33, 4064.86, 4033.5, 4082.75, 4093.49, 3996.37, 3474.86, 2759.55, 2101.18, 1759.67, 1863.86, 1739.63, 2194.47, 2220.25, 2663.78, 3092.13, 3565.62, 3820.96, 3842.95, 3945.23, 3933.46, 3860.74, 3832.83, 3824.45, 3885.29, 3860.66, 3857.31, 3943.67, 3903.01, 3825.68, 3467.87, 2633.34, 2145.71, 1562.28, 1306.09, 2068.88, 2862.91, 3048.37, 3263.1, 3776.68, 3526.84, 3512.13, 3716.97, 3800.52, 3811.68, 3780.13, 3788.18, 3752.99, 3727.84, 3724.55, 3674.97, 3709.68, 3749.8, 3839.48, 3823.16, 2619.31, 3249.06, 2775.41, 2552.09, 2722.37, 3063.87, 2051.2, 3416.23, 3623.18, 3701.07, 3718.86, 3868.15, 3927.34, 3921.6, 3889.63, 3925.93, 3914.31, 3912.32, 3847.31, 3855.01, 3904.3, 3960.15, 4076.05, 3956.76, 4048.89, 4309.6, 3819.62, 4783.91, 4683.27, 1921.01, 4375.99, 4587.86, 4006.45, 3936.48, 4123.5, 4334.61, 4330.35, 4240.73, 4180.54, 4126.42, 4081.91, 4077.19, 4029.66, 4019.77, 4106.65, 4201.58, 4273.2, 4335.79, 3978.55, 3730.07, 3499.95, 2959.75, 2307.12, 3282.81, 3017.24, 3936.47, 2933.09, 3665.9, 4180.8, 4405.14, 4443.12, 4426.56, 4330.51, 4217.96, 4212.63, 4241.72, 4200.41, 4194.53, 4232.93, 4356.46, 4390.1, 4109.23, 3189.3, 2956.85, 2708.56, 2517.55, 2534.72, 3862.29, 2778.09, 4245.34, 4263.04, 3888.17, 4139.64, 4408.84, 4442.12, 4391.64, 4307.19, 4221.86, 4171.71, 4164.97, 4173.98, 4182.74, 4171.45, 4251.2, 4301.78, 3809.37, 3329.41, 2805.4, 2499.65, 2396.96, 4054.64, 3254.51, 4248.56, 4459.69, 4340.56, 4403.41, 4393.62, 4359.53, 4439.82, 4433.56, 4277.37, 4226.37, 4174.67, 4206.34, 4188.06, 4164.5, 4203.94, 4198.74, 4137.29, 3422.79, 2766.04, 1998.13, 2168.78, 1690.82, 2082.85, 4045.7, 3902.7, 2030.63, 3546.57, 3023.62, 3907.29, 4065.77, 4053.98, 4077.36, 4064.36, 4086.8, 4088.99, 4069.33, 4103.34, 4023.56, 4038.23, 4032.16, 3972.6, 3469.67, 2666.79, 2224.5, 1914.19, 2572.65, 3445.22, 3340.03, 3411.98, 3112.19, 3626.85, 2900.29, 3840.1, 3902.57, 3910.76, 3896.36, 3884.48, 3899.34, 3851.23, 3842.33, 3854.66, 3836.5, 3874.93, 3957.99, 3973.44, 3960.01, 3225.66, 3234.22, 3295.75, 4793.45, 4136.63, 4452.83, 4168.52, 5206.09, 5014.89, 3695.56, 4114.61, 4144.12, 4281.53, 4205.85, 4097.82, 4024.45, 3984.33, 3989.17, 4116.32, 4084.04, 4086.03, 4249.1, 4348.25, 3906.34, 3310.83, 2969.84, 3585.58, 3600.51, 4493.27, 4798.11, 3080.91, 4688.74, 4552.63, 4433.01, 3952.08, 4138.91, 4216.78, 4188.66, 4099.5, 4060.51, 4031.58, 4021.18, 4012.94, 4014.38, 4058.85, 4133.84, 4230.75, 3813.26, 3225.92, 2868.08, 2897.16, 2788.75, 2725.73, 4600.87, 4395.36, 4292.91, 4509.85, 4553.56, 4430.98, 4243.12, 4198.15, 4122.58, 4055.18, 3987.37, 3960.34, 3942.86, 3971.8, 3943.09, 4007.05, 4090.6, 4174.34, 3784.01, 3195.54, 3138.18, 2981.66, 2704.04, 2626.14, 2687.21, 2810.69, 3145.56, 3475.98, 3678.06, 4180.06, 4438.33, 4498.07, 4528.66, 4401.4, 4390.84, 4325.25, 4186.49, 4166.61, 4175.79, 4195.47, 4265.03, 4396.43, 4015.13, 3749.06, 3477.93, 3258.82, 4677.3, 5055.24, 4898.44, 3742.18, 4998.23, 5068.14, 4207.03, 4261.51, 4496.5, 4506.53, 4468.4, 4424.42, 4357.19, 4293.52, 4283.0, 4296.46, 4307.45, 4314.61, 4340.2, 4297.91, 4133.98, 3781.18, 2346.84, 2124.56, 1925.44, 1855.54, 1892.17, 3869.31, 4100.09, 4045.66, 4174.06, 4269.93, 4402.81, 4439.45, 4377.44, 4345.76, 4372.85, 4250.18, 4258.58, 4251.45, 4284.61, 4355.11, 4393.18, 4379.36, 4346.51, 3926.99, 3755.0, 3519.78, 2878.73, 2897.84, 3039.44, 3259.06, 3419.98, 3606.74, 3666.6, 3591.01, 4115.36, 4232.25, 4225.39, 4231.38, 4249.81, 4193.63, 4110.18, 4112.41, 4120.62, 4180.81, 4270.46, 4316.74, 3971.62, 3500.86, 3244.12, 2828.58, 2779.12, 2622.16, 2770.4, 2937.12, 3093.17, 3232.7, 3800.21, 4234.58, 4436.42, 4503.01, 4472.48, 4393.91, 4312.84, 4299.82, 4301.16, 4220.61, 4196.91, 4251.69, 4345.66, 4292.72, 4267.06, 3408.3, 3325.17, 2999.1, 2857.18, 4025.41, 3379.65, 4050.3, 4384.15, 4786.1, 4506.24, 4146.1, 4394.37, 4408.27, 4324.28, 4195.81, 4183.61, 4149.96, 4187.76, 4148.12, 4129.33, 4172.74, 4251.36, 4459.79, 4512.54, 3619.63, 4237.43, 2810.65, 3629.93, 3508.89, 2708.33, 2679.9, 3002.83, 3211.84, 3780.24, 4481.17, 4529.2, 4559.82, 4486.02, 4407.35, 4432.78, 4410.61, 4370.47, 4358.22, 4406.59, 4424.13, 4471.21, 4387.3, 4073.3, 3794.2, 3526.96, 3181.75, 3259.66, 3606.75, 2984.99, 4538.14, 5228.11, 4924.6, 4647.25, 4521.96, 4550.14, 4543.93, 4413.66, 4405.94, 4361.62, 4267.07, 4179.03, 4219.8, 4177.98, 4204.77, 4290.63, 4366.83, 3928.78, 4188.25, 4113.2, 3292.19, 2990.48, 3737.65, 4632.9, 4843.71, 4784.43, 4203.0, 4610.68, 4516.1, 4517.51, 4546.19, 4476.99, 4273.05, 4278.56, 4231.74, 4170.51, 4190.81, 4179.2, 4197.93, 4221.35, 4171.19, 3894.35, 2886.44, 2561.21, 2212.41, 2194.93, 3238.75, 3576.79, 3828.06, 3453.84, 3385.41, 3390.45, 4198.53, 4185.57, 4271.78, 4275.12, 4242.76, 4239.32, 4237.11, 4230.08, 4152.34, 4190.68, 4191.15, 4182.92, 4085.24, 3733.8, 2785.51, 2268.47, 1917.83, 2703.74, 3144.05, 2091.1, 3541.08, 4239.22, 4134.5, 4177.35, 4013.09, 4036.05, 4166.06, 4145.16, 4087.51, 4119.6, 4089.64, 4169.24, 4126.63, 4040.58, 4098.5, 4159.61, 4372.95, 4454.01, 4448.17, 4816.16, 4478.54, 4016.87, 4991.68, 3887.11, 5035.86, 5153.79, 5021.28, 4145.87, 4392.92, 4414.7, 4574.33, 4544.28, 4417.47, 4436.71, 4400.9, 4388.33, 4319.86, 4284.89, 4353.72, 4370.69, 4528.72, 4544.04, 4659.98, 4492.63, 4829.27, 5009.61, 4637.71, 4252.08, 4543.93, 3966.03, 4377.6, 4427.22, 4514.08, 4499.68, 4472.62, 4459.71, 4402.26, 4347.97, 4301.72, 4270.54, 4269.95, 4253.59, 4271.29, 4419.75, 4519.11, 4529.07, 3444.08, 3120.24, 4054.62, 4331.51, 2541.44, 2800.65, 4302.8, 4544.27, 4600.52, 4545.55, 4511.07, 4557.0, 4550.09, 4462.82, 4360.18, 4341.69, 4364.95, 4299.92, 4296.29, 4313.38, 4342.89, 4334.31, 4388.07, 4186.4, 3741.48, 3358.17, 3113.37, 2908.14, 2878.86, 4904.79, 4742.32, 4603.35, 4706.64, 4570.08, 4530.91, 4565.8, 4498.48, 4401.75, 4332.01, 4290.24, 4303.27, 4313.11, 4286.4, 4221.93, 4279.31, 4324.59, 4428.64, 4394.25, 4066.86, 3498.04, 3141.52, 4300.43, 4611.13, 4952.1, 4370.23, 4705.26, 4664.57, 4654.01, 4606.97, 4515.04, 4508.45, 4448.7, 4415.92, 4399.92, 4407.49, 4400.9, 4369.55, 4266.09, 4367.88, 4370.17, 4400.87, 4303.4, 4087.07, 4011.55, 3251.11, 2873.24, 3583.63, 3577.99, 4311.61, 4084.54, 4261.66, 4250.06, 4356.5, 4377.8, 4348.65, 4297.02, 4276.97, 4285.07, 4267.79, 4240.44, 4190.53, 4148.9, 4179.2, 4228.83, 4155.13, 3706.37, 3709.79, 3847.16, 3633.09, 2633.02, 2330.95, 2085.87, 3134.52, 3428.48, 3257.43, 3819.71, 3973.08, 3977.68, 4114.35, 4121.02, 4079.09, 4104.78, 4161.46, 4160.38, 4151.88, 4116.84, 4213.5, 4307.64, 4370.44, 4092.08, 4056.6, 3320.13, 4335.8, 4085.53, 3476.77, 3166.71, 3730.28, 3544.65, 3486.55, 3748.24, 4231.54, 4435.76, 4464.34, 4412.9, 4315.14, 4230.07, 4230.82, 4210.49, 4225.42, 4139.42, 4185.31, 4295.46, 4315.11, 4112.4, 4170.86, 4240.66, 3557.46, 3645.57, 4461.34, 4724.7, 4500.47, 4515.03, 4333.1, 4551.94, 4436.64, 4499.35, 4472.02, 4408.65, 4301.4, 4316.09, 4238.38, 4339.06, 4354.44, 4271.8, 4299.5, 4341.45, 4404.62, 4320.38, 4201.36, 4119.34, 3490.49, 3873.13, 3679.53, 3366.3, 4830.13, 4803.62, 4876.92, 4710.66, 4476.01, 4525.61, 4542.96, 4459.8, 4319.35, 4266.51, 4244.17, 4217.74, 4210.78, 4181.71, 4201.84, 4244.53, 4392.97, 4443.31, 3786.36, 4115.4, 3669.38, 3910.56, 4487.63, 4501.29, 3982.35, 3840.27, 4056.27, 4017.75, 4302.07, 4719.51, 4688.2, 4585.38, 4542.6, 4438.41, 4425.84, 4401.91, 4415.5, 4341.4, 4367.83, 4448.01, 4568.57, 4390.06, 3767.69, 3824.26, 3658.12, 3502.61, 3439.56, 3448.56, 3495.56, 4528.02, 4574.19, 4746.24, 4750.16, 4788.05, 4742.42, 4704.1, 4576.56, 4556.58, 4489.6, 4486.68, 4471.87, 4439.58, 4477.26, 4430.67, 4179.89, 4006.58, 3327.15, 2870.85, 2480.35, 3271.24, 3595.67, 4173.71, 3853.59, 3954.23, 4015.91, 3836.86, 4214.91, 4354.7, 4312.92, 4251.86, 4201.32, 4166.02, 4122.76, 4154.43, 4152.72, 4082.68, 4055.26, 4047.84, 4013.43, 3721.02, 3918.27, 2927.14, 2905.37, 2247.33, 4026.29, 4264.89, 4191.77, 4024.64, 3913.56, 4211.69, 4042.4, 3995.28, 4073.91, 4058.7, 4050.07, 4032.0, 3985.89, 3945.79, 3963.98, 3954.65, 3978.29, 4176.53, 4225.38, 4385.91, 4476.59, 4469.95, 4452.25, 3408.19, 3641.62, 5442.44, 5240.65, 5756.99, 5455.54, 5161.96, 4785.52, 4769.86, 4802.92, 4721.86, 4630.43, 4494.72, 4509.51, 4515.33, 4485.25, 4381.46, 4403.13, 4393.59, 4596.1, 4353.81, 4033.84, 3860.09, 3670.62, 3609.27, 3746.27, 5525.0, 5843.15, 4969.77, 5020.57, 4896.9, 4682.05, 5012.99, 5039.65, 4954.08, 4811.81, 4762.78, 4711.12, 4655.67, 4593.47, 4575.39, 4655.23, 4710.02, 4791.28, 4668.86, 4840.45, 4054.94, 3889.96, 3555.34, 5161.82, 3678.3, 4901.7, 5035.78, 3906.24, 4904.07, 4685.86, 4653.22, 4664.98, 4577.91, 4526.28, 4538.04, 4433.83, 4411.16, 4378.16, 4354.45, 4371.0, 4396.35, 4470.78, 4130.7, 3659.5, 3342.63, 3180.41, 3238.7, 2944.49, 2631.56, 2697.03, 2907.55, 3400.14, 4548.07, 4550.92, 4246.75, 4466.02, 4434.31, 4426.41, 4455.03, 4452.13, 4324.05, 4303.33, 4288.66, 4261.33, 4344.9, 4496.26, 4538.71, 4159.09, 3378.27, 2929.87, 2819.44, 3003.07, 4251.6, 4563.96, 4520.34, 4788.63, 4569.98, 4892.6, 4637.9, 4498.1, 4468.42, 4336.96, 4298.97, 4263.51, 4228.32, 4188.68, 4121.16, 4116.12, 4074.12, 4056.17, 3926.28, 3036.89, 2502.0, 3016.57, 2024.34, 3781.99, 4018.65, 4015.81, 3279.35, 3015.29, 3621.87, 4133.22, 4242.94, 4250.36, 4218.56, 4112.49, 4075.39, 4054.64, 4032.01, 4060.86, 4076.33, 4064.89, 4081.85, 4030.44, 3691.06, 3132.13, 2535.98, 2357.47, 1994.65, 2708.34, 2315.19, 2222.57, 2325.51, 3340.15, 3797.91, 3916.64, 4010.89, 4002.05, 4010.06, 3984.18, 3952.01, 3882.48, 3885.64, 3900.15, 3865.59, 3881.54, 4056.74, 4047.01, 3979.37, 4129.16, 3695.25, 3733.03, 4587.81, 5038.12, 5102.96, 4366.18, 4119.19, 3367.23, 4454.68, 4766.85, 4581.43, 4573.24, 4518.48, 4444.71, 4404.67, 4328.02, 4342.62, 4348.83, 4363.47, 4422.03, 4478.59, 4546.63, 4323.46, 3813.77, 3540.99, 3267.95, 3163.81, 3037.42, 3049.19, 2887.38, 3086.08, 3947.61, 4177.53, 4505.59, 4647.28, 4651.31, 4559.37, 4429.75, 4612.86, 4434.06, 4438.07, 4361.7, 4335.49, 4393.98, 4477.82, 4547.98, 4502.3, 3766.7, 3548.15, 3414.42, 3507.41, 3352.53, 3369.69, 3544.41, 3725.57, 3929.09, 4289.0, 4713.79, 4796.09, 4801.53, 4788.08, 4750.96, 4668.94, 4602.81, 4600.82, 4565.7, 4558.08, 4548.57, 4593.38, 4668.7, 4582.08, 4205.41, 3958.72, 3709.28, 3542.68, 3468.54, 3499.69, 4144.63, 4323.29, 4263.63, 4797.07, 5077.59, 5067.62, 5051.47, 4907.02, 4768.89, 4656.92, 4607.82, 4582.92, 4561.42, 4522.82, 4556.59, 4601.0, 4717.71, 4568.48, 4204.58, 3965.31, 3844.34, 3989.07, 3746.78, 4754.6, 4950.75, 4479.3, 4624.68, 4893.71, 4827.14, 4678.93, 4697.12, 4604.13, 4531.44, 4489.44, 4401.05, 4460.3, 4461.77, 4461.83, 4455.07, 4477.72, 4453.08, 4104.37, 3461.9, 3127.16, 2921.28, 2735.01, 2712.82, 2674.01, 3029.95, 4618.86, 4478.06, 4563.51, 4813.39, 4791.15, 4707.16, 4657.8, 4647.67, 4631.5, 4616.71, 4561.4, 4576.05, 4578.1, 4583.68, 4584.59, 4535.93, 4234.77, 3553.07, 3284.73, 3570.69, 4038.66, 4646.06, 4564.69, 4287.96, 4489.54, 4074.31, 4513.76, 4554.35, 4472.86, 4541.94, 4464.42, 4426.75, 4395.93, 4331.93, 4315.69, 4347.71, 4350.87, 4400.82, 4494.05, 4516.09, 4437.64, 4122.06, 3632.11, 3506.99, 3410.41, 3185.37, 4092.24, 5637.9, 5664.21, 4720.16, 5033.21, 5020.91, 4611.94, 4635.8, 4564.52, 4511.8, 4510.69, 4471.15, 4401.04, 4412.07, 4453.29, 4563.72, 4556.04, 4612.54, 4452.75, 4921.68, 4867.94, 4814.97, 3897.36, 4358.52, 5191.08, 4331.03, 4691.78, 3863.41, 4031.39, 4874.79, 4824.85, 4864.75, 4822.06, 4666.45, 4536.96, 4537.91, 4483.78, 4462.11, 4490.83, 4510.6, 4565.43, 4688.49, 4547.2, 4037.49, 3756.87, 3509.32, 3835.79, 4241.84, 5110.13, 4775.46, 4398.71, 4976.82, 4155.62, 4381.31, 4816.06, 4858.21, 4702.89, 4608.47, 4489.93, 4407.75, 4301.03, 4300.62, 4269.27, 4325.45, 4362.72, 4499.81, 4264.33, 3692.66, 3287.5, 3274.58, 3117.04, 3142.71, 3226.25, 3230.6, 3595.14, 3813.63, 4083.81, 4653.75, 4928.6, 4933.79, 4827.96, 4695.08, 4667.04, 4627.14, 4566.5, 4586.36, 4554.16, 4572.41, 4612.11, 4802.13, 4571.29, 3978.64, 3679.32, 3448.02, 3216.95, 3062.24, 2982.38, 3073.62, 3239.32, 3632.31, 3994.45, 4517.86, 4822.6, 4918.37, 4841.03, 4722.49, 4658.91, 4641.64, 4614.89, 4558.97, 4568.0, 4564.34, 4547.43, 4539.51, 4219.28, 3363.0, 2961.66, 2618.04, 2475.44, 2456.62, 3928.63, 4884.11, 4862.07, 4657.21, 4878.09, 4712.2, 4499.55, 4553.66, 4598.27, 4535.23, 4438.49, 4448.61, 4460.63, 4462.21, 4411.62, 4419.3, 4387.28, 4334.79, 4032.08, 3131.91, 2729.97, 2386.78, 2206.77, 2026.46, 2168.06, 3127.18, 2804.75, 3361.21, 4815.14, 4715.35, 4561.1, 4653.65, 4568.73, 4495.06, 4460.01, 4415.38, 4670.59, 4694.2, 4557.53, 4610.07, 4682.74, 4825.99, 4698.19, 4513.67, 4282.31, 4147.04, 3398.37, 3713.28, 3746.94, 4669.87, 5056.55, 5368.23, 5400.94, 4573.9, 4907.99, 4946.36, 4804.82, 4687.73, 4661.86, 4623.15, 4608.94, 4443.86, 4317.86, 4429.02, 4461.23, 4529.22, 4358.85, 3663.26, 3334.74, 3119.83, 2999.92, 2899.52, 2963.86, 3138.06, 4179.16, 3659.47, 4826.4, 4672.95, 4674.41, 4729.77, 4716.84, 4666.23, 4597.04, 4545.77, 4510.21, 4496.9, 4474.6, 4502.46, 4638.95, 4814.57, 4628.22, 3926.46, 3677.93, 3402.43, 3237.9, 3147.55, 3094.13, 3744.4, 4737.15, 5203.48, 5076.94, 5066.16, 4816.08, 4930.81, 4872.77, 4763.35, 4651.11, 4613.57, 4583.44, 4548.39, 4515.79, 4562.16, 4690.29, 4845.49, 4895.68, 4462.56, 4273.02, 4422.46, 4385.37, 5405.01, 5251.89, 4106.35, 4772.63, 5560.79, 5610.19, 5182.81, 5058.93, 5041.5, 4978.76, 4882.66, 4811.14, 4849.42, 4799.93, 4853.06, 4810.92, 4824.23, 4860.37, 5070.32, 4866.13, 4153.39, 3814.51, 3642.51, 3424.11, 3290.6, 3352.1, 3754.32, 5048.21, 5237.4, 5443.84, 5311.14, 5148.04, 5127.6, 5123.6, 4978.87, 4924.94, 4898.74, 4801.8, 4647.68, 4590.7, 4579.52, 4555.09, 4615.58, 4502.68, 3421.14, 2679.55, 3507.74, 4153.13, 4265.99, 4392.51, 4512.26, 3628.98, 4056.76, 4699.47, 4644.77, 4635.81, 4716.39, 4682.81, 4650.86, 4665.44, 4619.87, 4632.27, 4584.88, 4585.81, 4580.7, 4591.56, 4606.96, 4338.41, 3382.27, 2844.88, 2699.94, 3592.85, 4010.13, 2527.58, 3307.18, 4330.65, 3508.82, 3786.47, 4650.95, 4741.63, 4756.93, 4688.77, 4639.76, 4624.33, 4537.99, 4514.85, 4480.84, 4262.14, 4367.98, 4498.89, 4575.12, 4369.62, 3683.16, 3476.42, 3332.95, 3219.19, 3096.03, 3235.57, 4223.64, 5291.05, 3957.88, 4497.18, 5022.74, 5099.06, 5105.81, 5035.61, 4898.71, 4928.93, 4943.17, 4945.17, 4875.61, 4849.1, 4861.67, 4949.29, 5115.69, 4878.35, 4538.17, 4521.09, 4824.93, 4742.7, 4922.2, 4671.79, 4795.55, 4636.13, 5580.38, 5545.73, 5182.99, 4926.63, 4862.36, 4825.82, 4710.44, 4624.53, 4605.69, 4599.26, 4549.45, 4569.46, 4605.32, 4657.68, 4832.11, 4762.69, 4593.88, 4059.8, 3871.32, 3415.21, 3478.78, 3325.44, 4816.4, 4922.66, 4931.73, 4980.79, 5159.87, 5094.32, 4918.48, 4847.96, 4786.08, 4667.64, 4637.48, 4584.66, 4578.64, 4526.72, 4502.85, 4526.59, 4711.93, 4832.38, 4477.83, 4179.66, 4475.77, 3591.19, 4544.16, 4846.45, 4728.11, 4877.63, 4976.31, 4470.03, 4445.92, 4558.09, 4539.17, 4496.11, 4320.42, 4344.47, 4285.48, 4200.52, 4198.59, 4140.22, 4197.9, 4250.12, 4369.82, 4330.37, 3629.74, 3194.75, 2921.47, 2784.26, 3506.89, 2409.84, 4600.36, 4645.77, 3308.44, 3414.03, 4042.69, 4165.24, 4167.07, 4103.73, 3952.46, 3907.61, 3932.52, 3866.32, 3797.06, 3785.39, 3772.17, 3768.84, 3770.28, 3510.1, 2640.11, 2202.68, 1938.23, 1877.49, 1779.34, 1740.69, 1810.53, 2160.34, 2562.46, 3167.81, 3879.94, 4162.93, 4107.66, 4089.32, 4072.75, 4026.48, 3975.38, 3942.0, 3935.39, 3916.72, 3943.76, 3934.57, 3908.25, 3690.79, 2831.48, 2561.48, 1997.6, 1842.98, 1658.3, 4019.02, 3967.8, 3844.43, 3432.32, 3995.35, 4057.22, 4112.56, 4015.55, 3977.26, 3985.57, 3932.99, 3924.24, 3915.01, 3916.36, 3912.9, 3921.13, 4040.07, 4180.75, 4180.42, 3367.69, 3086.05, 2869.07, 2662.05, 2582.97, 4401.06, 2590.16, 4384.01, 4503.3, 3889.76, 4223.33, 4245.78, 4258.37, 4188.85, 4074.26, 4011.64, 4016.4, 3927.02, 3892.27, 3875.28, 3834.11, 3831.1, 3962.29, 3917.23, 3243.49, 3241.53, 3123.39, 4737.57, 3275.42, 4546.76, 4253.7, 3147.41, 3316.26, 4362.22, 4287.93, 4363.18, 4324.9, 4215.33, 4109.23, 3996.33, 3971.62, 3970.69, 3955.98, 3964.79, 3973.05, 4033.77, 4219.6, 4157.99, 3484.68, 3215.69, 2912.23, 3574.78, 3040.9, 4474.33, 4328.87, 4685.42, 5218.54, 4952.58, 4733.85, 4759.38, 4760.01, 4748.9, 4712.97, 4606.11, 4565.17, 4548.09, 4397.04, 4348.74, 4378.3, 4481.77, 4625.1, 4774.79, 4499.57, 3998.65, 3693.92, 3306.44, 4509.77, 4778.39, 5405.76, 5233.78, 5027.78, 4758.9, 4732.27, 4709.63, 4770.35, 4699.25, 4576.34, 4670.63, 4509.23, 4561.68, 4529.94, 4440.19, 4433.46, 4487.56, 4611.95, 4629.81, 3777.28, 3570.17, 3547.27, 3231.44, 3145.03, 4368.93, 4954.69, 3864.33, 3824.92, 4822.9, 4682.15, 4786.32, 4763.74, 4697.16, 4594.66, 4590.43, 4563.18, 4556.83, 4537.76, 4552.93, 4512.09, 4513.48, 4544.89, 4442.5, 4128.06, 3980.06, 3785.63, 3838.85, 3010.74, 3290.64, 3140.86, 4000.7, 3974.95, 4499.76, 4507.58, 4428.19, 4508.27, 4589.44, 4500.67, 4497.48, 4483.78, 4473.35, 4410.4, 4346.82, 4255.88, 4273.63, 4189.31, 4253.51, 3780.64, 2864.22, 3112.32, 3189.29, 3737.57, 3831.34, 3923.52, 3258.02, 3881.69, 4068.56, 4105.54, 4154.22, 4174.91, 4133.44, 4034.98, 4014.22, 4011.75, 3960.66, 3988.06, 3956.13, 3984.0, 4110.41, 4229.7, 4176.73, 3508.79, 3263.71, 2913.94, 2887.57, 2580.81, 2787.63, 2744.78, 4706.7, 3910.84, 3701.41, 4222.67, 4826.21, 4765.56, 4735.09, 4706.83, 4648.93, 4547.69, 4546.7, 4537.61, 4495.9, 4500.55, 4575.45, 4709.38, 4649.41, 4000.26, 3517.46, 3369.12, 3133.42, 4164.43, 5142.63, 4835.93, 4735.97, 4582.84, 4220.36, 4818.15, 4777.21, 4879.26, 4790.54, 4641.58, 4591.33, 4552.2, 4549.34, 4506.06, 4515.6, 4522.05, 4531.22, 4654.1, 4556.15, 3945.06, 3485.78, 3286.74, 3108.49, 3011.76, 3216.89, 3124.36, 3352.04, 3499.28, 4306.59, 4796.14, 4854.21, 4830.65, 4673.85, 4597.4, 4559.19, 4503.31, 4489.73, 4364.17, 4406.98, 4440.32, 4540.67, 4639.98, 4580.9, 3880.85, 3651.93, 3399.28, 3193.55, 3133.77, 4406.78, 3831.47, 3377.84, 3773.41, 4260.73, 5025.29, 4891.71, 4856.63, 4759.23, 4688.25, 4679.46, 4649.57, 4590.08, 4535.45, 4500.3, 4507.07, 4587.19, 4810.43, 4976.64, 4574.75, 3556.07, 4391.65, 4536.33, 4172.37, 4761.81, 3859.95, 5042.61, 5129.46, 4607.76, 5073.28, 4983.62, 4881.57, 4857.13, 4727.67, 4681.2, 4586.27, 4603.38, 4530.74, 4485.13, 4534.78, 4540.09, 4522.62, 4352.02, 3439.8, 2913.26, 3466.1, 3740.49, 3909.43, 2992.49, 3938.89, 4280.3, 4201.68, 4353.94, 4468.7, 4508.95, 4485.12, 4455.63, 4416.38, 4396.37, 4280.47, 4262.2, 4257.07, 4273.54, 4271.07, 4241.21, 4220.19, 4145.48, 3638.89, 2760.42, 2121.84, 1974.91, 1901.51, 2106.83, 2260.53, 2640.83, 4249.54, 3806.73, 4465.4, 4552.25, 4508.63, 4485.71, 4464.07, 4380.21, 4293.76, 4260.48, 4249.97, 4262.27, 4298.71, 4483.7, 4602.93, 4578.23, 3900.79, 3275.45, 2986.74, 2944.43, 2963.79, 3135.95, 3122.86, 4360.82, 4625.4, 4645.91, 4611.7, 4593.47, 4553.52, 4523.75, 4470.82, 4453.36, 4412.26, 4320.58, 4302.97, 4306.56, 4284.94, 4364.95, 4612.35, 4573.84, 4222.09, 3819.79, 3500.82, 3306.25, 3155.8, 3128.48, 3214.69, 4169.48, 4138.28, 4887.86, 4871.74, 4794.41, 4763.83, 4720.16, 4647.17, 4548.63, 4558.95, 4530.92, 4467.63, 4511.02, 4500.41, 4570.1, 4809.66, 4866.14, 4344.58, 4394.07, 3644.03, 4233.57, 4527.09, 4427.71, 5079.96, 5353.56, 5330.69, 5198.06, 5107.68, 4631.27, 4537.95, 4519.02, 4350.57, 4321.68, 4266.5, 4478.12, 4306.27, 4316.35, 4270.89, 4294.69, 4485.1, 4478.98, 3949.67, 3826.33, 3233.62, 3114.17, 5252.75, 4789.96, 4809.03, 5008.7, 4794.82, 4847.34, 4790.01, 4631.73, 4623.71, 4553.78, 4453.53, 4379.53, 4359.45, 4364.05, 4316.43, 4316.13, 4360.42, 4418.97, 4620.02, 4773.71, 4346.86, 3440.68, 4234.83, 4103.86, 3544.28, 4358.48, 4640.31, 4725.33, 4672.96, 4577.96, 4518.98, 4484.41, 4515.27, 4436.7, 4348.43, 4360.75, 4327.83, 4285.44, 4253.51, 4267.95, 4220.07, 4205.98, 4208.06, 4025.65, 3144.08, 2327.18, 3224.46, 3174.62, 3202.67, 2707.63, 2119.25, 3707.7, 3907.46, 3935.23, 4164.88, 4206.24, 4208.04, 4155.19, 4102.1, 4076.19, 4062.61, 4070.8, 4075.4, 4069.93, 4139.08, 4152.92, 4180.88, 3890.64, 3389.09, 2684.38, 2280.4, 2026.75, 2303.56, 3697.64, 2109.35, 2468.51, 4307.87, 4418.25, 4357.46, 4454.32, 4348.2, 4315.99, 4244.45, 4216.69, 4241.58, 4202.38, 4208.51, 4180.76, 4175.78, 4144.18, 4342.47, 4416.41, 3809.23, 3422.65, 2983.79, 2785.41, 2623.51, 2742.33, 2807.88, 3163.63, 3555.97, 4127.9, 4482.15, 4435.53, 4444.3, 4381.42, 4261.35, 4146.29, 4085.69, 4064.67, 4097.57, 4118.8, 4200.95, 4319.22, 4514.37, 4409.21, 3766.78, 3263.66, 2959.14, 2845.88, 2596.15, 2652.52, 2744.29, 3047.56, 3450.4, 4031.16, 4535.1, 4514.91, 4475.73, 4439.76, 4382.75, 4290.52, 4249.76, 4191.36, 4172.2, 4169.33, 4232.95, 4395.59, 4557.64, 4525.76, 3905.04, 3370.45, 3184.39, 2927.68, 3006.95, 3108.84, 3201.77, 3442.89, 3811.06, 4377.4, 4788.75, 4800.52, 4769.2, 4687.12, 4606.17, 4576.57, 4558.49, 4561.76, 4539.63, 4471.23, 4486.94, 4597.77, 4769.75, 4815.03, 4346.64, 4089.11, 3462.82, 4283.87, 4515.77, 4814.19, 4893.38, 4920.2, 4718.18, 4743.78, 4783.65, 4684.4, 4658.56, 4691.38, 4551.04, 4508.07, 4490.19, 4463.69, 4362.39, 4384.17, 4431.73, 4591.05, 4747.46, 4623.46, 4197.26, 3659.44, 3467.7, 3334.21, 4899.84, 4886.76, 4952.18, 5054.35, 3910.11, 4785.6, 5023.29, 4822.67, 4774.69, 4690.0, 4602.83, 4573.95, 4551.8, 4559.04, 4588.46, 4545.21, 4538.8, 4554.41, 4578.31, 4455.03, 3956.33, 3055.11, 3054.71, 2958.72, 2635.26, 2724.38, 2870.65, 3007.95, 4078.71, 4608.28, 4732.96, 4653.97, 4799.47, 4705.49, 4628.2, 4600.42, 4541.9, 4551.31, 4529.17, 4517.4, 4576.93, 4605.86, 4582.34, 4514.25, 3715.75, 3157.65, 2724.27, 2909.46, 2755.45, 3349.73, 3499.17, 4127.79, 4379.49, 4534.35, 4789.46, 4752.25, 4695.68, 4613.15, 4605.34, 4586.28, 4574.9, 4514.22, 4528.88, 4498.13, 4535.88, 4631.04, 4693.82, 4684.74, 3910.0, 3343.9, 3034.84, 3573.56, 3104.45, 3581.83, 3188.29, 3129.57, 4294.02, 4709.01, 4628.06, 4575.12, 4538.5, 4430.54, 4406.22, 4394.48, 4298.55, 4364.7, 4325.1, 4314.53, 4390.83, 4507.96, 4698.56, 4739.07, 4376.65, 3830.96, 3399.39, 3226.21, 3132.38, 3017.38, 3338.88, 4562.23, 4897.1, 5004.24, 5085.06, 4892.55, 4884.31, 4805.04, 4705.91, 4645.2, 4562.27, 4477.42, 4555.27, 4547.38, 4540.34, 4542.26, 4704.49, 4957.13, 4552.06, 4622.55, 3942.86, 4226.53, 5148.08, 5381.99, 5461.13, 4883.82, 5243.63, 4880.53, 4859.33, 4766.51, 4709.01, 4687.68, 4602.62, 4593.0, 4551.03, 4589.84, 4609.43, 4359.68, 4363.32, 4484.1, 4651.79, 4727.42, 4049.67, 3835.19, 3616.63, 3358.11, 3334.9, 4686.08, 5311.32, 5416.11, 4973.03, 4972.31, 5076.98, 4941.72, 4852.9, 4818.62, 4728.82, 4702.57, 4670.43, 4638.39, 4647.15, 4635.79, 4593.33, 4672.66, 4918.32, 5004.68, 4794.5, 4790.93, 4641.89, 3984.32, 3345.61, 4278.98, 5643.29, 5663.03, 5333.42, 5336.04, 4881.53, 4850.22, 4779.83, 4672.78, 4650.75, 4568.0, 4504.99, 4557.57, 4555.6, 4536.55, 4540.71, 4560.8, 4546.48, 4530.23, 3887.62, 3355.81, 2849.47, 3207.79, 2730.13, 2403.77, 3411.98, 4021.68, 4274.08, 4539.8, 4677.53, 4708.96, 4664.69, 4633.43, 4600.23, 4608.9, 4515.17, 4429.33, 4384.36, 4364.39, 4389.14, 4428.55, 4468.04, 4320.44, 3577.79, 2785.27, 2333.98, 2065.67, 1943.98, 2926.82, 4189.33, 4610.8, 4615.83, 4514.38, 4487.53, 4379.34, 4445.18, 4408.68, 4368.51, 4379.75, 4287.29, 4267.65, 4265.86, 4255.36, 4292.07, 4464.22, 4646.48, 4649.02, 4049.85, 3523.07, 3283.57, 3188.54, 3134.37, 3007.13, 3317.74, 4204.4, 3901.03, 4979.19, 4885.88, 4773.13, 4725.12, 4641.22, 4582.49, 4534.28, 4481.68, 4464.44, 4447.08, 4364.64, 4363.25, 4502.14, 4720.15, 4864.04, 4674.13, 3641.84, 3406.49, 3284.13, 3210.74, 3361.32, 3415.83, 3954.62, 4286.32, 4753.32, 4876.31, 4750.45, 4763.62, 4645.98, 4559.83, 4596.47, 4529.15, 4185.25, 4138.02, 4052.97, 4077.9, 4159.3, 4379.43, 4490.15, 4022.16, 3451.78, 4118.04, 4032.44, 4237.74, 3725.41, 4638.97, 5105.57, 5209.65, 4917.72, 4883.95, 4710.2, 4628.92, 4600.49, 4499.77, 4499.37, 4456.1, 4339.25, 4381.72, 4379.11, 4464.86, 4574.16, 4745.42, 4743.75, 4019.59, 3429.85, 3100.69, 2605.97, 2467.96, 2492.5, 2595.52, 2944.83, 3443.63, 4170.69, 4599.8, 4514.63, 4500.36, 4302.27, 4232.33, 4219.27, 4155.09, 4151.72, 4191.78, 4211.79, 4226.67, 4298.4, 4540.8, 4598.57, 3926.43, 3267.84, 2922.76, 2671.83, 2571.36, 2732.03, 2860.2, 3354.57, 3855.32, 4527.88, 4755.18, 4612.16, 4577.19, 4533.64, 4467.06, 4455.91, 4377.69, 4372.45, 4324.21, 4335.31, 4356.44, 4372.1, 4356.01, 4303.27, 3593.04, 2924.64, 2518.89, 1996.42, 2354.37, 2326.72, 2488.24, 2856.15, 3424.19, 4211.79, 4589.25, 4566.31, 4495.95, 4489.3, 4394.58, 4379.33, 4346.77, 4339.85, 4230.59, 4385.73, 4440.77, 4451.35, 4414.5, 4376.64, 3684.68, 2956.08, 2607.33, 2409.7, 2343.15, 2607.05, 3015.22, 3229.7, 4055.37, 4450.74, 4564.46, 4444.72, 4411.97, 4313.81, 4375.26, 4425.57, 4387.83, 4362.1, 4368.77, 4339.44, 4334.19, 4427.36, 4563.45, 4727.62, 4688.81, 4416.23, 4082.98, 3012.43, 3959.75, 4065.5, 4040.22, 4785.25, 4857.98, 5024.71, 5080.95, 4787.6, 4715.88, 4662.14, 4577.23, 4553.16, 4479.84, 4520.23, 4524.22, 4525.61, 4546.61, 4658.67, 4827.82, 5033.33, 4939.21, 4824.27, 4411.38, 3738.43, 3204.08, 4176.17, 5303.01, 5077.47, 5038.96, 4624.81, 4997.95, 4808.45, 4739.48, 4667.53, 4515.6, 4528.77, 4495.08, 4495.82, 4458.3, 4465.78, 4485.13, 4584.53, 4785.66, 4853.59, 4357.37, 3683.6, 3318.99, 3077.7, 2729.86, 3571.55, 4537.93, 4436.68, 4382.52, 4901.72, 4890.84, 4681.24, 4644.27, 4560.93, 4483.28, 4468.64, 4397.45, 4369.52, 4350.48, 4377.59, 4417.73, 4518.03, 4760.66, 4765.53, 4251.22, 3520.28, 3251.34, 3087.62, 2929.8, 3035.31, 3195.42, 3846.5, 4636.7, 4724.44, 4980.84, 4739.27, 4730.66, 4683.09, 4623.9, 4588.7, 4577.14, 4567.73, 4518.04, 4515.08, 4543.93, 4647.74, 4775.96, 4885.0, 4411.47, 3772.41, 3413.51, 3158.0, 3013.15, 3140.78, 3143.72, 4427.8, 3966.09, 4747.12, 5026.95, 4707.56, 4647.49, 4616.25, 4524.36, 4507.82, 4483.82, 4472.26, 4471.28, 4475.97, 4483.67, 4485.38, 4477.5, 4468.6, 3318.3, 2804.15, 2462.22, 2173.59, 2078.13, 2761.38, 3571.51, 3611.58, 3867.52, 4454.34, 4472.29, 4425.45, 4468.21, 4397.68, 4396.59, 4380.96, 4348.27, 4268.15, 4293.72, 4274.23, 4343.48, 4335.74, 4387.76, 4366.08, 3635.44, 3042.02, 2384.95, 2099.63, 2030.9, 2169.29, 2330.15, 2748.25, 3409.01, 4176.07, 4528.58, 4465.98, 4448.91, 4398.55, 4309.5, 4349.3, 4322.87, 4335.87, 4310.75, 4271.82, 4340.15, 4439.3, 4622.76, 4717.22, 4528.44, 4215.98, 3725.39, 3741.81, 3490.84, 3609.39, 3905.55, 4445.66, 4638.19, 4819.71, 4905.8, 4743.2, 4740.79, 4606.16, 4522.05, 4491.47, 4481.02, 4489.57, 4466.36, 4477.89, 4478.27, 4546.73, 4762.53, 4816.85, 4401.14, 3756.87, 3384.83, 3131.4, 3094.51, 3237.92, 3273.44, 3557.35, 3978.91, 4567.47, 4738.42, 4597.13, 4583.38, 4528.98, 4486.92, 4478.86, 4467.12, 4449.61, 4403.1, 4379.88, 4462.01, 4520.3, 4777.25, 4821.8, 4284.89, 3648.24, 3276.9, 3078.41, 2999.87, 3072.62, 3258.59, 3663.88, 4194.23, 4741.35, 4882.71, 4702.67, 4628.45, 4561.12, 4500.11, 4462.87, 4453.22, 4445.93, 4413.27, 4382.23, 4345.5, 4445.07, 4728.59, 4784.28, 4402.12, 3662.59, 3186.57, 3070.85, 3143.48, 3565.01, 4156.26, 3750.15, 5041.75, 5004.39, 4979.86, 4728.18, 4634.76, 4574.18, 4457.03, 4431.98, 4354.03, 4351.54, 4394.61, 4413.19, 4405.46, 4464.39, 4562.72, 4656.22, 4201.68, 4078.16, 3181.36, 2949.3, 3780.12, 4267.51, 3800.3, 4342.48, 4622.91, 4608.48, 4715.67, 4534.43, 4515.88, 4490.03, 4490.63, 4477.18, 4502.47, 4502.49, 4486.14, 4443.6, 4484.12, 4510.59, 4606.24, 4522.69, 3882.98, 3118.46, 2570.49, 2293.33, 2142.15, 2255.45, 2496.19, 2862.68, 3819.71, 4277.28, 4516.15, 4439.97, 4421.75, 4362.56, 4354.56, 4286.05, 4288.48, 4322.54, 4340.18, 4329.76, 4376.26, 4407.67, 4423.59, 4420.37, 3576.83, 2824.47, 2448.62, 2189.12, 2034.93, 2659.99, 2659.76, 2854.56, 3447.37, 4311.77, 4555.37, 4426.91, 4352.2, 4349.77, 4284.08, 4231.16, 4191.95, 4125.81, 4102.21, 4092.88, 4090.5, 4400.04, 4570.62, 4583.0, 4077.75, 3366.75, 3007.1, 2803.85, 2643.71, 2816.83, 3018.23, 3291.22, 3858.77, 4483.75, 4636.05, 4458.29, 4310.69, 4258.71, 4174.79, 4106.52, 4103.64, 4131.06, 4109.21, 4079.31, 4212.07, 4266.4, 4464.59, 4613.95, 4637.78, 4559.99, 4340.99, 4228.71, 4114.42, 4184.53, 4347.21, 4431.57, 4479.95, 4470.21, 4281.29, 4129.18, 4019.95, 3949.75, 3906.55, 3889.79, 3896.55, 3878.83, 3878.98, 3837.31, 3927.09, 3986.09, 4221.69, 4465.21, 4538.5, 4222.08, 3993.4, 3835.77, 3831.57, 3224.91, 2629.34, 2929.88, 3604.4, 4072.83, 4277.2, 4200.23, 4181.71, 4133.44, 4071.58, 4046.75, 4023.42, 3996.43, 3912.41, 3845.71, 3876.07, 3977.59, 4186.42, 4431.08, 4594.4, 4148.49, 3082.64, 2704.41, 2415.07, 2560.49, 2745.36, 3066.43, 3699.73, 4242.32, 4463.75, 4278.26, 4431.09, 4376.04, 4167.19, 4142.29, 4127.1, 4131.23, 3991.33, 4010.24, 4019.56, 4080.06, 4331.66, 4433.49, 3890.2, 3318.7, 3082.64, 2659.91, 2384.62, 2462.85, 4042.96, 4115.88, 3679.12, 4263.44, 4420.57, 4151.82, 4079.69, 4056.29, 3910.86, 3917.93, 3864.47, 3939.52, 3954.41, 3966.82, 3875.64, 3879.12, 4086.95, 3938.69, 3722.4, 3506.47, 2074.86, 2138.71, 1392.41, 1502.31, 1928.86, 2198.09, 2899.42, 3681.27, 3836.71, 3873.34, 3864.39, 3888.44, 3880.84, 3885.93, 3794.78, 3808.33, 3792.09, 3773.09, 3820.19, 3826.9, 3858.5, 3820.69, 3234.55, 2386.01, 1873.33, 1663.33, 1513.69, 1493.27, 1696.84, 2127.69, 2878.97, 3650.87, 3815.11, 3859.43, 3780.53, 3749.04, 3790.28, 3783.64, 3771.06, 3767.33, 3749.69, 3762.15, 3800.77, 3954.73, 4110.36, 4194.9, 3771.22, 3021.81, 2631.44, 2374.14, 2281.47, 2555.37, 2725.96, 3149.77, 3689.8, 4487.39, 4550.05, 4416.6, 4276.55, 4219.38, 4141.58, 4101.61, 4020.56, 3963.93, 3971.22, 3961.56, 3963.97, 4085.41, 4372.0, 4475.3, 4493.76, 4209.3, 3804.31, 2737.8, 2654.71, 2931.85, 3016.93, 3506.09, 4156.39, 4636.53, 4756.16, 4575.28, 4505.48, 4407.5, 4349.83, 4301.71, 4220.59, 4252.12, 4233.32, 4240.57, 4276.85, 4374.32, 4510.25, 4603.61, 4628.9, 4372.39, 3587.12, 3885.33, 3033.52, 3060.43, 4489.77, 4691.45, 4649.0, 4817.82, 4757.93, 4615.78, 4546.57, 4505.22, 4432.05, 4408.85, 4375.85, 4420.39, 4431.29, 4425.21, 4531.38, 4641.97, 4790.16, 4844.77, 4938.47, 4903.47, 4998.08, 4979.37, 4909.44, 4881.14, 4817.77, 4784.83, 4707.18, 4638.3, 4615.87, 4458.34, 4398.33, 4328.92, 4243.13, 4213.12, 4161.62, 4171.3, 4146.03, 4104.88, 4153.82, 4181.22, 4340.3, 4471.68, 4421.83, 4387.79, 4332.86, 4252.39, 4037.27, 3778.95, 3540.58, 3386.61, 3851.77, 4448.05, 4529.69, 4371.13, 4300.19, 4251.76, 4229.09, 4208.88, 4183.95, 4176.19, 4154.06, 4139.3, 4199.62, 4256.37, 4292.25, 4289.18, 3778.02, 2889.64, 2349.6, 2053.02, 1905.78, 1925.14, 2142.93, 2576.4, 3302.66, 4024.89, 4188.43, 4148.8, 4054.61, 4045.46, 3981.07, 3979.72, 3956.09, 3993.81, 3996.84, 4015.69, 3994.18, 4031.31, 4025.67, 4012.69, 3445.32, 2639.29, 2137.77, 1820.3, 1719.57, 1788.37, 2021.8, 2561.49, 3296.25, 3975.91, 4162.23, 4021.45, 4231.63, 4174.94, 4095.59, 4120.51, 4083.87, 4079.61, 4080.35, 4064.99, 4019.5, 4106.72, 4402.83, 4429.38, 4044.43, 3424.47, 3196.19, 2939.82, 2758.18, 2903.17, 3078.32, 4700.94, 4786.57, 4609.48, 4721.68, 4469.37, 4418.13, 4389.77, 4314.89, 4268.57, 4165.23, 4171.07, 4183.19, 4282.83, 4409.36, 4454.43, 4708.92, 4709.41, 4253.08, 3557.3, 3566.23, 2938.09, 2730.81, 2754.64, 2871.64, 3404.8, 4104.7, 4631.77, 4658.19, 4461.6, 4322.28, 4238.91, 4109.59, 4102.42, 4033.62, 4054.16, 4038.81, 4003.34, 4024.77, 4101.57, 4306.82, 4410.85, 4226.39, 4040.09, 3767.34, 3435.51, 4086.37, 3924.25, 3645.11, 3677.36, 4776.6, 4754.44, 4736.27, 4521.43, 4449.16, 4398.44, 4352.57, 4268.66, 4365.9, 4397.18, 4368.41, 4359.4, 4429.02, 4449.06, 4694.15, 4760.85, 4530.28, 4468.59, 4296.02, 4289.84, 3696.29, 3969.79, 4010.2, 4828.96, 4846.25, 5017.67, 4777.85, 4584.21, 4514.9, 4433.2, 4389.73, 4367.64, 4326.11, 4313.29, 4187.29, 4121.85, 4157.38, 4041.86, 4222.51, 4271.76, 4127.41, 3877.55, 4011.87, 4621.94, 4779.18, 4657.88, 4383.97, 4002.67, 3807.22, 4473.53, 4520.52, 4474.15, 4459.81, 4272.87, 4165.78, 4163.16, 4174.23, 4145.1, 4137.89, 4150.21, 4158.4, 4181.53, 4152.9, 4061.41, 3664.58, 2698.95, 2355.19, 2069.26, 1872.55, 1914.17, 2148.85, 2609.09, 3328.65, 3987.07, 4093.64, 4065.14, 3972.22, 3959.38, 3920.53, 3913.37, 3899.27, 3909.48, 3967.89, 3936.32, 3955.57, 3973.15, 3995.82, 3966.33, 3511.92, 2639.81, 2132.53, 2923.13, 2764.36, 3201.17, 3323.05, 3483.44, 2998.23, 3806.63, 3973.58, 3958.71, 3993.81, 3994.59, 3988.0, 4046.97, 4021.04, 3986.33, 3956.64, 3961.68, 4000.84, 4112.24, 4320.51, 4464.86, 4118.37, 3353.7, 3021.87, 2601.96, 2518.76, 2909.58, 4205.06, 4176.95, 4544.93, 4490.86, 4466.83, 4376.59, 4305.79, 4263.88, 4176.39, 4146.64, 4108.67, 4059.43, 4045.3, 4009.06, 4045.19, 4116.19, 4338.62, 4452.19, 4103.76, 3619.99, 3787.69, 3184.46, 3254.16, 3867.2, 3667.75, 3645.86, 4271.99, 4644.47, 4587.01, 4331.16, 4449.03, 4434.8, 4377.8, 4313.47, 4326.97, 4300.7, 4262.43, 4254.78, 4203.34, 4273.73, 4428.01, 4572.49, 4458.16, 3520.59, 3370.08, 3157.57, 2991.65, 4735.52, 4859.0, 4986.48, 4763.26, 4684.15, 4559.54, 4452.19, 4344.88, 4306.73, 4279.27, 4291.48, 4261.95, 4247.01, 4284.95, 4185.83, 4188.31, 4267.02, 4437.46, 4581.63, 4670.1, 4524.35, 4457.35, 4118.83, 4179.98, 4160.83, 4078.83, 4163.06, 4480.82, 4649.08, 4598.56, 4528.21, 4555.68, 4229.3, 4040.52, 4000.22, 4014.42, 3978.82, 3920.95, 3897.83, 3934.06, 3994.49, 4199.3, 4318.97, 4439.68, 4092.22, 4030.78, 4213.88, 4144.34, 4038.11, 3981.25, 3850.82, 4076.34, 4412.29, 4429.34, 4226.92, 4149.55, 4026.54, 4065.92, 4269.49, 4105.31, 4021.81, 4018.98, 4062.06, 4076.28, 4080.51, 4116.03, 4127.66, 3686.4, 3209.68, 3740.66, 3712.83, 2017.83, 2266.84, 2366.35, 2839.96, 3596.45, 4174.24, 4183.09, 4132.27, 4139.77, 4079.46, 4036.92, 4038.72, 4050.54, 4057.22, 4039.97, 4014.14, 4094.81, 4103.34, 4134.25, 4099.86, 4050.8, 4002.05, 3938.39, 3908.03, 3912.46, 3964.26, 3987.55, 4034.1, 4062.64, 4024.03, 4067.37, 4055.83, 4056.57, 4034.3, 4031.76, 4043.31, 4044.61, 4031.4, 4046.42, 4017.33, 4080.23, 4107.13, 4268.33, 4408.45, 4470.79, 4587.72, 4621.16, 4691.34, 4627.59, 4585.22, 4495.77, 4380.86, 4373.04, 4559.2, 4526.95, 4478.39, 4440.41, 4351.75, 4317.04, 4287.33, 4236.3, 4222.4, 4195.81, 4179.99, 4212.17, 4292.94, 4481.8, 4655.13, 4612.31, 4649.87, 4634.0, 4639.22, 4620.88, 4564.52, 4538.45, 4621.06, 4628.57, 4467.08, 4418.21, 4326.68, 4328.34, 4252.68, 4271.7, 4230.55, 4220.44, 4148.85, 4126.13, 4134.16, 4142.27, 4202.89, 4330.75, 4439.28, 4423.77, 4501.34, 4668.08, 4739.42, 4787.12, 4729.34, 4743.04, 4639.97, 4587.21, 4520.73, 4406.46, 4325.17, 4299.82, 4272.91, 4172.9, 4266.18, 4245.06, 4230.04, 4251.23, 4192.96, 4202.33, 4317.66, 4489.42, 4635.01, 4504.79, 4713.35, 4730.02, 4729.76, 4904.64, 4803.21, 4518.04, 4903.9, 4776.53, 4528.99, 4489.32, 4687.23, 4649.05, 4439.05, 4319.25, 4317.73, 4269.2, 4348.28, 4354.44, 4406.75, 4481.13, 4554.54, 4722.7, 4812.63, 4853.49, 4506.81, 4342.19, 4350.62, 4670.1, 4846.44, 4945.49, 5231.75, 5067.98, 4862.91, 4706.5, 4653.06, 4570.72, 4532.74, 4462.69, 4467.12, 4414.81, 4426.11, 4406.1, 4408.24, 4407.11, 4432.02, 4488.15, 4449.57, 4234.86, 3791.37, 3641.69, 3858.9, 4104.51, 3468.76, 3386.82, 3574.04, 3966.9, 4338.57, 4337.94, 4319.25, 4339.66, 4315.05, 4280.72, 4253.04, 4204.37, 4192.55, 4181.69, 4196.08, 4217.04, 4238.09, 4203.32, 4020.5, 3594.73, 3833.72, 3398.99, 3196.34, 3826.69, 3790.56, 3905.32, 3858.93, 4316.15, 4359.59, 4370.47, 4392.42, 4294.03, 4285.41, 4291.92, 4327.93, 4281.9, 4260.31, 4266.26, 4222.52, 4359.41, 4402.25, 4504.61, 4564.72, 4164.1, 4533.98, 4165.51, 3786.27, 3237.95, 3166.41, 3699.32, 4394.07, 5021.73, 4850.78, 4468.8, 4309.37, 4165.63, 4151.93, 4114.34, 4097.36, 4063.1, 4092.91, 4088.39, 4051.55, 4127.65, 4213.48, 4378.52, 4189.26, 3723.58, 3105.92, 3129.98, 3227.64, 3204.53, 3385.54, 4005.18, 4709.97, 5089.05, 4692.79, 4603.93, 4237.82, 4192.88, 4165.38, 4045.72, 4056.61, 3986.61, 3992.87, 3988.82, 3955.03, 3965.96, 4077.76, 4276.31, 4071.36, 3555.11, 3212.49, 3127.89, 3346.07, 3507.34, 5078.84, 5099.98, 5160.7, 5131.07, 4712.35, 4603.39, 4400.02, 4335.41, 4307.44, 4231.59, 4228.01, 4164.01, 4166.77, 4180.33, 4149.85, 4181.09, 4315.68, 4493.84, 4542.86, 4136.29, 3364.28, 3418.37, 3135.66, 3221.76, 3379.05, 3891.85, 4644.43, 4927.12, 4587.62, 4443.71, 4330.79, 4298.26, 4197.38, 4178.02, 4136.43, 4119.46, 4119.02, 4144.79, 4096.62, 4063.12, 4152.84, 4297.54, 4094.84, 3591.07, 3407.14, 3217.94, 3179.25, 3107.63, 3655.17, 4039.19, 4810.04, 5168.87, 4902.58, 4653.01, 4538.7, 4502.35, 4437.84, 4355.29, 4347.15, 4309.41, 4333.17, 4315.68, 4309.96, 4320.6, 4346.61, 4400.04, 4158.84, 3419.68, 2838.01, 2625.11, 2492.75, 2535.93, 2805.34, 3229.11, 3788.75, 4188.22, 4191.14, 4159.89, 4142.29, 4099.7, 4085.13, 4038.13, 3994.71, 3995.58, 4005.28, 3994.65, 3972.27, 4004.02, 3991.9, 4040.66, 3813.47, 3015.55, 2385.94, 2392.66, 2066.36, 2120.45, 2263.2, 3644.56, 3912.7, 4038.42, 4020.06, 4046.59, 4101.67, 4008.29, 4056.17, 4059.07, 4092.0, 4081.85, 4135.07, 4046.21, 4011.17, 4018.5, 4095.88, 4272.33, 4432.36, 4630.05, 5001.29, 4973.34, 4860.04, 4908.32, 4846.74, 4759.48, 4878.57, 5007.95, 4973.9, 4792.1, 4672.19, 4641.12, 4593.4, 4504.02, 4486.18, 4282.86, 4230.72, 4206.85, 4197.6, 4219.89, 4318.22, 4531.77, 4553.43, 4394.8, 4729.98, 4235.32, 3357.65, 3069.73, 3194.13, 3947.57, 4495.44, 4810.44, 4734.32, 4492.25, 4447.42, 4466.7, 4462.84, 4325.89, 4294.48, 4276.28, 4284.94, 4264.37, 4186.35, 4384.96, 4501.72, 4604.36, 4491.17, 4516.9, 4509.39, 4356.65, 4529.71, 4506.36, 3329.25, 3707.52, 4512.11, 4868.63, 4746.28, 4641.0, 4479.1, 4420.04, 4158.17, 4079.16, 4071.4, 4005.28, 3988.85, 3984.77, 3947.79, 3983.0, 4168.28, 4350.76, 4260.32, 3724.93, 3189.67, 3028.92, 3365.18, 3611.41, 4043.72, 4668.08, 4860.72, 4910.83, 4818.77, 4619.87, 4552.42, 4470.71, 4471.52, 4393.68, 4411.43, 4400.57, 4379.16, 4375.64, 4333.18, 4342.75, 4372.3, 4571.68, 4606.0, 4617.24, 4219.77, 4470.42, 4244.47, 3216.2, 3430.33, 4356.17, 4820.76, 4883.52, 4818.56, 4681.69, 4429.28, 4372.57, 4309.59, 4370.93, 4354.57, 4328.69, 4284.31, 4318.6, 4283.75, 4254.25, 4283.26, 4305.7, 4304.97, 4008.53, 3724.66, 3135.02, 3211.89, 3792.23, 3382.37, 4025.46, 4022.55, 4402.02, 4378.65, 4274.49, 4232.79, 3988.79, 4006.65, 3935.35, 3978.29, 3953.68, 3979.63, 3993.89, 3963.62, 4006.81, 3986.07, 3972.12, 3890.72, 3139.99, 2555.32, 1030.8, 1222.73, 2344.23, 1584.61, 2327.83, 2777.94, 3252.6, 3440.67, 3393.67, 3568.73, 3463.91, 3457.85, 3484.21, 3521.3, 3502.07, 3493.75, 3477.0, 3444.04, 3478.28, 3559.13, 3882.89, 3834.34, 3228.17, 2771.99, 2546.5, 2498.22, 2494.83, 3572.73, 4622.04, 4789.01, 4370.42, 4465.39, 4370.47, 4117.56, 4108.26, 4110.9, 3889.44, 3868.55, 3825.75, 3788.67, 3761.2, 3785.08, 3823.7, 3884.02, 4109.25, 4073.42, 3286.64, 3701.29, 3992.66, 3975.03, 4124.67, 4482.84, 4852.39, 4936.56, 4950.3, 4512.16, 4450.91, 4305.93, 4204.56, 4068.69, 3988.4, 4055.05, 4040.66, 4041.69, 4034.51, 4035.69, 4104.5, 4106.3, 4232.77, 4235.15, 4656.06, 4531.18, 4523.8, 4395.85, 4775.57, 5118.33, 5154.19, 5130.01, 5156.29, 4623.58, 4321.25, 4168.14, 4121.35, 4098.39, 3976.42, 4022.67, 3997.71, 4034.42, 3993.26, 3919.09, 3956.73, 4062.27, 4283.86, 4459.91, 4937.61, 5272.57, 5330.64, 5424.55, 5253.47, 5287.8, 5276.46, 5313.85, 5108.66, 4755.0, 4356.51, 4333.36, 4305.31, 4252.17, 4133.64, 4115.07, 4039.23, 4025.89, 4046.72, 4038.57, 4135.37, 4174.47, 4343.6, 4474.9, 4669.81, 4835.91, 4862.06, 4846.17, 4614.32, 4464.58, 4077.92, 4278.4, 4484.12, 4450.56, 4274.54, 4175.2, 4163.39, 4057.36, 4005.19, 3988.48, 3969.53, 3950.62, 3952.45, 3970.69, 3930.69, 3924.09, 3922.45, 3849.59, 3498.73, 3237.12, 3189.35, 3049.43, 2778.66, 2503.59, 2865.3, 3513.2, 3852.19, 3872.63, 3858.54, 3782.39, 3770.49, 3782.2, 3786.07, 3780.06, 3765.37, 3750.24, 3681.01, 3694.68, 3722.35, 3728.96, 3772.79, 3773.26, 3739.95, 3455.01, 2539.33, 3423.66, 3321.17, 2460.33, 2744.37, 3474.64, 3965.15, 3964.9, 3971.23, 3914.91, 3886.98, 3893.18, 3889.76, 3877.12, 3928.63, 3924.78, 3930.56, 3940.97, 3975.39, 4082.06, 4296.59, 4359.01, 4092.15, 4465.58, 4371.79, 4548.83, 4690.72, 5096.76, 5219.39, 5053.07, 4817.96, 4425.24, 4235.57, 4169.54, 4150.28, 4121.11, 4152.98, 4140.56, 4118.22, 4146.1, 4172.95, 4139.74, 4213.96, 4273.91, 4372.49, 4398.46, 4303.49, 4258.92, 4185.69, 4116.34, 4095.7, 4079.51, 4125.89, 4205.45, 4316.36, 4256.44, 4190.93, 4194.33, 4150.92, 4117.85, 4076.17, 4099.95, 4106.66, 4126.75, 4172.43, 4153.14, 4207.68, 4248.33, 4410.1, 4392.79, 4334.46, 4042.09, 4069.17, 4047.26, 4094.57, 4039.12, 4268.85, 4401.54, 4437.13, 4427.94, 4392.94, 4246.25, 4214.59, 4168.85, 4133.13, 4158.1, 4098.31, 4114.47, 4046.49, 4079.5, 4130.8, 4224.05, 4321.02, 4288.0, 3949.33, 3948.97, 3823.71, 3839.64, 3676.89, 3641.29, 3769.05, 3974.61, 4179.42, 4108.64, 4061.35, 4075.69, 4046.49, 4017.72, 4100.96, 4079.3, 4028.26, 4084.76, 4076.89, 4074.71, 4096.45, 4144.32, 4273.94, 4309.18, 4056.95, 3865.38, 3852.92, 3590.51, 3679.58, 3898.46, 4063.25, 4213.25, 4283.61, 4255.24, 4175.14, 4139.21, 4125.31, 4105.75, 4079.84, 4093.21, 4030.78, 4068.42, 4073.91, 4014.52, 4073.85, 4104.25, 4135.29, 4062.13, 3759.25, 3768.9, 3784.44, 3598.59, 3529.74, 3277.03, 3469.53, 3862.72, 4151.59, 4153.64, 4080.09, 4058.19, 4127.31, 4088.91, 3985.44, 4004.61, 3975.75, 3956.5, 3921.28, 3954.17, 3970.18, 3964.64, 3981.68, 3971.25, 3518.33, 2917.68, 2698.27, 2544.73, 2663.14, 2803.37, 3154.74, 3861.2, 4135.08, 4142.11, 4125.5, 4134.86, 4127.52, 4135.53, 4078.65, 4061.05, 4001.39, 3934.68, 3927.61, 3983.83, 4092.69, 4119.53, 4327.35, 4423.15, 3966.92, 3651.93, 3729.58, 3633.5, 3558.71, 3436.05, 4031.13, 4675.53, 4958.96, 4519.66, 4383.83, 4290.92, 4165.84, 4095.67, 4055.65, 4020.63, 3985.14, 3979.59, 3823.16, 3800.43, 3979.0, 4039.37, 4286.31, 4317.56, 4043.37, 3813.85, 3483.57, 3343.14, 3204.75, 3364.25, 3813.16, 4513.26, 4762.69, 4649.46, 4428.49, 4267.8, 4192.54, 4186.5, 4085.26, 3807.15, 3775.21, 3779.44, 3753.91, 3764.53, 3747.26, 3836.36, 4061.07, 4177.02, 4185.76, 4049.99, 3999.21, 4005.0, 3933.34, 2982.19, 3479.96, 4114.81, 4556.15, 4563.0, 4485.24, 4367.81, 4291.66, 4259.57, 4146.6, 4157.94, 4093.16, 4093.69, 4055.61, 4057.42, 4039.86, 4146.34, 4330.3, 4501.74, 4625.92, 4751.09, 4817.43, 4752.81, 4607.2, 4772.45, 4941.8, 4933.0, 4833.73, 4691.09, 4570.18, 4502.39, 4462.73, 4379.37, 4291.17, 4270.63, 4252.26, 4287.8, 4278.55, 4226.81, 4176.32, 4240.73, 4507.2, 4594.11, 4505.36, 3932.34, 3282.61, 3164.74, 3073.59, 3356.3, 3844.52, 4436.45, 4785.1, 4638.54, 4514.93, 4442.54, 4449.18, 4448.54, 4372.34, 4321.11, 4335.16, 4319.75, 4276.27, 4274.58, 4298.18, 4332.19, 4338.54, 4255.08, 3786.16, 3684.43, 3542.81, 2877.27, 2538.43, 3229.64, 3464.67, 4005.83, 4233.75, 4242.23, 4284.77, 4225.24, 4253.73, 4237.98, 4008.16, 4031.68, 4027.64, 4041.19, 4024.61, 4015.08, 4004.2, 4020.77, 4059.07, 4069.13, 3951.19, 3707.44, 3509.81, 3491.38, 3436.24, 2685.98, 3379.9, 4259.6, 4398.07, 4326.11, 4296.54, 4255.15, 4309.63, 4273.29, 4252.75, 4250.46, 4240.67, 4255.21, 4271.93, 4258.75, 4286.06, 4330.02, 4554.88, 4618.45, 4212.45, 3641.31, 3284.76, 3358.61, 3896.54, 4258.33, 4404.97, 4523.44, 4681.52, 4629.33, 4486.26, 4421.43, 4291.07, 4278.31, 4206.05, 4181.83, 4148.47, 4173.25, 4132.4, 4155.64, 4171.5, 4233.08, 4453.55, 4526.52, 4182.37, 4248.29, 3499.17, 3576.4, 3550.21, 3532.31, 4550.21, 4764.25, 4737.3, 4649.36, 4520.04, 4373.36, 4405.29, 4381.94, 4217.01, 4188.39, 4146.0, 4160.45, 4149.04, 4143.37, 4178.36, 4321.99, 4468.09, 4542.15, 4155.49, 3620.16, 4206.53, 4393.16, 4397.26, 3875.49, 4170.5, 4521.43, 4743.92, 4712.94, 4477.81, 4396.98, 4334.12, 4290.02, 4211.52, 4212.09, 4172.06, 4178.44, 4213.0, 4161.36, 4149.46, 4208.61, 4379.68, 4546.25, 4761.09, 5418.63, 4422.23, 3356.98, 3368.26, 4444.53, 4704.72, 4552.86, 4837.95, 4778.4, 4553.72, 4484.67, 4518.25, 4486.41, 4469.94, 4427.75, 4377.65, 4453.36, 4475.98, 4436.16, 4468.28, 4537.73, 4672.07, 4746.87, 4355.46, 4226.48, 3858.67, 3291.9, 3251.42, 3699.89, 4009.9, 4693.3, 4896.08, 4812.98, 4692.22, 4605.3, 4575.42, 4536.67, 4483.08, 4472.32, 4457.88, 4446.95, 4432.06, 4443.22, 4478.63, 4487.81, 4553.1, 4537.33, 4181.86, 3538.64, 4116.18, 4269.82, 3979.22, 4261.63, 4173.96, 4477.01, 4530.2, 4538.56, 4521.33, 4484.73, 4484.42, 4504.33, 4520.15, 4545.55, 4495.29, 4502.92, 4456.09, 4449.6, 4520.83, 4555.19, 4560.34, 4522.19, 4457.92, 4234.09, 3997.44, 3699.55, 3665.58, 3894.15, 3961.07, 4241.72, 4386.6, 4397.39, 4359.78, 4364.98, 4362.15, 4368.12, 4347.15, 4344.88, 4321.05, 4295.09, 4253.73, 4316.82, 4438.89, 4506.58, 4626.29, 4868.3, 5027.34, 5031.67, 4369.08, 3532.85, 3343.32, 4084.57, 4133.69, 4611.78, 4929.53, 4931.04, 4725.71, 4661.22, 4609.0, 4515.26, 4473.61, 4506.59, 4473.83, 4488.78, 4512.59, 4508.6, 4560.91, 4602.89, 4834.0, 4915.35, 4527.04, 4086.52, 3610.83, 3613.96, 3859.85, 3462.09, 3915.69, 4567.13, 4867.4, 4796.17, 4626.28, 4567.56, 4552.71, 4533.7, 4411.33, 4388.33, 4370.95, 4381.88, 4320.64, 4338.53, 4343.39, 4436.39, 4630.95, 4702.72, 4438.21, 3756.44, 3480.47, 3295.18, 3324.72, 3731.42, 4021.66, 4623.61, 4753.28, 4646.86, 4509.5, 4437.76, 4419.4, 4359.37, 4282.72, 4241.67, 4242.01, 4221.42, 4228.64, 4240.86, 4280.58, 4392.1, 4587.39, 4695.33, 4620.59, 4156.64, 4041.54, 3664.31, 3628.54, 4062.76, 4428.48, 4530.93, 4699.29, 4658.92, 4511.21, 4400.22, 4374.27, 4315.16, 4228.4, 4236.79, 4182.71, 4179.58, 4136.29, 4139.75, 4156.65, 4260.61, 4438.92, 4491.63, 4173.5, 3606.02, 3177.97, 3007.98, 3018.14, 3354.15, 3914.89, 4524.51, 4676.73, 4575.94, 4433.08, 4356.56, 4309.08, 4192.42, 4120.36, 4167.43, 4156.27, 4139.3, 4134.53, 4131.85, 4156.81, 4202.46, 4248.88, 4154.54, 3764.13, 3088.44, 2699.36, 2640.56, 2603.45, 2661.25, 3180.1, 3868.04, 4185.18, 4202.38, 4110.99, 4087.57, 4044.26, 4055.78, 3981.34, 3988.77, 4041.33, 4017.46, 4018.76, 4023.85, 4042.76, 4081.21, 4111.38, 4107.71, 3863.03, 3209.7, 2872.51, 2912.68, 2479.91, 3479.07, 3664.29, 3968.92, 4282.15, 4261.74, 4241.48, 4215.64, 4219.45, 4202.08, 4182.58, 4187.88, 4162.2, 4141.91, 4131.49, 4127.98, 4193.43, 4268.9, 4368.2, 4514.4, 4540.16, 4510.11, 4204.03, 4039.33, 3846.08, 3991.05, 4023.29, 4489.98, 4523.43, 4400.68, 4217.86, 4152.66, 4154.4, 4133.23, 4036.75, 4013.84, 4007.07, 3998.95, 3921.5, 3931.25, 3951.24, 3976.94, 4089.85, 4105.13, 3972.06, 3753.57, 3777.42, 3570.17, 3402.26, 3479.78, 3327.08, 3740.51, 4067.49, 4038.12, 3976.45, 3979.98, 3934.69, 3904.75, 3923.38, 3957.56, 3953.95, 3940.33, 3931.49, 3931.72, 3951.68, 4013.48, 4036.88, 4076.28, 3691.38, 3154.82, 2648.56, 2504.39, 3292.92, 3934.08, 3940.59, 3971.07, 4102.39, 4150.39, 4054.11, 4001.61, 4021.71, 3990.29, 3964.45, 3998.0, 4010.65, 3977.57, 3970.4, 3972.3, 3996.98, 4038.7, 4197.3, 4365.7, 4107.51, 3352.99, 2979.07, 2835.3, 2937.06, 2977.0, 3608.36, 4189.13, 4506.21, 4491.25, 4435.68, 4353.49, 4354.78, 4321.86, 4246.14, 4216.19, 4142.89, 4129.32, 4150.39, 4114.44, 4219.98, 4302.38, 4455.54, 4597.65, 4301.49, 4200.9, 4144.42, 3791.59, 3344.39, 3312.94, 4363.91, 4548.93, 4639.0, 4635.07, 4551.79, 4483.64, 4481.52, 4475.96, 4367.29, 4367.44, 4348.59, 4337.87, 4336.37, 4323.72, 4408.21, 4425.32, 4464.29, 4463.77, 4362.26, 4324.57, 4288.31, 4280.14, 4270.62, 4313.96, 4348.18, 4415.08, 4466.39, 4464.84, 4452.49, 4484.7, 4477.84, 4455.38, 4455.74, 4420.3, 4431.51, 4434.09, 4460.62, 4434.94, 4461.05, 4435.94, 4443.23, 4452.42, 4288.4, 4019.22, 3795.09, 3713.58, 3597.81, 3586.52, 3816.85, 4201.34, 4481.02, 4527.98, 4505.51, 4467.93, 4449.16, 4444.05, 4427.96, 4394.03, 4383.79, 4384.88, 4396.65, 4400.78, 4472.87, 4511.34, 4627.31, 4737.09, 4486.54, 4035.06, 3826.52, 3574.34, 3409.96, 3444.11, 3775.37, 4459.65, 4845.88, 4813.98, 4718.92, 4618.22, 4607.9, 4573.95, 4509.81, 4463.79, 4453.46, 4422.03, 4428.76, 4437.7, 4462.87, 4547.5, 4688.98, 4756.33, 4489.44, 3835.78, 3467.46, 3278.03, 3172.28, 3211.59, 3706.12, 4689.06, 4789.83, 4770.61, 4895.98, 4641.73, 4556.89, 4544.06, 4566.79, 4610.33], "loads_kw_is_net": true, "critical_loads_kw_is_net": false, "critical_load_fraction": 0.5, "operating_reserve_required_fraction": 0.0, "min_load_met_annual_fraction": 1.0}, - "Site": {"latitude": 39.7407, "longitude": -105.1686, "min_resil_time_steps": 15, "include_exported_elec_emissions_in_total": true, "include_exported_renewable_electricity_in_total": true}, - "PV": {"name": "PV", "existing_kw": 0.0, "min_kw": 0.0, "max_kw": 1000000000.0, "installed_cost_per_kw": 1600.0, "om_cost_per_kw": 16.0, "macrs_option_years": 5, "macrs_bonus_fraction": 1.0, "macrs_itc_reduction": 0.5, "federal_itc_fraction": 0.26, "state_ibi_fraction": 0.0, "state_ibi_max": 10000000000.0, "utility_ibi_fraction": 0.0, "utility_ibi_max": 10000000000.0, "federal_rebate_per_kw": 0.0, "state_rebate_per_kw": 0.0, "state_rebate_max": 10000000000.0, "utility_rebate_per_kw": 0.0, "utility_rebate_max": 10000000000.0, "production_incentive_per_kwh": 0.0, "production_incentive_max_benefit": 1000000000.0, "production_incentive_years": 1, "production_incentive_max_kw": 1000000000.0, "degradation_fraction": 0.005, "azimuth": 180.0, "losses": 0.14, "array_type": 0, "module_type": 0, "gcr": 0.4, "dc_ac_ratio": 1.2, "inv_eff": 0.96, "radius": 0, "tilt": 39.7407, "location": "both", "can_net_meter": true, "can_wholesale": true, "can_export_beyond_nem_limit": true, "can_curtail": true, "operating_reserve_required_fraction": 0.0}, - "Wind": {"min_kw": 0.0, "max_kw": 1000000000.0, "installed_cost_per_kw": 1874,"om_cost_per_kw": 35, "size_class": "large", "macrs_option_years": 5, "macrs_bonus_fraction": 1.0, "macrs_itc_reduction": 0.5, "federal_itc_fraction": 0.26, "state_ibi_fraction": 0.0, "state_ibi_max": 10000000000.0, "utility_ibi_fraction": 0.0, "utility_ibi_max": 10000000000.0, "federal_rebate_per_kw": 0.0, "state_rebate_per_kw": 0.0, "state_rebate_max": 10000000000.0, "utility_rebate_per_kw": 0.0, "utility_rebate_max": 10000000000.0, "production_incentive_per_kwh": 0.0, "production_incentive_max_benefit": 1000000000.0, "production_incentive_years": 1, "production_incentive_max_kw": 1000000000.0, "can_net_meter": true, "can_wholesale": true, "can_export_beyond_nem_limit": true, "can_curtail": true, "operating_reserve_required_fraction": 0.0}, + "ElectricLoad": {"year": 2020, "loads_kw": [200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 425.0, 425.0, 425.0, 425.0, 425.0, 425.0, 425.0, 425.0, 425.0, 425.0, 425.0, 425.0, 425.0, 425.0, 425.0, 425.0, 425.0, 425.0, 425.0, 425.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0], "loads_kw_is_net": true, "critical_loads_kw_is_net": false, "critical_load_fraction": 0.5, "operating_reserve_required_fraction": 0.0, "min_load_met_annual_fraction": 1.0}, + "Site": {"latitude": 39.7407, "longitude": -105.1686, "min_resil_time_steps": 1, "include_exported_elec_emissions_in_total": true, "include_exported_renewable_electricity_in_total": true}, + "PV": {"name": "PV", "existing_kw": 0.0, "min_kw": 100.0, "max_kw": 100.0, "installed_cost_per_kw": 1600.0, "om_cost_per_kw": 16.0, "macrs_option_years": 5, "macrs_bonus_fraction": 1.0, "macrs_itc_reduction": 0.5, "federal_itc_fraction": 0.26, "state_ibi_fraction": 0.0, "state_ibi_max": 10000000000.0, "utility_ibi_fraction": 0.0, "utility_ibi_max": 10000000000.0, "federal_rebate_per_kw": 0.0, "state_rebate_per_kw": 0.0, "state_rebate_max": 10000000000.0, "utility_rebate_per_kw": 0.0, "utility_rebate_max": 10000000000.0, "production_incentive_per_kwh": 0.0, "production_incentive_max_benefit": 1000000000.0, "production_incentive_years": 1, "production_incentive_max_kw": 1000000000.0, "degradation_fraction": 0.005, "azimuth": 180.0, "losses": 0.14, "array_type": 0, "module_type": 0, "gcr": 0.4, "dc_ac_ratio": 1.2, "inv_eff": 0.96, "radius": 0, "tilt": 39.7407, "location": "both", "can_net_meter": true, "can_wholesale": true, "can_export_beyond_nem_limit": true, "can_curtail": true, "operating_reserve_required_fraction": 0.0}, + "Wind": {"min_kw": 100.0, "max_kw": 100.0, "installed_cost_per_kw": 1874,"om_cost_per_kw": 35, "size_class": "large", "macrs_option_years": 5, "macrs_bonus_fraction": 1.0, "macrs_itc_reduction": 0.5, "federal_itc_fraction": 0.26, "state_ibi_fraction": 0.0, "state_ibi_max": 10000000000.0, "utility_ibi_fraction": 0.0, "utility_ibi_max": 10000000000.0, "federal_rebate_per_kw": 0.0, "state_rebate_per_kw": 0.0, "state_rebate_max": 10000000000.0, "utility_rebate_per_kw": 0.0, "utility_rebate_max": 10000000000.0, "production_incentive_per_kwh": 0.0, "production_incentive_max_benefit": 1000000000.0, "production_incentive_years": 1, "production_incentive_max_kw": 1000000000.0, "can_net_meter": true, "can_wholesale": true, "can_export_beyond_nem_limit": true, "can_curtail": true, "operating_reserve_required_fraction": 0.0}, "ElectricTariff": {"urdb_label": "5e611fec5457a3665e019406", "add_monthly_rates_to_urdb_rate": false, "add_tou_energy_rates_to_urdb_rate": false}, "ElectricUtility": {"co2_from_avert": true, "outage_start_time_steps": [5100, 5200], "outage_durations": [10, 20], "outage_probabilities": [0.8, 0.2], "interconnection_limit_kw": 1000000000.0, "net_metering_limit_kw": 0.0, "emissions_factor_series_lb_CO2_per_kwh": [-0.45, 2.402, 3.072, 1.466, 1.466, 2.402, 3.5, 3.5, -0.45, 0.282, 4.1, 1.916, 2.052, 2.052, 0.536, 1.222, 1.95, 1.186, 1.186, 1.546, 1.546, 1.546, 1.766, 1.222, 2.956, 2.052, 4.1, 0.454, 3.258, 1.292, 1.426, 1.222, 2.83, 2.83, 1.426, 1.426, 1.426, 1.426, 1.426, 2.83, 1.914, 1.644, 1.222, 1.99, 3.258, 0.282, 3.056, 0.85, 0.85, 0.85, 1.466, 1.466, 0.85, 2.468, 3.258, 2.006, 2.006, 1.99, 1.99, 2.006, 2.006, 2.006, 2.006, 2.006, 1.99, 1.644, 1.222, 2.006, 0.282, 3.056, 0.85, 1.466, 2.874, 2.874, 2.768, 1.658, 2.768, 1.658, 3.5, 2.052, 0.536, 1.292, 1.99, 1.292, 0.454, 2.468, 2.76, 3.056, 3.258, 2.006, 0.454, -0.45, 0.85, 1.466, 1.466, 3.072, 2.874, 0.724, 0.724, 3.072, 2.402, 3.5, 3.5, 3.056, 3.5, 1.466, 2.402, 2.402, 1.466, 1.658, 1.658, 2.768, 2.768, 2.874, 0.724, 0.724, 1.658, 2.768, 2.402, 2.402, 2.402, 2.402, 2.402, 2.402, 2.768, 2.768, 0.724, 3.072, 3.072, 2.874, 2.874, 2.874, 0.724, 1.658, 1.658, 2.874, 0.454, 1.99, 2.83, 2.83, 1.222, 1.222, 1.914, 1.914, 2.83, 1.222, 1.222, 1.222, 1.644, 1.766, 1.222, 1.546, 1.186, 1.186, 1.186, 1.546, 1.546, 1.95, 1.95, 1.222, 1.95, 1.95, 1.766, 1.766, 2.346, 1.222, 1.99, 1.426, 1.426, 2.83, 1.292, 3.258, 0.454, 3.258, 1.292, 1.426, 1.222, 2.83, 1.292, 0.536, 2.052, 0.536, 2.006, 1.222, 1.766, 1.546, 1.546, 1.546, 1.222, 1.222, 1.95, 1.766, 1.766, 1.766, 1.766, 1.766, 1.95, 1.95, 1.95, 1.222, 1.222, 1.222, 1.546, 1.546, 1.546, 1.546, 1.546, 1.546, 1.546, 1.186, 1.186, 1.186, 1.186, 1.186, 1.546, 1.222, 1.222, 1.95, 1.95, 1.95, 1.95, 1.95, 1.222, 1.222, 1.546, 1.222, 1.222, 1.95, 2.346, 1.644, 1.914, 2.346, 1.766, 1.95, 1.766, 1.644, 1.644, 1.914, 1.426, 1.292, 1.292, 2.006, 0.536, 3.258, 0.536, 2.83, 1.644, 2.346, 1.644, 1.222, 1.644, 1.644, 1.914, 1.914, 1.914, 1.644, 1.95, 1.546, 1.95, 1.766, 2.346, 1.914, 1.99, 1.99, 2.006, 2.006, 2.006, 2.956, 1.292, 1.99, 1.914, 2.346, 1.914, 1.222, 1.644, 1.914, 1.914, 1.222, 1.222, 2.83, 2.83, 2.83, 2.956, 2.052, 0.282, 3.056, 0.85, 2.874, 0.724, 0.724, 1.658, 2.768, 2.768, 0.724, 2.402, 0.85, 1.466, 2.402, 2.402, 2.402, -0.45, 4.1, 4.1, 3.056, 3.5, -0.45, 2.468, -0.45, 0.85, 3.5, 2.402, 1.466, 1.466, 1.466, 2.402, 2.402, 0.85, 0.85, -0.45, 3.056, -0.45, 3.5, 0.85, 0.85, 0.85, 0.85, 1.466, 1.466, 2.402, -0.45, 0.454, 1.916, 4.1, 2.468, 3.056, 3.056, 3.056, 3.056, 2.512, 0.282, 0.454, 2.052, 0.454, 0.536, 2.052, 2.052, 2.752, 2.052, 2.468, 0.85, 2.402, 1.466, 2.402, 2.468, 0.536, 2.83, 1.222, 2.006, 1.916, 3.056, 3.5, 3.5, 2.402, 2.402, 1.466, 3.072, 3.072, 3.072, 3.072, 2.874, 0.724, 1.658, 2.768, 2.768, 2.402, 2.402, 1.658, 0.85, 3.056, 3.056, 3.5, 2.402, 3.072, 2.874, 2.874, 0.724, 1.658, 0.724, 3.072, 2.874, 1.466, 3.056, 0.454, 0.536, 3.258, 2.052, 0.454, 1.916, 3.258, 2.006, 2.006, 1.426, 1.99, 1.292, 1.292, 2.956, 1.916, 3.056, 2.402, 1.466, 1.466, 3.072, 3.072, 2.402, -0.45, 0.282, 3.056, 3.5, 2.402, 2.402, 1.466, 2.402, 0.85, 0.282, 2.006, 1.914, 1.644, 1.426, 2.006, 2.956, 3.258, 1.916, 2.468, 0.85, 0.85, 3.056, -0.45, 2.468, 1.916, 0.536, 2.006, 2.006, 2.006, 1.222, 1.644, 1.914, 1.644, 1.766, 1.766, 1.766, 1.766, 1.914, 1.292, 0.536, 4.1, -0.45, -0.45, 3.5, 3.5, 3.5, -0.45, 2.468, 1.916, 2.468, -0.45, 3.5, 0.85, 0.85, 3.5, 3.056, -0.45, 0.85, -0.45, 0.282, 0.454, 2.956, 3.258, 1.292, 1.99, 1.292, 3.258, 1.916, 1.916, 3.258, 0.536, 2.956, 1.426, 1.914, 1.644, 1.426, 0.454, 0.454, 0.454, 2.052, 2.956, 1.426, 1.644, 1.766, 2.346, 1.426, 2.956, 0.282, 3.5, 0.85, 1.466, 3.072, 3.072, 3.072, 1.466, 2.402, -0.45, 0.282, 1.916, 2.468, 3.056, 0.282, 0.282, 2.468, 0.282, 0.282, 2.468, 1.916, 4.1, 3.056, 3.5, 0.85, 2.402, 0.85, 1.466, 1.466, 1.466, 1.466, 2.402, 3.5, 0.454, 2.956, 1.99, 1.222, 1.644, 1.222, 2.83, 1.426, 1.99, 2.052, 2.052, 1.916, 0.282, 4.1, 2.468, 3.056, 2.468, 4.1, 4.1, 1.916, 2.956, 2.83, 1.222, 1.222, 2.346, 2.346, 2.346, 1.644, 1.426, 1.292, 0.454, 4.1, 0.282, 4.1, 2.006, 1.644, 2.346, 1.644, 1.644, 2.346, 1.914, 1.222, 2.83, 1.914, 1.644, 1.914, 1.222, 1.914, 2.346, 1.95, 1.95, 1.766, 1.222, 2.956, 3.258, 0.454, 3.258, 2.006, 1.222, 1.766, 1.95, 1.766, 1.766, 2.346, 1.644, 1.644, 2.346, 1.766, 1.766, 1.766, 1.95, 1.546, 1.186, 1.538, 1.538, 1.538, 1.538, 1.538, 1.186, 1.186, 1.186, 1.186, 1.538, 1.538, 1.538, 1.538, 1.186, 1.186, 1.222, 1.95, 1.95, 1.95, 1.95, 1.95, 1.222, 1.546, 1.186, 1.186, 1.546, 1.95, 2.346, 2.83, 1.426, 1.292, 0.536, 2.052, 3.258, 1.426, 2.006, 2.956, 2.956, 3.258, 3.258, 2.052, 2.052, 0.536, 3.258, 3.258, 0.536, 1.468, 2.346, 1.95, 1.95, 1.95, 2.346, 2.346, 1.644, 1.914, 1.914, 2.83, 2.83, 1.914, 1.222, 1.99, 1.99, 2.006, 3.258, 0.454, 4.1, 2.468, 2.468, 2.468, 4.1, 3.258, 1.99, 1.99, 2.006, 2.956, 2.006, 1.99, 1.99, 1.292, 2.052, 0.282, 0.282, 0.282, 1.916, 1.916, 1.916, 0.454, 4.1, 2.468, 0.85, 1.466, 3.072, 2.874, 3.072, 3.072, 0.724, 2.874, 0.724, 0.724, 0.724, 0.724, 0.724, 1.658, 1.658, 1.658, 0.724, 2.874, 2.874, 3.072, 3.072, 3.072, 3.072, 2.874, 0.724, 2.874, 0.724, 2.874, 0.724, 2.874, 2.874, 3.072, 3.072, 3.072, 2.874, 1.466, 3.5, 2.468, 2.052, 2.006, 2.346, 1.95, 1.766, 2.346, 1.914, 1.99, 0.536, 4.1, -0.45, 3.5, -0.45, 0.454, 1.292, 1.222, 2.346, 1.95, 1.95, 1.95, 1.95, 1.222, 1.222, 1.222, 1.222, 1.95, 1.222, 1.546, 1.222, 1.222, 1.222, 1.766, 2.346, 1.644, 2.83, 2.83, 2.006, 3.258, 0.536, 1.99, 2.83, 1.222, 1.914, 1.914, 1.914, 2.83, 1.99, 2.006, 2.006, 1.426, 1.914, 2.346, 1.95, 1.644, 1.99, 3.258, 2.468, -0.45, 3.5, 3.5, 2.402, 2.402, 3.056, 2.052, 1.99, 1.222, 1.426, 1.426, 1.426, 3.258, 2.468, 2.468, -0.45, -0.45, 3.056, 3.056, -0.45, -0.45, 2.402, 3.072, 0.724, 0.724, 0.724, 0.724, 0.724, 0.724, 0.724, 3.072, -0.45, 1.916, 1.916, 3.056, 2.402, 1.466, 3.072, 2.874, 2.874, 1.466, 3.5, 2.006, 1.644, 1.644, 1.644, 1.222, 1.99, 3.258, 4.1, 2.468, 2.468, 2.468, 0.454, 1.292, 1.222, 1.766, 2.346, 1.644, 2.83, 1.99, 2.83, 2.83, 1.222, 1.426, 2.83, 1.914, 1.644, 2.83, 1.99, 1.292, 0.536, 2.956, 0.454, 0.454, 2.052, 1.916, 4.1, 4.1, 4.1, 0.454, 0.536, 0.536, 2.006, 1.99, 1.426, 1.292, 1.916, 0.282, 1.916, 1.426, 1.914, 1.99, 1.292, 0.536, 2.052, 1.916, 0.454, 3.258, 0.454, 0.454, 3.258, 1.99, 1.222, 2.346, 1.222, 1.99, 3.258, 4.1, 4.1, 2.468, 2.468, 0.282, 4.1, 2.052, 2.83, 1.644, 1.766, 1.766, 1.95, 1.766, 2.346, 2.346, 1.644, 1.914, 1.222, 1.644, 1.95, 1.222, 1.95, 1.766, 1.644, 2.346, 1.766, 1.766, 2.346, 1.766, 1.222, 1.186, 1.538, 1.186, 1.186, 1.546, 1.222, 1.222, 1.95, 1.95, 1.95, 1.95, 1.222, 1.546, 1.186, 1.186, 1.186, 1.186, 1.546, 1.546, 1.222, 1.95, 1.766, 1.766, 1.222, 1.186, 1.186, 1.186, 1.186, 1.546, 1.546, 1.222, 1.222, 1.222, 1.222, 1.222, 1.222, 1.546, 1.186, 1.538, 1.538, 1.538, 1.186, 1.186, 1.546, 1.95, 1.766, 1.644, 2.346, 1.95, 1.222, 1.95, 1.95, 1.95, 1.766, 2.346, 2.346, 1.766, 1.95, 1.95, 1.95, 1.546, 1.186, 1.186, 1.186, 1.222, 1.95, 1.95, 1.95, 1.222, 1.222, 1.222, 1.222, 1.546, 1.186, 1.538, 1.538, 1.538, 1.186, 1.546, 1.222, 1.222, 1.222, 1.546, 1.546, 1.186, 1.538, 1.538, 1.538, 1.538, 1.538, 1.186, 1.546, 1.222, 1.95, 1.222, 1.222, 1.222, 1.546, 1.546, 1.546, 1.546, 1.222, 1.546, 1.546, 1.546, 1.222, 1.222, 1.95, 1.222, 1.546, 1.546, 1.546, 1.186, 1.538, 1.538, 1.538, 1.538, 1.186, 1.186, 1.186, 1.538, 1.538, 1.186, 1.186, 1.186, 1.546, 1.222, 1.222, 1.222, 1.222, 1.222, 1.222, 1.546, 1.546, 1.186, 1.186, 1.186, 1.546, 1.186, 1.546, 1.222, 1.222, 1.222, 1.546, 1.186, 1.538, 1.538, 1.538, 1.538, 1.186, 1.546, 1.546, 1.546, 1.222, 1.222, 1.546, 1.546, 1.546, 1.186, 1.546, 1.186, 1.186, 1.546, 1.95, 2.346, 1.644, 1.914, 1.644, 1.766, 1.95, 1.766, 1.914, 1.914, 1.914, 1.222, 1.222, 2.83, 2.83, 1.914, 1.914, 1.766, 1.766, 1.95, 1.766, 1.766, 1.95, 1.766, 2.346, 1.644, 2.346, 1.766, 1.222, 1.546, 1.186, 1.546, 1.546, 1.546, 1.222, 1.222, 1.222, 1.95, 1.95, 1.95, 1.222, 1.546, 1.186, 1.186, 1.186, 1.546, 1.222, 1.222, 1.222, 1.222, 1.222, 1.222, 1.546, 1.186, 1.538, 1.538, 1.186, 1.186, 1.546, 1.222, 1.95, 1.766, 1.95, 1.95, 1.95, 1.222, 1.546, 1.186, 1.546, 1.222, 1.95, 1.766, 1.766, 2.346, 1.644, 1.914, 2.346, 1.222, 1.546, 1.546, 1.546, 1.95, 1.644, 1.292, 2.052, 0.454, 4.1, 0.454, 0.536, 2.006, 1.426, 2.83, 2.006, 1.99, 2.83, 1.426, 2.956, 3.056, 0.85, 2.402, 0.85, 3.258, 1.222, 1.222, 1.914, 1.222, 1.426, 1.99, 2.956, 0.454, 0.282, 3.056, 1.466, 3.072, 3.072, 1.466, 0.724, 0.724, 0.724, 2.874, 3.072, 2.874, 2.874, 2.874, 2.402, 4.1, 0.536, 0.454, 3.056, 0.85, 0.85, 0.85, 0.85, 2.402, 1.466, 1.466, 1.466, 0.85, 0.85, 0.85, 1.466, 3.072, 2.874, 2.874, 0.724, 0.724, 0.724, 0.724, 0.85, 2.956, 2.83, 1.426, 1.292, 1.916, 0.282, 3.5, 2.402, 2.402, 2.402, 0.85, 0.85, 0.85, 3.5, -0.45, 0.85, 2.402, 1.466, 3.072, 3.072, 2.874, 2.874, 3.06, 3.5, 0.536, 1.99, 1.99, 1.292, 0.536, 2.052, 1.916, 0.282, 2.402, 3.5, 2.468, 4.1, 1.916, 2.956, 2.956, 0.454, 0.282, 0.282, 3.5, 2.402, 3.072, 0.724, 2.768, 1.658, 2.874, 1.466, 3.072, 2.874, 3.072, 2.874, 2.874, 0.724, 0.724, 0.724, 1.466, 0.282, 3.258, 1.99, 1.426, 1.426, 2.006, 1.292, 2.006, 2.956, 1.292, 1.292, 1.99, 1.914, 2.346, 1.95, 1.766, 2.346, 1.914, 1.222, 2.83, 1.426, 1.426, 1.426, 1.426, 1.914, 1.766, 1.95, 1.95, 1.95, 1.766, 1.222, 1.99, 0.536, 0.454, 2.512, 2.468, 4.1, 0.536, 2.956, 2.052, 1.916, 0.282, 2.468, -0.45, 0.85, 2.402, 2.468, 1.916, 3.258, 3.258, 0.454, 2.468, 0.85, 1.466, 3.072, 3.072, 0.85, 2.402, 3.072, 2.402, 3.056, 2.052, 1.99, 3.258, 2.052, 4.1, 3.5, 0.85, 1.466, 2.402, 2.402, 2.402, 3.5, 0.536, 1.426, 2.83, 2.006, 1.292, 1.916, 0.85, 1.466, 3.072, 3.072, 2.874, 2.874, 1.466, 3.5, 3.056, 3.056, -0.45, 3.5, 2.402, 2.402, 1.466, 1.466, 1.466, 2.402, 3.5, -0.45, 3.056, 3.056, 3.5, 0.85, 0.85, 3.056, 2.468, 4.1, 0.454, 2.956, 1.914, 2.346, 1.644, 2.83, 1.292, 3.258, 2.052, 2.052, 0.282, 3.056, 3.056, 0.282, 2.052, 1.292, 1.426, 1.426, 2.83, 1.914, 1.644, 1.914, 2.83, 1.99, 1.932, 1.99, 1.644, 1.914, 1.99, 0.454, 3.056, 3.5, 2.402, 3.072, 3.072, 3.072, 0.85, -0.45, 4.1, 0.536, 3.258, 0.454, 0.282, 3.056, -0.45, 2.468, 2.468, 2.468, 2.468, 2.468, 3.258, 2.006, 2.006, 0.536, 0.282, 3.5, 3.5, 3.056, 0.454, 3.258, 0.536, 2.006, 1.426, 1.644, 2.346, 1.914, 1.222, 2.83, 1.426, 1.99, 1.99, 2.006, 2.006, 1.426, 1.222, 2.83, 2.956, 1.916, 2.468, -0.45, 3.5, 2.402, 1.466, 2.402, 3.5, -0.45, 3.056, 4.1, 4.1, 0.454, 1.916, 0.282, 2.052, 2.052, 2.956, 2.052, 2.052, 2.956, 2.956, 1.99, 1.99, 3.258, 0.282, 3.056, 3.056, -0.45, 0.85, 2.402, 0.85, 3.056, 3.056, 0.282, 4.1, 0.454, 1.99, 2.006, 2.006, 1.99, 1.99, 1.99, 1.426, 1.914, 2.346, 2.346, 2.346, 1.426, 2.052, -0.45, 2.402, 3.072, 1.466, 3.072, 3.072, 3.072, 3.072, 2.322, 0.85, 1.466, 2.402, 1.466, 2.874, 1.658, 1.658, 2.768, 2.768, 2.768, 2.768, 1.658, 3.072, 3.072, 2.874, 1.658, 2.768, 2.768, 2.402, 2.768, 2.768, 2.768, 0.724, 3.5, 3.5, 2.402, 3.5, -0.45, -0.45, -0.45, 3.5, 0.85, 2.402, -0.45, 4.1, 4.1, 3.5, 1.466, 3.072, 2.874, 0.724, 1.658, 2.402, 2.768, 1.658, 0.85, 0.454, 1.426, 1.914, 1.644, 1.644, 1.644, 1.222, 1.292, 1.916, 3.5, 1.466, 3.072, 3.5, 4.1, 2.468, -0.45, -0.45, 1.466, 3.072, 2.874, 2.402, 2.402, 2.402, 2.468, 0.536, 1.99, 2.956, 3.258, 0.454, 0.282, 1.916, 1.916, 3.056, 3.056, 3.5, 3.5, -0.45, 4.1, 3.056, 1.466, 2.874, 1.658, 1.658, 0.724, 1.658, 1.658, 1.658, 0.724, 0.85, 4.1, 0.536, 2.956, 0.454, 2.468, 3.5, 3.5, 3.5, 3.5, -0.45, 0.282, 1.292, 1.426, 2.83, 1.914, 1.914, 1.99, 1.426, 1.99, 2.006, 1.99, 2.83, 1.222, 1.644, 1.766, 1.766, 2.346, 1.222, 2.956, 3.258, 3.258, 3.258, 2.052, 1.916, 0.454, 2.052, 3.258, 3.258, 2.052, 1.916, 4.1, 0.282, 3.056, -0.45, -0.45, 3.056, 0.454, 1.99, 1.644, 1.766, 1.95, 1.644, 1.426, 2.006, 2.956, 2.956, 0.536, 3.258, 3.258, 1.292, 1.222, 1.914, 1.644, 2.346, 2.346, 1.644, 1.644, 1.914, 1.644, 1.644, 2.346, 2.346, 1.766, 1.766, 1.766, 1.95, 1.95, 1.95, 1.95, 1.766, 1.766, 1.766, 1.644, 1.644, 1.914, 1.222, 2.83, 1.426, 2.006, 3.258, 2.052, 1.916, 0.282, 0.282, 2.468, 2.468, 2.468, 2.468, 0.282, 0.282, 0.282, 2.468, 3.056, -0.45, -0.45, 3.056, 0.282, 1.916, 0.454, 2.052, 4.1, 2.468, -0.45, -0.118, -0.45, 3.5, 3.5, 3.5, 3.056, 1.916, 1.292, 1.222, 1.914, 1.644, 1.644, 1.644, 1.914, 1.222, 1.426, 1.292, 3.258, 2.006, 2.83, 1.914, 1.914, 2.83, 2.006, 3.258, 1.934, 0.536, 2.006, 1.292, 1.292, 1.426, 1.644, 1.644, 1.914, 2.83, 1.99, 2.006, 2.006, 1.426, 1.426, 1.99, 1.99, 2.006, 2.83, 2.83, 1.99, 0.536, 2.052, 0.282, 3.056, 3.5, 3.5, -0.45, 2.468, 4.1, 3.258, 0.536, 3.258, 1.916, 2.468, -0.45, 2.402, 0.85, 2.402, 2.402, 2.402, 0.85, -0.45, 0.282, 1.916, 0.454, 1.916, 0.282, 2.468, 0.282, 2.052, 2.006, 1.644, 1.95, 1.222, 1.95, 1.766, 1.644, 1.914, 2.83, 2.83, 1.426, 1.426, 1.426, 1.426, 1.914, 1.644, 1.914, 1.99, 0.536, 0.282, 2.468, 2.468, 3.056, 3.056, 0.282, 4.1, 1.916, 3.258, 2.956, 2.956, 2.956, 2.956, 3.258, 1.916, 0.282, 0.282, 4.1, 4.1, 3.056, 3.5, 1.466, 1.466, 0.724, 1.658, 1.658, 2.768, 2.768, 2.768, 1.658, 0.724, 2.874, 2.402, 0.85, 0.85, 1.466, 2.874, 2.768, 2.402, 2.402, 1.712, 2.402, 2.768, 1.658, 2.874, 3.072, 3.072, 2.874, 0.724, 2.402, 2.402, 1.712, 1.712, 1.712, 2.402, 2.402, 2.768, 2.768, 2.768, 1.712, 1.712, 1.712, 1.712, 1.712, 2.402, 2.402, 0.724, 2.402, -0.45, 4.1, 0.454, 1.916, 0.282, 2.468, -0.45, -0.45, 3.5, -0.45, 1.916, 1.292, 1.358, 1.914, 1.914, 2.83, 2.006, 1.292, 1.292, 2.052, 4.1, 2.468, 0.282, 3.258, 1.292, 2.83, 2.83, 1.426, 2.006, 0.536, 0.282, 0.85, 0.724, 2.874, 2.874, 3.072, 2.402, 0.85, 2.402, 3.072, 2.874, 1.658, 1.658, 0.724, 0.724, 1.658, 2.874, 2.874, 2.402, 3.5, 2.402, 1.466, 2.874, 0.724, 1.658, 2.768, 2.768, 0.724, 3.072, 0.85, 0.282, 2.052, 2.752, 2.956, 1.426, 1.222, 1.914, 1.644, 1.914, 1.222, 1.222, 1.914, 1.914, 1.222, 2.052, -0.45, 3.5, 3.5, 3.056, 2.468, 1.916, 0.536, 2.006, 1.914, 1.95, 1.766, 1.644, 1.222, 0.536, 2.052, 2.052, 2.006, 1.426, 1.426, 1.426, 2.83, 2.006, 0.536, 0.282, 3.056, 3.5, 3.072, 1.466, 3.5, 1.916, 0.454, 2.956, 1.222, 1.644, 1.914, 1.914, 1.426, 2.006, 1.292, 2.956, 3.258, 0.454, 2.052, 2.956, 2.83, 1.644, 1.914, 2.83, 1.99, 0.536, 1.916, 2.468, 3.5, 0.85, 0.85, 0.85, 1.466, 3.072, 3.072, 2.874, 2.768, 2.402, 1.712, 1.712, 1.712, 1.712, 1.712, 2.402, 2.768, 3.072, 3.258, 2.83, 1.914, 1.914, 2.83, 1.99, 2.956, 2.468, 2.402, 0.85, 0.85, 2.402, 2.402, 0.85, 3.072, 2.768, 1.712, 2.654, 2.654, 2.654, 1.712, 2.768, 3.056, 1.292, 1.426, 1.99, 2.052, 0.85, 2.768, 2.402, 2.402, 1.712, 1.712, 2.402, 1.658, 0.724, 1.658, 2.768, 2.768, 2.402, 1.712, 1.712, 1.712, 1.712, 1.712, 1.712, 1.712, 2.768, 0.724, 1.658, 2.402, 1.712, 2.402, 2.402, 2.402, 2.402, 0.724, 1.916, 1.99, 1.644, 1.766, 1.914, 1.426, 0.536, 2.956, 2.052, 3.258, 3.258, 2.956, 1.292, 1.222, 1.766, 1.95, 1.766, 2.346, 2.346, 1.222, 2.83, 1.426, 1.426, 1.222, 1.222, 1.914, 1.644, 1.914, 2.83, 0.536, 4.1, 0.282, 2.468, 4.1, 0.282, 2.052, 0.536, 2.83, 1.914, 1.914, 2.83, 0.536, 0.282, 0.85, 2.402, 1.466, 1.466, 1.466, 1.466, 0.85, 3.5, 3.5, 2.468, 1.916, 2.052, 2.052, 2.052, 0.454, 1.916, 4.1, 4.1, 4.1, 1.916, 4.1, 3.5, 1.466, 2.874, 1.658, 1.658, 0.724, 1.658, 0.724, 3.06, 2.402, 3.056, 0.282, 2.512, 2.402, 2.874, 0.724, 0.724, 0.724, 2.874, 1.466, 3.5, 0.282, 0.536, 1.99, 2.83, 1.99, 0.536, 0.454, 4.1, 4.1, 1.916, 0.454, 2.956, 1.292, 1.292, 2.006, 1.292, 1.292, 2.006, 3.258, 2.052, 0.454, 1.916, 1.916, 1.916, 2.052, 0.536, 1.916, 3.5, 1.466, 3.072, 0.724, 0.724, 0.724, 2.874, 3.072, 0.85, 2.468, 2.468, 4.1, 2.052, 2.052, 2.052, 0.454, 4.1, 2.468, 0.454, 0.536, 0.536, 2.006, 1.292, 1.292, 1.292, 2.052, 0.282, 0.282, 4.1, 0.282, 0.282, 0.282, 4.1, 3.258, 1.292, 2.956, 1.292, 1.292, 2.956, 3.258, 0.454, 2.468, 3.056, 3.056, 2.468, 0.454, 2.052, 0.454, -0.45, 2.402, 1.466, 2.874, 2.768, 1.712, 1.712, 2.402, 2.402, 2.768, 1.658, 2.768, 2.402, 1.712, 1.712, 1.712, 1.712, 2.402, 1.712, 2.402, 2.768, 1.658, 0.724, 2.874, 3.072, 3.072, 0.724, 1.658, 2.768, 2.402, 2.402, 2.402, 2.402, 2.768, 2.768, 2.768, 2.402, 2.402, 2.402, 2.768, 2.768, 2.768, 2.402, 2.768, 1.658, 2.874, 3.072, 2.468, 1.916, 0.536, 2.956, 0.536, 0.454, 0.454, 3.056, 1.466, 1.466, 1.466, 2.402, 2.402, 1.466, 2.874, 1.658, 1.658, 1.658, 0.724, 0.724, 2.874, 2.402, 4.1, 1.99, 1.222, 2.83, 1.292, 1.916, -0.45, 2.402, 0.724, 0.724, 1.658, 0.724, 2.874, 3.072, 2.874, 1.658, 2.768, 2.768, 2.768, 2.768, 2.768, 2.768, 2.768, 1.658, 1.658, 2.874, 3.5, 3.056, 4.1, 2.956, 1.99, 1.99, 2.006, 1.292, 0.536, 1.292, 2.006, 2.052, 0.454, 0.454, 4.1, -0.45, 0.85, 1.466, 3.072, 1.466, 3.5, 4.1, 3.258, 1.99, 2.006, 1.916, 0.85, 1.658, 2.402, 1.712, 1.712, 1.712, 2.402, 1.658, 2.874, 1.658, 2.768, 2.768, 2.402, 2.402, 1.712, 1.712, 1.712, 1.712, 1.712, 1.712, 2.402, 2.768, 1.658, 1.658, 2.768, 1.658, 2.874, 1.466, 3.5, 3.056, 1.916, 0.536, 1.99, 1.99, 0.536, 3.258, 0.536, 1.292, 2.006, 1.292, 0.536, 0.536, 0.536, 0.536, 0.536, 2.006, 2.006, 3.258, 0.454, 0.454, 4.1, 3.056, 2.402, 2.402, 3.5, 2.468, 2.052, 1.292, 1.292, 2.956, 2.956, 3.258, 1.916, 4.1, 3.056, 3.056, 1.916, 3.258, 0.536, 0.536, 3.258, 2.052, 4.1, 2.468, 3.5, -0.45, 4.1, 1.916, 3.258, 0.536, 2.752, 1.292, 2.006, 1.292, 1.292, 1.292, 0.536, 1.916, -0.45, -0.45, 3.5, -0.45, 0.282, 0.282, -0.45, 0.85, 3.072, 1.658, 1.658, 1.658, 0.724, 1.658, 0.724, 2.874, 2.402, 2.402, 3.5, 2.468, 2.468, 3.056, 3.056, -0.45, 3.5, 0.282, 1.916, 2.956, 1.426, 2.346, 2.346, 1.644, 1.914, 1.914, 2.83, 1.426, 1.426, 1.426, 1.426, 1.222, 1.914, 1.914, 1.222, 2.83, 1.99, 1.292, 0.454, -0.45, 3.5, 2.402, 2.402, 0.85, 0.85, 3.5, 2.468, 0.454, 1.916, 3.056, 3.056, -0.45, -0.45, -0.45, 3.5, -0.45, 2.468, 0.454, 3.258, 0.282, 3.5, -0.45, 2.468, 3.056, 3.056, 3.5, -0.45, 4.1, 0.536, 1.914, 2.346, 1.644, 2.83, 2.006, 0.536, 4.1, 3.5, 2.402, 1.466, 2.874, 0.724, 2.874, 1.658, 0.724, 2.874, 0.724, 1.658, 1.658, 2.874, 0.724, 0.724, 2.402, 2.956, 1.222, 1.644, 1.644, 2.83, 0.454, -0.45, 3.072, 2.768, 2.402, 2.768, 1.658, 1.466, 3.5, -0.45, 0.282, 0.536, 1.99, 1.426, 1.99, 2.956, 3.258, 0.536, 1.292, 1.99, 1.222, 1.644, 1.914, 1.292, 2.956, 0.536, 0.536, 2.052, 4.1, 1.916, 1.916, 2.052, 0.536, 2.956, 1.424, 2.956, 3.258, 1.916, 3.5, -0.45, -0.45, 0.85, 3.5, 2.468, 1.292, 1.222, 2.346, 1.644, 1.644, 1.914, 1.914, 1.222, 2.83, 1.222, 1.644, 2.346, 1.766, 1.644, 1.222, 2.83, 1.99, 2.006, 0.536, 2.052, 2.956, 1.99, 1.426, 2.83, 1.426, 2.83, 2.006, 1.916, 3.5, 3.072, 2.874, 0.724, 0.724, 2.874, 3.072, 1.466, 1.466, 0.85, 2.402, 3.072, 0.724, 2.874, 2.874, 0.724, 2.768, 1.658, 2.874, -0.45, 1.916, 0.536, 0.536, 2.052, 4.1, 4.1, 4.1, 0.282, 2.468, 0.282, 0.536, 2.006, 1.99, 1.426, 2.006, 0.536, 3.258, 0.454, 2.052, 2.052, 0.454, 0.454, 2.052, 0.536, 1.426, 1.222, 1.426, 2.006, 2.956, 2.052, 3.258, 2.052, 0.454, 0.454, 1.916, 2.052, 2.052, 0.454, 3.056, 2.402, 2.874, 1.658, 2.402, 1.712, 2.402, 2.768, 2.768, 1.658, 0.724, 1.658, 1.658, 2.402, 1.712, 2.654, 2.402, 2.402, 2.768, 0.724, 2.874, 1.466, 2.402, 3.5, 3.5, 2.874, 2.768, 2.402, 1.712, 1.712, 1.712, 1.712, 2.768, 0.724, 0.724, 1.658, 2.402, 2.402, 2.654, 2.654, 2.654, 2.458, 2.458, 2.654, 2.654, 1.712, 1.712, 2.402, 1.658, 1.466, 0.85, 3.072, 2.874, 3.072, 0.85, 0.85, 1.466, 1.466, 2.874, 2.768, 2.402, 1.712, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 2.402, 3.072, -0.45, 3.056, 0.282, 2.052, 0.572, -0.45, 2.402, 1.466, 0.724, 1.658, 2.768, 1.658, 0.724, 0.724, 0.724, 0.724, 1.658, 2.768, 2.402, 2.768, 1.658, 0.724, 0.724, 1.466, 2.402, 1.466, 0.724, 0.724, 0.724, 1.658, 2.874, 0.724, 0.724, 1.658, 1.658, 0.85, 3.258, 1.222, 1.644, 2.83, 1.99, 2.956, 3.258, 1.916, -0.45, 1.466, 1.466, 0.85, -0.45, 0.282, 0.282, 2.468, -0.45, 2.468, 4.1, 1.916, 0.536, 2.006, 2.83, 1.644, 2.346, 1.644, 1.426, 3.258, 3.056, 2.402, 2.768, 1.712, 2.654, 1.712, 2.402, 2.768, 1.466, 0.454, 2.956, 1.99, 1.99, 2.006, 2.006, 2.006, 2.006, 1.426, 2.83, 1.292, 1.916, 0.85, 2.874, 0.724, 2.402, 2.402, 1.682, 2.614, 2.614, 2.614, 2.348, 2.766, 2.348, 2.752, -0.222, 2.33, 0.368, 0.422, 1.532, 1.794, 1.794, 1.48, 1.532, 0.48, 3.314, 2.392, 2.752, 0.8, 1.65, 2.766, 1.682, 2.614, 2.614, 2.614, 1.682, 1.682, 2.614, 2.614, 2.614, 2.614, 1.65, 1.65, 2.348, 2.348, 2.766, 2.348, 2.766, 1.65, 2.348, 2.348, 1.682, 1.682, 2.614, 2.614, 2.396, 2.396, 2.396, 2.396, 2.614, 2.614, 1.682, 1.682, 1.682, 1.682, 1.682, 1.682, 1.682, 0.8, 1.566, 3.314, 3.734, 0.368, 3.494, 0.422, 2.758, 2.758, 0.422, 3.494, 0.368, 0.368, 1.984, 0.422, 1.532, 2.118, 1.48, 2.758, 2.05, 2.954, 2.392, 1.566, 2.752, 2.392, 0.48, 0.368, 2.758, 1.532, 1.794, 2.774, 1.48, 0.422, 3.314, 1.65, 2.348, 2.348, 1.65, 0.8, 2.752, 2.392, 2.954, 2.05, 2.05, 0.48, 2.33, 0.48, 4.04, 0.48, 2.392, 1.566, 0.908, 4.04, 2.118, 1.146, 1.146, 2.774, 1.48, 1.794, 1.794, 1.532, 0.422, 2.758, 2.118, 1.794, 1.794, 1.532, 3.494, 0.368, 0.48, -0.222, 0.908, 2.954, 2.05, 0.422, 1.532, 1.532, 2.118, 3.494, 3.314, 2.752, 2.766, 2.348, 1.682, 1.682, 2.614, 1.682, 0.8, 2.392, 4.04, 3.494, 2.758, 2.758, 1.532, 1.532, 2.758, 2.758, 2.758, 0.368, 2.954, -0.222, 0.908, 2.392, 1.65, 2.766, 2.348, 1.682, 2.614, 2.614, 2.602, 2.614, 2.614, 2.614, 2.396, 2.614, 2.614, 2.614, 2.396, 2.396, 2.396, 2.396, 2.614, 2.614, 2.614, 2.614, 2.614, 1.682, 1.682, 1.682, 2.614, 2.614, 2.614, 2.614, 2.614, 2.614, 2.614, 1.682, 2.348, 0.8, 1.566, 0.908, 2.954, 0.368, 3.494, 3.494, 1.532, 1.794, 1.48, 2.118, 1.48, 2.774, 2.774, 2.118, 0.422, 0.368, 0.48, 4.04, -0.222, -0.222, -0.222, 2.33, 4.04, 4.04, -0.222, 3.314, 1.566, 1.566, 3.022, 0.908, 2.33, 4.04, 0.368, 2.758, 0.422, 2.758, 1.984, 0.48, 2.954, -0.222, 2.954, 2.954, 2.33, 1.984, 2.118, 1.48, 1.146, 1.146, 1.146, 1.146, 2.774, 1.532, 2.758, 0.422, 2.118, 2.774, 1.94, 1.638, 2.336, 2.336, 1.638, 1.146, 1.48, 0.422, 0.368, 0.48, 0.48, 2.954, 2.33, 0.368, 0.368, 0.48, -0.222, -0.222, -0.222, 2.954, 2.33, 2.954, -0.222, 0.908, 3.314, 3.314, 2.954, 2.33, -0.222, 0.908, 1.65, 2.348, 2.348, 2.348, 2.348, 2.348, 2.766, 0.8, 0.8, 2.752, 0.8, 0.8, 0.8, 0.8, 1.69, 2.33, 0.368, 0.368, 4.04, 4.04, 3.494, 0.422, 4.04, 0.908, 1.566, 0.8, 3.022, 1.566, 1.566, 2.33, 1.984, 0.422, 3.494, 3.494, 1.532, 2.758, 3.494, 0.422, 1.532, 0.422, 0.422, 0.368, 0.48, 3.314, 3.314, 0.368, 3.494, 3.314, 3.022, 3.022, 1.566, 2.954, 0.48, 4.04, 2.05, 2.05, 2.05, 1.984, 3.494, 0.368, 4.04, 2.33, 0.908, 3.022, 1.566, 0.48, 2.33, 2.954, 0.48, 2.954, 3.022, 2.766, 1.682, 2.348, 1.682, 1.682, 2.614, 1.682, 1.682, 1.682, 2.766, 1.65, 0.8, 2.752, 1.566, 1.566, 1.566, 1.566, 1.566, 2.392, 1.566, 3.022, 2.392, 3.314, 2.954, -0.222, -0.222, 2.392, 1.566, 3.022, 3.022, 0.908, 4.04, 4.04, 3.494, 0.422, 3.494, 0.368, 2.33, 2.33, 4.04, 2.954, 3.314, 0.908, 3.314, 0.48, 1.984, 0.422, 0.422, 1.984, 2.05, 0.48, 2.33, 4.04, -0.222, 3.314, -0.222, 3.314, 2.33, 0.48, 2.954, 2.33, 2.33, 2.954, 3.314, 2.33, 2.954, 2.954, 0.908, 2.598, 0.908, 2.33, 3.314, 1.566, 3.314, -0.222, 2.392, 2.752, 2.752, 2.392, 3.314, 2.954, 4.04, 4.04, 2.33, 3.114, 3.314, -0.222, 3.314, 3.314, 3.314, 2.05, 1.984, 1.984, 4.04, 2.954, 0.908, 3.022, 2.752, 0.8, 1.65, 1.65, 2.766, 1.65, 1.65, 1.65, 1.65, 0.8, 0.8, 1.65, 2.766, 2.766, 2.766, 1.65, 0.8, 0.8, 0.8, 2.766, 2.348, 2.348, 2.766, 1.682, 1.682, 2.614, 2.614, 2.614, 2.614, 2.614, 2.614, 2.614, 2.614, 2.348, 2.348, 2.766, 2.348, 2.294, 1.682, 2.348, 2.348, 2.752, 0.8, 1.65, 1.65, 1.682, 2.614, 2.614, 2.614, 2.396, 2.396, 2.396, 2.396, 2.396, 2.396, 2.396, 2.396, 2.396, 2.396, 2.396, 2.396, 2.396, 2.396, 2.396, 2.614, 2.614, 2.614, 1.682, 0.8, 2.348, 1.682, 2.614, 2.396, 2.396, 2.614, 2.614, 2.396, 2.396, 2.614, 2.614, 2.614, 2.614, 2.614, 2.614, 2.614, 2.614, 2.614, 2.614, 2.614, 2.614, 2.614, 1.682, 2.348, 2.766, 2.766, 2.348, 2.348, 2.766, 1.65, 2.752, 2.392, 2.696, 0.48, 2.05, 4.04, 4.04, 0.48, 2.954, 2.954, 2.33, 0.48, 0.48, 4.04, 0.48, 0.48, 2.33, 0.48, 2.954, -0.222, 0.48, 2.33, 3.022, 2.766, 2.766, 2.348, 2.766, 1.65, 1.65, 0.8, 1.65, 2.766, 1.65, 0.8, 3.022, 2.954, 0.368, 1.532, 1.48, 1.146, 1.146, 1.146, 1.794, 3.494, 3.314, 0.8, 2.348, 2.766, 2.766, 2.766, 2.348, 2.766, 2.766, 0.8, 1.566, 3.022, 0.8, 2.752, 0.8, 0.8, 2.766, 0.8, 2.752, -0.222, 0.48, 2.954, -0.222, 3.022, 2.766, 1.682, 1.682, 1.682, 1.682, 1.682, 2.348, 2.348, 2.348, 2.348, 1.682, 2.766, 2.752, 3.314, 2.33, 2.05, 0.422, 1.532, 1.794, 2.118, 1.794, 2.118, 0.368, 1.566, 0.8, 0.8, 2.766, 2.766, 1.65, 1.65, 1.65, 0.8, 0.8, 3.022, 2.752, 2.752, 1.65, 1.566, -0.222, 3.314, 0.908, -0.222, 2.33, 2.954, 2.392, 3.022, 2.752, 0.8, 2.766, 2.766, 2.348, 1.682, 1.682, 1.682, 2.348, 2.348, 2.348, 1.65, 2.752, 1.566, 2.392, 3.022, 2.392, 1.566, 3.022, 3.314, 4.04, 2.954, -0.222, -0.222, 3.314, 3.314, -0.222, 3.314, 1.566, 1.566, 3.022, 0.908, 2.954, 2.954, 0.908, 2.392, 0.908, 0.908, 0.908, 2.33, 0.48, 2.33, 0.908, 0.908, 2.954, 2.954, 0.368, 1.532, 1.48, 1.794, 1.532, 2.758, 1.984, 0.368, 2.05, 2.05, 2.05, 3.494, 3.494, 1.532, 1.794, 1.48, 1.794, 2.774, 2.774, 1.94, 1.94, 1.638, 2.336, 1.638, 1.638, 2.336, 2.336, 1.638, 2.774, 1.794, 2.758, 3.494, 0.368, 1.984, 0.422, 2.758, 2.758, 2.118, 1.48, 1.146, 1.94, 1.94, 1.94, 1.638, 2.336, 2.336, 1.638, 1.638, 1.638, 1.638, 1.638, 1.818, 2.336, 2.774, 2.118, 1.532, 2.758, 2.758, 2.118, 1.794, 1.794, 2.774, 2.774, 1.94, 1.94, 1.638, 1.638, 2.336, 2.336, 1.774, 1.818, 1.07, 1.07, 1.724, 1.724, 1.07, 1.774, 2.774, 0.422, 2.05, 2.954, 2.392, 1.566, 3.314, -0.222, 2.33, 3.494, 1.794, 1.146, 1.638, 1.774, 1.818, 1.818, 1.724, 1.724, 1.214, 1.214, 1.724, 1.818, 1.638, 2.758, 4.04, 0.908, 3.022, 3.022, 3.022, 1.566, 2.33, 3.494, 1.532, 1.48, 1.146, 1.94, 2.336, 1.818, 1.818, 1.07, 1.724, 1.214, 1.214, 1.724, 1.07, 2.336, 2.118, 4.04, 3.314, 1.566, 2.752, 0.8, 3.022, 0.908, 2.33, 2.33, 0.48, 0.368, 2.758, 2.118, 1.48, 1.146, 1.94, 2.336, 1.774, 1.774, 1.774, 1.638, 1.794, 0.422, 0.48, 0.908, 3.314, 1.566, 3.022, 2.752, 1.65, 0.8, 0.8, 0.8, 2.752, 3.314, 2.05, 0.422, 2.118, 1.94, 1.774, 1.818, 1.818, 1.774, 2.336, 2.774, 1.532, 0.422, 1.984, 0.48, 2.33, 2.33, 0.908, 2.392, 0.908, 2.33, 0.368, 3.494, 2.758, 1.532, 1.794, 1.794, 2.118, 2.118, 2.774, 1.94, 1.818, 1.07, 1.07, 1.774, 1.638, 1.794, 2.758, 2.05, 2.954, 1.566, 2.752, 2.752, 2.752, 2.752, 3.022, 2.392, 0.908, 2.954, 0.48, -0.222, 2.05, 1.984, 1.532, 2.758, 2.758, 1.794, 1.48, 1.48, 1.48, 1.794, 1.48, 0.422, 4.04, 2.392, 3.022, 2.752, 0.8, 2.392, -0.222, 2.33, 0.368, 1.532, 1.94, 1.774, 1.818, 1.07, 1.07, 1.07, 1.724, 1.214, 1.214, 1.724, 1.724, 1.774, 1.638, 0.422, -0.222, 3.022, 0.8, 0.8, 0.8, 2.752, 1.566, 2.374, 2.05, 2.758, 1.48, 1.146, 1.146, 1.146, 2.336, 2.336, 1.818, 1.774, 1.774, 1.774, 1.774, 1.638, 1.146, 1.532, 0.368, 2.954, 3.314, 3.314, 0.908, 2.392, 1.566, 0.908, 0.908, 0.908, 1.566, 2.392, 0.908, 2.954, 2.05, 2.118, 1.94, 1.774, 1.818, 1.818, 1.818, 1.818, 1.774, 1.94, 1.48, 2.758, 0.48, -0.222, 3.314, 0.908, 3.314, 3.314, 0.908, 3.314, 2.954, 2.33, 0.48, 0.368, 1.984, 0.368, 1.984, 0.422, 2.118, 2.774, 1.146, 1.146, 1.94, 1.822, 1.984, 0.48, 2.954, -0.222, 2.954, 2.954, 2.954, 2.954, 4.04, 2.05, 2.758, 1.48, 2.774, 2.774, 1.638, 1.818, 1.07, 1.724, 1.724, 1.724, 1.07, 1.774, 2.336, 2.774, 0.422, 2.33, 3.314, 3.314, 0.908, 3.314, -0.222, 2.05, 1.532, 1.94, 1.774, 1.818, 1.818, 1.07, 1.214, 1.742, 1.742, 1.85, 1.742, 1.742, 1.214, 1.724, 1.774, 2.774, 0.422, 2.05, 2.954, 2.954, 2.954, 2.954, 2.954, 2.05, 2.118, 2.336, 1.818, 1.774, 1.638, 2.336, 1.818, 1.724, 1.214, 1.742, 1.742, 1.742, 1.214, 1.724, 1.818, 1.94, 2.118, 3.494, 2.05, 4.04, 4.04, 4.04, 3.494, 2.118, 1.638, 1.818, 1.724, 1.214, 1.742, 1.742, 1.742, 1.85, 1.85, 1.85, 1.85, 1.85, 1.742, 1.214, 1.724, 1.07, 1.638, 1.794, 0.422, 0.368, 4.04, 0.48, 0.368, 2.118, 2.774, 2.336, 1.724, 1.724, 1.214, 1.742, 1.85, 1.85, 1.85, 1.85, 1.85, 1.742, 1.214, 1.724, 1.07, 1.818, 1.638, 1.94, 2.774, 2.118, 1.532, 3.494, 1.984, 1.984, 1.984, 1.984, 1.532, 1.48, 1.638, 1.818, 1.724, 1.214, 1.742, 1.85, 1.85, 1.742, 1.742, 1.742, 1.742, 1.724, 1.07, 1.638, 2.774, 2.758, 2.758, 2.118, 1.794, 2.118, 0.422, 2.118, 1.794, 1.48, 1.774, 1.724, 1.724, 1.724, 1.774, 1.774, 1.07, 1.818, 1.774, 1.94, 1.638, 1.48, 1.984, -0.222, 3.314, 0.908, 1.566, 2.752, 2.752, 2.752, 3.022, 1.566, 1.566, 1.566, 3.314, 4.04, 1.532, 1.146, 2.336, 1.638, 1.794, 1.532, 0.422, 0.422, 2.05, 2.33, 3.314, 0.908, 2.392, 1.566, 1.566, 3.314, 3.494, 1.794, 1.146, 1.638, 2.336, 1.774, 1.774, 1.774, 1.774, 1.818, 1.818, 1.818, 1.07, 1.724, 1.07, 1.818, 1.146, 4.04, 1.566, 1.566, 3.022, 2.752, 0.8, 0.8, 0.8, 2.752, 1.566, -0.222, 3.494, 1.532, 1.146, 1.774, 1.07, 1.724, 1.742, 1.742, 1.742, 1.742, 1.742, 1.214, 1.07, 1.638, 1.794, 2.05, -0.222, 0.908, 2.33, 2.05, 2.05, 3.494, 0.422, 1.794, 1.638, 1.818, 1.214, 1.742, 1.742, 1.742, 1.742, 1.742, 1.742, 1.742, 1.742, 1.742, 1.214, 1.724, 1.774, 2.118, 0.368, 4.04, 2.33, 2.954, 2.33, 0.48, 3.494, 1.794, 2.774, 1.94, 1.774, 1.818, 1.818, 1.818, 1.07, 1.818, 1.818, 1.774, 1.774, 1.774, 2.336, 1.146, 1.532, 2.758, 3.494, 2.05, 2.05, 1.532, 2.774, 1.146, 1.146, 1.94, 2.336, 1.818, 1.07, 1.724, 1.214, 1.724, 1.07, 2.336, 2.774, 2.118, 1.532, 1.532, 2.758, 3.494, 2.05, 4.04, 0.48, 2.33, 0.908, 0.908, 0.908, 2.392, 2.392, 2.392, 2.392, 2.392, 2.392, 0.908, 2.954, 2.05, 3.494, 2.118, 1.48, 1.48, 1.48, 1.146, 1.48, 2.758, 0.504, 0.48, 2.33, 0.48, 2.33, 2.954, -0.222, -0.222, 4.04, 0.368, 3.494, 2.758, 2.118, 1.146, 1.94, 2.336, 1.638, 1.638, 2.336, 1.774, 1.774, 1.818, 1.818, 2.336, 1.146, 2.118, 2.758, 2.758, 0.422, 0.422, 1.532, 1.794, 1.94, 2.336, 1.774, 1.94, 1.638, 1.818, 1.818, 1.724, 1.07, 1.724, 1.724, 1.724, 1.724, 1.214, 1.724, 1.818, 1.638, 1.146, 2.774, 2.774, 1.146, 1.94, 2.336, 1.774, 1.818, 1.774, 1.818, 1.818, 1.07, 1.07, 1.724, 1.724, 1.724, 1.724, 1.724, 1.07, 1.774, 2.336, 2.336, 1.146, 1.794, 2.118, 1.532, 2.758, 0.422, 0.422, 1.794, 1.146, 1.638, 1.638, 1.146, 1.794, 1.794, 1.48, 2.774, 1.94, 1.818, 1.724, 1.214, 1.214, 1.724, 1.724, 1.818, 1.638, 2.774, 2.118, 1.48, 1.48, 1.794, 1.48, 1.638, 1.774, 1.774, 1.774, 1.774, 2.336, 2.336, 1.818, 1.07, 1.07, 1.07, 1.818, 1.818, 1.774, 2.336, 2.272, 1.638, 2.336, 1.638, 1.48, 1.532, 2.758, 0.422, 0.422, 2.758, 1.532, 1.794, 2.118, 1.48, 2.774, 1.94, 1.638, 2.336, 1.818, 1.07, 1.07, 1.07, 1.07, 1.774, 2.336, 1.94, 1.794, 0.422, 0.368, 4.04, 2.954, -0.222, -0.222, -0.222, 0.48, 4.04, 0.368, 2.758, 1.794, 2.774, 2.336, 1.07, 1.214, 1.214, 1.214, 1.724, 1.724, 1.214, 1.724, 1.07, 2.336, 1.146, 2.758, 1.984, 0.368, 1.984, 0.422, 2.118, 1.794, 2.118, 1.146, 1.774, 1.818, 1.724, 1.742, 1.742, 1.742, 1.742, 1.742, 1.214, 1.724, 1.724, 1.724, 1.818, 2.336, 1.94, 1.794, 1.984, 2.758, 1.794, 1.146, 1.638, 1.638, 1.638, 2.336, 1.818, 1.07, 1.724, 1.214, 1.742, 1.742, 1.742, 1.85, 1.85, 1.742, 1.742, 1.724, 1.07, 2.336, 2.774, 2.758, 1.984, 0.422, 2.758, 1.794, 1.48, 1.48, 1.146, 1.48, 1.146, 2.336, 1.07, 1.818, 1.07, 1.214, 1.724, 1.724, 1.724, 1.724, 1.214, 1.742, 1.214, 1.07, 1.774, 1.638, 1.94, 2.774, 1.146, 1.638, 1.774, 1.818, 1.818, 1.07, 1.676, 1.214, 1.214, 1.742, 1.85, 1.85, 1.85, 1.85, 1.85, 1.742, 1.742, 1.724, 1.774, 2.774, 1.532, 3.366, 0.368, 2.22, 0.48, 4.04, 0.48, 4.04, 4.04, 3.494, 1.794, 2.336, 1.724, 1.742, 1.742, 1.85, 1.85, 1.85, 1.85, 1.742, 1.214, 1.214, 1.724, 1.07, 1.818, 2.336, 2.774, 2.118, 3.494, 0.368, 1.984, 3.494, 2.758, 1.794, 1.94, 1.07, 1.742, 1.85, 1.85, 1.85, 1.85, 1.85, 1.85, 1.742, 1.214, 1.724, 1.07, 1.774, 1.146, 1.532, 2.758, 1.532, 2.758, 3.494, 3.494, 2.05, 4.04, 2.05, 2.05, 0.422, 1.48, 1.146, 2.336, 1.818, 1.818, 1.07, 1.07, 1.724, 1.214, 1.214, 1.214, 1.724, 1.724, 1.818, 1.774, 2.336, 2.336, 1.638, 1.94, 1.94, 1.94, 1.638, 2.336, 1.818, 1.07, 1.724, 1.214, 1.742, 1.742, 1.85, 1.85, 1.85, 1.85, 1.214, 1.124, 1.94, 1.794, 2.758, 0.422, 0.422, 0.422, 0.422, 0.422, 2.758, 1.48, 1.774, 1.07, 1.214, 1.742, 1.742, 1.85, 1.85, 1.85, 1.85, 1.85, 1.85, 1.742, 1.724, 1.774, 1.146, 2.758, 1.984, 2.05, 1.532, 1.794, 1.94, 1.638, 1.638, 1.638, 1.638, 1.638, 1.774, 1.774, 1.774, 1.07, 1.214, 1.742, 1.742, 1.214, 1.214, 1.724, 1.818, 1.818, 2.336, 1.638, 1.532, 2.05, 4.04, 4.04, 0.48, 4.04, 0.368, 2.758, 1.794, 2.774, 1.638, 2.336, 2.336, 1.774, 1.774, 1.07, 1.724, 1.724, 1.07, 1.774, 1.638, 1.638, 1.638, 1.94, 2.774, 1.48, 1.794, 1.794, 1.794, 1.48, 1.94, 1.638, 1.774, 1.774, 1.818, 1.07, 1.724, 1.214, 1.742, 1.742, 1.742, 1.742, 1.742, 1.742, 1.214, 1.07, 2.336, 1.48, 2.758, 3.494, 3.494, 3.494, 3.494, 1.532, 1.48, 2.774, 1.638, 1.774, 1.818, 1.07, 1.07, 1.724, 1.742, 1.742, 1.214, 1.676, 1.724, 1.214, 1.724, 1.818, 1.94, 1.532, 0.368, 2.05, 4.04, 0.48, 2.33, 4.04, 0.422, 1.794, 2.774, 1.638, 1.818, 1.724, 1.214, 1.742, 1.742, 1.742, 1.742, 1.742, 1.742, 1.214, 1.724, 1.07, 1.774, 2.336, 1.774, 1.94, 1.638, 2.336, 2.336, 1.774, 2.336, 1.638, 2.336, 1.774, 1.07, 1.724, 1.214, 1.214, 1.742, 1.742, 1.85, 1.85, 1.85, 1.85, 1.742, 1.742, 1.724, 1.07, 1.818, 1.774, 1.638, 2.336, 1.774, 1.818, 1.818, 1.818, 1.07, 1.724, 1.214, 1.742, 1.85, 1.85, 1.85, 1.85, -0.714, -0.714, -0.714, 1.85, 1.214, 1.07, 1.638, 1.48, 1.532, 3.494, 3.494, 3.494, 0.422, 1.794, 2.774, 1.146, 1.774, 1.774, 1.818, 1.07, 1.07, 1.214, 1.742, 1.742, 1.742, 1.742, 1.742, 1.724, 1.818, 2.336, 1.146, 2.774, 2.118, 3.494, 1.984, 2.05, 4.04, 4.04, 1.984, 2.118, 2.336, 1.07, 1.214, 1.214, 1.742, 1.742, 1.85, 1.85, 1.85, 1.742, 1.742, 1.214, 1.724, 1.07, 2.336, 1.146, 2.774, 2.774, 1.794, 1.48, 1.48, 1.48, 1.94, 1.774, 1.724, 1.214, 1.742, 1.742, 1.85, 1.85, -0.714, -0.714, 1.85, 1.85, 1.85, 1.742, 1.214, 1.07, 2.336, 1.94, 1.94, 2.774, 2.774, 1.146, 1.146, 1.146, 1.94, 2.336, 1.818, 1.214, 1.742, 1.742, 1.85, 1.85, 1.85, 1.85, 1.742, 1.214, 1.724, 1.07, 1.818, 1.774, 1.774, 2.336, 1.146, 2.774, 2.774, 2.774, 1.48, 1.794, 1.532, 2.118, 1.48, 2.774, 2.774, 1.146, 1.774, 1.07, 1.07, 1.724, 1.214, 1.214, 1.214, 1.214, 1.214, 1.724, 1.818, 1.774, 2.336, 2.336, 1.638, 1.638, 1.638, 1.638, 1.638, 1.638, 2.336, 1.774, 1.07, 1.724, 1.07, 1.818, 1.07, 1.724, 1.07, 1.07, 1.774, 1.07, 1.818, 1.818, 1.774, 1.94, 1.146, 1.94, 1.146, 2.774, 1.48, 2.774, 1.146, 2.336, 1.818, 1.818, 1.07, 1.214, 1.214, 1.742, 1.742, 1.85, 1.85, 1.85, 1.742, 1.742, 1.214, 1.07, 1.146, 2.118, 2.758, 3.494, 3.494, 1.532, 1.48, 1.94, 1.638, 2.336, 2.336, 1.638, 1.638, 1.774, 1.724, 1.214, 1.214, 1.214, 1.742, 1.742, 1.214, 1.214, 1.214, 1.818, 2.774, 1.532, 0.422, 3.494, 0.368, 3.494, 2.118, 1.94, 1.94, 1.146, 2.336, 1.774, 1.07, 1.07, 1.724, 1.214, 1.742, 1.742, 1.742, 1.742, 1.742, 1.742, 1.214, 1.724, 1.774, 1.94, 2.118, 0.422, 3.494, 3.494, 2.758, 1.794, 1.48, 1.146, 1.638, 2.336, 2.336, 1.818, 1.214, 1.214, 1.742, 1.742, 1.742, 1.742, 1.214, 1.214, 1.07, 2.336, 2.774, 1.48, 1.532, 0.422, 2.758, 0.422, 2.758, 1.48, 1.146, 1.94, 1.774, 1.818, 1.774, 1.07, 1.214, 1.742, 1.742, 1.742, 1.742, 1.742, 1.742, 1.214, 1.07, 1.638, 1.532, 0.48, 2.33, 2.954, -0.222, 3.314, 2.392, 2.392, 2.392, 2.392, 0.908, -0.222, 2.954, 2.05, 1.984, 1.532, 1.794, 1.146, 1.146, 1.94, 1.94, 1.94, 1.94, 2.336, 1.94, 1.146, 1.48, 2.118, 0.422, 3.494, 1.984, 1.984, 0.422, 2.118, 1.48, 1.48, 1.146, 1.638, 2.336, 2.336, 1.774, 1.07, 1.724, 1.724, 1.214, 1.214, 1.724, 1.818, 1.146, 3.494, 0.48, -0.222, 2.954, 0.48, 4.04, 0.368, 0.422, 2.118, 2.774, 1.94, 2.336, 1.818, 1.07, 1.724, 1.742, 1.742, 1.85, 1.742, 1.742, 1.724, 2.336, 1.146, 2.758, 3.494, 2.05, 4.04, 2.33, 2.954, 4.04, 2.758, 2.774, 1.638, 1.774, 1.818, 1.818, 1.818, 1.724, 1.724, 1.214, 1.214, 1.724, 1.818, 1.774, 1.774, 1.818, 1.774, 1.94, 2.118, 3.494, 2.05, 4.04, 2.05, 2.05, 2.05, 3.494, 1.532, 1.48, 1.146, 1.94, 2.336, 1.818, 1.07, 1.07, 1.724, 1.214, 1.214, 1.214, 1.214, 1.214, 1.07, 1.818, 1.94, 1.48, 1.532, 2.118, 1.794, 1.794, 1.794, 1.146, 1.146, 1.638, 2.336, 1.818, 1.07, 1.724, 1.214, 1.742, 1.742, 1.85, 1.85, 1.85, 1.742, 1.724, 1.638, 1.794, 0.422, 4.04, 3.314, 0.908, 2.392, 2.392, 2.392, 0.908, 0.908, 2.33, 2.118, 2.336, 1.07, 1.214, 1.214, 1.214, 1.214, 1.214, 1.724, 1.774, 2.336, 2.336, 1.146, 1.532, 2.05, 3.314, 0.908, 0.908, 0.908, 2.954, 0.48, 2.33, 2.33, 2.05, 1.984, 2.05, 0.504, 0.368, 0.422, 1.48, 1.794, 2.118, 1.532, 1.532, 1.48, 1.146, 1.94, 1.94, 1.48, 2.118, 1.532, 0.422, 1.984, 2.05, 0.48, 0.48, -0.222, 2.954, 1.984, 2.758, 1.146, 1.774, 1.724, 1.214, 1.742, 1.742, 1.85, 1.85, 1.742, 1.07, 2.336, 2.774, 0.422, 2.05, 4.04, 0.48, 2.33, 2.33, 1.984, 2.758, 1.532, 1.794, 1.774, 1.07, 1.724, 1.742, 1.742, 1.85, 1.85, 1.85, 1.742, 1.742, 1.742, 1.724, 1.07, 1.818, 1.146, 1.532, 2.05, 2.05, 1.984, 0.368, 2.05, 3.494, 2.774, 2.336, 1.818, 1.07, 1.724, 1.214, 1.742, 1.85, 1.85, 1.85, 1.85, 1.742, 1.742, 1.742, 1.742, 1.07, 2.336, 1.48, 3.494, 0.368, 2.05, 0.368, 1.532, 1.794, 2.118, 1.532, 2.118, 1.94, 1.818, 1.214, 1.742, 1.85, 1.85, 1.85, 1.85, 1.85, 1.742, 1.724, 1.774, 1.48, 1.48, 2.118, 2.758, 3.494, 1.532, 1.794, 1.794, 1.48, 2.118, 1.984, 3.494, 2.118, 1.94, 1.774, 1.724, 1.724, 1.214, 1.214, 1.742, 1.214, 1.742, 1.724, 1.818, 1.774, 2.336, 2.774, 2.118, 2.118, 1.51, 1.48, 2.774, 1.94, 1.146, 1.638, 2.336, 1.774, 1.818, 1.07, 1.724, 1.724, 1.214, 1.214, 1.214, 1.214, 1.724, 1.774, 1.94, 2.118, 1.984, 4.04, 0.48, 0.618, 2.33, 2.954, -0.222, 2.05, 2.05, 2.05, 0.368, 1.984, 1.532, 1.794, 1.48, 2.336, 1.07, 1.07, 1.724, 1.818, 1.774, 1.94, 2.774, 2.758, 2.05, 0.48, 2.954, 0.908, 0.908, 0.908, 3.314, 0.908, 3.314, 4.04, 3.494, 2.774, 1.818, 1.07, 1.724, 1.742, 1.742, 1.742, 1.214, 1.724, 1.07, 2.336, 1.94, 2.774, 1.48, 2.118, 0.422, 0.368, 0.368, 0.368, 1.984, 1.532, 2.118, 2.118, 1.146, 1.774, 1.07, 1.214, 1.214, 1.742, 1.742, 1.742, 1.742, 1.742, 1.214, 1.07, 1.638, 2.758, 0.368, 2.05, 0.48, 2.33, 0.48, 2.05, 1.532, 1.48, 2.774, 1.146, 2.336, 1.774, 1.818, 1.818, 1.07, 1.214, 1.724, 1.724, 1.07, 2.336, 1.146, 1.48, 1.532, 4.04, 3.314, 2.392, 1.566, 1.566, 1.566, 2.332, 0.908, 2.05, 0.368, 2.758, 1.794, 1.794, 1.794, 1.48, 1.94, 1.638, 2.336, 1.774, 2.336, 1.638, 2.774, 1.794, 2.758, 4.04, 3.314, 2.392, 3.022, 3.022, 2.392, 0.908, 2.954, 1.984, 3.494, 1.532, 1.532, 2.774, 1.638, 1.638, 1.774, 1.774, 1.94, 1.48, 1.794, 1.794, 1.822, 1.532, 1.984, 2.33, 3.314, 2.392, -0.222, 4.04, -0.222, -0.222, 3.314, 0.908, 1.566, 2.392, 2.392, 2.392, 3.314, 2.33, 1.984, 2.758, 1.794, 2.774, 1.146, 1.794, 0.422, 3.494, 2.05, 2.33, -0.222, -0.222, 2.954, 0.48, 0.368, 2.05, 3.494, 2.758, 0.422, 1.984, 2.33, 2.33, 2.954, -0.222, -0.222, 3.314, -0.222, 2.33, 0.48, 4.04, 4.04, 2.33, 2.954, -0.222, 0.908, 0.908, 3.314, 3.314, 0.908, 2.392, 1.566, 1.566, 2.392, 0.908, 3.314, 2.954, 1.984, 2.118, 1.146, 1.94, 1.774, 1.676, 1.214, 1.742, 1.214, 1.818, 1.638, 2.774, 1.532, 2.758, 2.758, 1.532, 1.532, 2.758, 2.758, 2.118, 2.118, 1.48, 1.638, 1.774, 1.724, 1.214, 1.742, 1.85, 1.85, 1.85, 1.85, 1.85, 1.85, 1.742, 1.724, 1.818, 2.336, 1.146, 1.532, 2.758, 2.758, 1.984, 3.494, 2.758, 1.532, 1.794, 1.94, 1.818, 1.724, 1.742, 1.742, 1.85, 1.85, -0.714, -0.714, -0.714, 1.85, 1.742, 1.724, 1.94, 1.532, 1.984, 0.368, 0.504, 0.368, 1.984, 0.422, 0.422, 0.422, 1.532, 1.48, 1.146, 2.336, 1.724, 1.214, 1.742, 1.742, 1.742, 1.742, 1.742, 1.742, 1.214, 1.07, 1.146, 2.758, 0.368, 4.04, 2.05, 4.04, 4.04, 3.366, 2.758, 1.48, 2.336, 1.07, 1.818, 1.818, 1.07, 1.724, 1.724, 1.724, 1.214, 1.724, 1.214, 1.214, 1.07, 1.638, 1.48, 2.758, 1.984, 0.368, 2.05, 2.05, 4.04, 1.984, 0.422, 0.422, 3.494, 1.532, 1.94, 1.774, 1.724, 1.724, 1.214, 1.214, 1.214, 1.214, 1.07, 1.07, 2.336, 2.668, 1.532, 1.984, 2.05, 0.48, 0.48, 0.48, 0.48, 2.33, 0.48, 2.954, 2.954, 4.04, 1.532, 2.774, 2.336, 1.818, 1.724, 1.214, 1.214, 1.214, 1.214, 1.724, 1.774, 1.794, 0.368, 4.04, 0.48, 2.33, 2.33, 2.33, 2.33, 0.48, 4.04, 0.48, 2.05, 3.494, 1.532, 1.48, 1.146, 1.94, 1.638, 1.774, 1.818, 1.07, 1.07, 1.818, 2.336, 1.94, 2.774, 1.48, 2.118, 0.422, 1.984, 0.368, 3.494, 1.532, 1.794, 1.794, 1.48, 2.774, 1.94, 1.94, 1.818, 1.214, 1.214, 1.742, 1.85, 1.85, 1.85, 1.742, 1.214, 1.818, 2.774, 2.758, 1.984, 0.368, 0.368, 4.04, 0.368, 0.422, 2.758, 2.118, 1.28, 2.336, 1.818, 1.724, 1.214, 1.742, 1.85, 1.85, 1.85, 1.85, 1.214, 1.07, 2.336, 1.794, 3.494, 4.04, 2.33, 2.954, 2.33, 0.48, 2.33, 2.33, 0.422, 2.118, 1.94, 1.774, 2.336, 2.774, 2.774, 1.94, 1.638, 1.94, 1.146, 1.146, 2.774, 1.48, 2.118, 3.494, 0.368, 4.04, 2.758, 0.422, 0.422, 0.422, 0.422, 2.758, 1.794, 1.794, 1.51, 1.794, 1.48, 1.94, 1.774, 1.724, 1.214, 1.214, 1.742, 1.742, 1.742, 1.214, 1.214, 1.724, 1.774, 1.638, 1.146, 2.774, 1.146, 1.146, 1.146, 1.638, 1.774, 1.774, 1.774, 1.774, 1.774, 1.818, 1.07, 1.07, 1.818, 1.774, 1.774, 1.774, 2.336, 1.94, 1.94, 1.774, 2.336, 2.336, 1.638, 1.94, 1.146, 1.48, 1.794, 2.118, 2.118, 1.532, 2.118, 1.48, 1.638, 2.336, 1.774, 1.818, 1.07, 1.724, 1.724, 1.724, 1.724, 1.07, 2.336, 2.774, 0.422, 0.48, 2.954, 0.908, 3.022, 1.566, 0.908, 3.314, 3.314, 3.314, -0.222, 3.494, 2.118, 1.146, 2.336, 1.818, 1.07, 1.724, 1.214, 1.742, 1.742, 1.742, 1.214, 1.724, 2.336, 2.774, 2.758, 2.05, 2.954, 3.314, 3.314, 2.954, 2.33, 2.33, 0.48, 0.422, 1.48, 1.638, 1.818, 1.724, 1.724, 1.214, 1.742, 1.742, 1.742, 1.742, 1.742, 1.724, 1.818, 1.638, 2.774, 1.48, 2.118, 0.422, 0.48, -0.222, 2.33, 0.48, 2.33, 0.48, 0.368, 2.758, 1.146, 1.818, 1.724, 1.214, 1.742, 1.742, 1.742, 1.742, 1.214, 1.724, 1.774, 2.774, 3.494, 4.04, -0.222, 2.954, 2.33, 2.33, 0.48, 4.04, 1.984, 0.422, 2.758, 1.48, 1.774, 1.724, 1.214, 1.742, 1.85, 1.85, 1.85, 1.742, 1.214, 1.124, 1.146, 1.48, 1.794, 1.794, 2.118, 2.118, 1.794, 1.146, 2.336, 2.336, 1.638, 2.336, 1.818, 1.724, 1.214, 1.742, 1.742, 1.742, 1.85, 1.85, 1.85, 1.85, 1.742, 1.07, 1.774, 1.638, 1.146, 1.48, 1.48, 2.774, 2.774, 1.94, 2.336, 1.774, 2.336, 2.336, 1.774, 1.774, 1.818, 1.07, 1.724, 1.214, 1.742, 1.742, 1.742, 1.214, 1.07, 1.638, 1.532, 2.05, 3.314, 2.392, 3.022, 1.566, 0.908, 0.908, -0.222, -0.222, -0.222, 2.954, 1.984, 1.794, 1.94, 1.07, 1.214, 1.214, 1.214, 1.214, 1.214, 1.724, 1.774, 1.94, 1.794, 0.48, 0.908, 2.954, 0.368, 4.04, 2.05, 0.368, 0.368, 2.05, 3.494, 0.422, 1.794, 1.638, 1.07, 1.724, 1.724, 1.724, 1.07, 1.07, 1.07, 1.07, 1.818, 1.774, 1.94, 0.422, 0.48, 2.954, 2.33, 2.33, 2.33, 0.48, 0.48, 0.48, 0.48, 2.05, 1.984, 3.494, 1.984, 1.984, 1.48, 1.774, 1.724, 1.214, 1.214, 1.724, 1.774, 1.94, 1.51, 3.494, 0.48, 2.954, -0.222, -0.222, -0.222, 0.48, 0.368, 2.118, 1.48, 1.48, 2.774, 2.336, 1.774, 1.774, 1.818, 1.818, 1.818, 1.774, 2.336, 1.94, 1.48, 1.984, -0.222, 2.392, 2.332, 1.566, 2.392, 2.392, 0.908, 3.314, 0.48, 2.954, -0.222, 2.954, 2.954, 0.48, 0.368, 3.494, 1.532, 2.774, 2.336, 1.818, 1.07, 1.774, 1.146, 2.758, 0.48, 0.908, 1.566, 2.752, 0.8, 0.8, 0.8, 0.908, 4.04, 3.494, 0.422, 1.532, 1.48, 2.774, 2.774, 1.146, 1.638, 2.336, 1.94, 1.94, 1.146, 1.48, 0.422, 1.984, 0.48, 1.566, 0.8, 0.8, 2.752, 0.8, 0.8, 0.8, 3.022, 0.908, 3.314, 2.392, 1.566, 1.566, 3.314, 4.04, 3.494, 2.118, 2.774, 2.774, 1.94, 1.146, 1.48, 1.532, 2.05, -0.222, 0.908, 1.566, 1.566, 3.022, 3.022, 3.022, 3.022, 2.752, 0.8, 0.908, 2.33, 2.05, 1.984, 4.04, 2.954, 0.908, 0.48, 0.422, 2.758, 3.494, 0.48, -0.222, 3.314, 3.314, 2.392, 3.022, 3.022, 3.022, 1.566, 1.566, 3.022, 1.566, 3.314, 2.954, 0.368, 3.494, 0.422, 1.794, 1.48, 1.146, 1.638, 2.336, 1.818, 1.818, 1.774, 1.638, 2.758, 3.314, 2.598, 1.65, 2.766, 2.348, 2.348, 2.348, 2.766, 1.65, 1.65, 2.348, 2.348, 2.348, 2.348, 2.348, 1.682, 2.348, 2.348, 1.682, 2.752, 2.392, 4.04, 0.48, 3.022, 2.766, 2.766, 1.65, 1.65, 1.65, 0.8, 2.752, 1.566, 2.392, 0.908, 2.954, 2.33, 2.33, 0.48, 0.368, 3.494, 2.118, 2.774, 2.336, 1.818, 1.818, 1.818, 1.94, 1.532, 4.04, 0.908, 3.022, 2.752, 2.752, 2.752, 2.752, 1.566, -0.222, 2.33, 4.04, 3.494, 2.774, 1.94, 1.638, 2.336, 1.774, 1.818, 1.07, 1.07, 1.818, 1.638, 2.774, 0.422, 0.48, 3.314, 2.954, 3.314, -0.222, 2.954, 2.05, 1.532, 1.532, 1.984, 0.368, 2.05, 2.05, 1.532, 2.774, 1.146, 1.94, 2.336, 1.822, 1.774, 1.94, 1.794, 1.794, 1.48, 1.48, 3.494, 0.48, 4.04, 4.04, -0.222, 2.392, 0.908, 0.908, 2.392, 1.566, 1.566, 0.48, 3.494, 1.794, 1.146, 1.94, 1.638, 2.336, 1.638, 2.774, 1.984, 3.314, 1.566, 1.65, 2.766, 2.348, 2.766, 2.766, 2.766, 1.65, 1.65, 1.65, 2.766, 1.65, 0.908, 4.04, 0.368, 0.422, 2.118, 1.48, 1.94, 1.638, 1.638, 1.94, 2.118, 3.494, 2.33, 2.392, 2.392, 2.392, 3.022, 0.8, 0.8, 0.8, 0.8, 1.65, 2.766, 0.8, 3.022, 2.954, 2.758, 1.94, 2.336, 1.07, 1.724, 1.214, 1.724, 1.07, 1.818, 1.818, 1.638, 1.48, 2.758, 3.494, 3.494, 0.422, 1.532, 2.118, 2.774, 2.774, 1.794, 1.146, 1.146, 1.146, 1.146, 1.146, 1.638, 2.336, 1.774, 1.774, 1.774, 2.336, 1.48, 2.05, 0.908, 2.392, 2.752, 2.766, 0.8, 2.392, 0.908, 2.33, 2.05, 1.984, 3.494, 2.05, -0.222, 2.392, 2.752, 1.566, -0.222, 2.05, 1.984, 0.422, 2.05, 0.48, 0.368, 4.04, 0.908, 2.752, 2.766, 1.65, 2.752, 1.65, 2.766, 2.766, 3.022, 0.908, 3.314, 2.392, 1.566, 3.022, 1.566, 1.566, 1.566, 3.022, 3.022, 3.022, 3.022, 3.022, 2.752, 1.65, 1.65, 1.65, 2.766, 1.65, 1.65, 1.65, 2.766, 2.766, 3.012, 1.566, 3.022, 3.022, 2.752, 1.566, 2.392, 0.908, 2.33, 4.04, 1.984, 2.118, 1.638, 1.774, 2.336, 1.94, 1.48, 1.532, 2.758, 2.956, 1.292, 2.006, 1.99, 1.426, 1.222, 1.644, 1.644, 1.914, 1.914, 1.914, 1.914, 1.914, 1.914, 1.914, 2.346, 2.346, 1.644, 1.644, 1.914, 1.222, 1.426, 2.006, 3.258, 2.052, 1.916, 1.916, 1.916, 4.1, 0.282, 2.468, 0.85, -0.45, 3.5, 0.85, 3.5, 3.056, 4.1, 2.052, 3.258, 2.83, 1.914, 1.644, 1.914, 1.222, 1.426, 1.99, 1.292, 0.536, 2.052, 0.454, 0.454, 1.916, 0.454, 1.916, 0.282, 0.282, 0.454, 2.052, 3.258, 2.956, 2.956, 1.292, 1.99, 1.644, 2.346, 2.346, 1.914, 1.99, 3.258, 0.282, 3.5, 2.402, 1.466, 1.466, 0.85, 2.468, 4.1, 4.1, 4.1, 2.052, 2.006, 1.426, 2.83, 1.914, 1.644, 2.346, 1.766, 1.766, 2.346, 2.006, 2.468, 2.402, 2.874, 2.768, 2.402, 1.712, 1.712, 2.402, 1.658, 0.85, 0.282, 3.258, 2.052, 3.258, 2.956, 1.292, 2.956, 0.536, 0.536, 2.052, 4.1, 4.1, 2.468, 3.072, 2.768, 1.712, 2.654, 2.654, 2.654, 2.458, 2.458, 2.654, 2.654, 1.712, 0.724, 1.466, 0.85, -0.45, 3.056, -0.45, 1.466, 2.402, 1.466, 3.072, 2.402, 0.85, 3.056, 0.85, 1.658, 2.402, 1.712, 1.712, 2.654, 2.654, 2.654, 2.654, 2.654, 1.712, 2.402, 0.724, 3.072, 1.466, 1.466, 0.85, 4.1, 2.006, 2.83, 1.222, 1.644, 1.766, 1.766, 2.346, 1.222, 1.426, 1.292, 0.536, 2.468, 2.402, 3.072, 3.072, 0.85, 0.454, 2.83, 1.222, 2.83, 2.83, 1.426, 1.426, 2.83, 2.706, 1.99, 2.956, 0.454, 0.454, 0.454, 4.1, -0.45, 3.072, 1.658, 2.768, 2.402, 1.712, 1.712, 2.402, 2.402, 2.402, 1.712, 2.402, 2.402, 2.402, 2.402, 1.712, 1.712, 2.654, 1.712, 2.402, 2.768, 1.658, 2.768, 2.402, 2.402, 2.402, 1.712, 1.712, 1.712, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 1.712, 1.712, 1.712, 1.712, 1.712, 2.654, 1.712, 1.712, 2.768, 1.466, 0.282, 2.956, 2.006, 1.292, 1.916, -0.45, 2.874, 1.658, 1.658, 2.768, 1.658, 2.402, 1.916, 2.956, 2.006, 2.956, 2.956, 2.006, 2.052, -0.45, 2.874, 1.658, 1.658, 0.724, 1.466, 0.85, 2.874, 2.768, 1.712, 1.712, 2.654, 2.654, 2.458, 2.458, 2.458, 2.458, 2.458, 2.654, 2.402, 1.712, 2.654, 2.402, 2.654, 2.654, 2.402, 1.658, 3.072, 3.072, 0.724, 0.724, 3.072, 1.658, 2.402, 1.712, 2.654, 2.654, 2.458, 2.458, 2.654, 2.654, 1.712, 1.466, -0.45, 1.466, 0.724, 2.768, 2.768, 2.768, 1.712, 1.712, 1.712, 1.712, 2.402, 2.768, 2.768, 2.768, 2.402, 2.402, 2.768, 2.874, 2.874, 2.874, 0.85, 1.916, 3.258, 2.83, 1.914, 1.914, 1.426, 3.258, 4.1, 4.1, 1.916, 2.052, 3.258, 2.006, 2.006, 1.426, 2.83, 1.99, 1.292, 2.956, 2.052, 0.282, 3.5, 2.402, 3.072, 3.072, 1.658, 2.768, 1.658, 0.724, 1.658, 2.768, 2.402, 1.712, 1.712, 1.712, 1.712, 1.712, 2.874, 2.052, 2.956, 1.292, 2.006, 0.536, 1.916, 3.5, 2.874, 2.768, 1.658, 0.724, 2.874, 3.056, 1.916, 1.916, 0.454, 2.052, 2.052, 2.052, 4.1, 0.282, 4.1, 2.052, 2.006, 1.426, 2.006, 3.258, 0.454, 2.468, 1.466, 1.658, 2.768, 2.768, 2.768, 1.658, 3.072, 3.056, 4.1, 2.468, 2.468, 3.5, 0.724, 2.768, 1.712, 2.402, 1.712, 1.712, 1.658, 3.072, 2.768, 2.402, 1.712, 1.712, 2.654, 2.458, 2.654, 1.712, 1.658, 0.724, 2.768, 2.874, -0.45, 4.1, 0.454, 1.916, 4.1, 1.916, 1.916, 1.916, 1.916, 2.468, 4.1, 1.916, 3.5, 2.874, 2.768, 2.402, 1.712, 1.712, 2.654, 1.712, 2.402, 2.402, 2.402, 2.768, 2.402, 2.402, 2.402, 2.768, 2.768, 2.768, 2.402, 1.712, 1.712, 1.712, 2.402, 2.768, 2.768, 2.734, 2.402, 2.402, 2.402, 2.768, 2.402, 2.402, 2.768, 2.768, 2.768, 0.724, 2.402, 0.85, 3.072, 3.072, 3.072, 2.874, 2.874, 1.466, 2.402, 1.916, 1.426, 1.914, 1.222, 2.83, 1.426, 1.292, 2.956, 2.052, -0.45, 1.466, 2.874, 3.072, -0.45, 2.956, 1.99, 2.006, 1.99, 1.426, 1.426, 2.006, 1.292, 1.292, 1.292, 2.006, 1.222, 1.644, 1.914, 2.83, 2.006, 0.454, -0.45, 2.402, 3.072, 2.874, 2.402, 0.282, 0.536, 2.052, 2.052, 0.454, 1.916, 1.916, 0.454, 0.536, 2.956, 1.292, 2.006, 1.99, 1.426, 2.706, 1.99, 0.454, 3.5, 2.874, 2.402, 1.712, 2.768, 2.768, 2.402, 2.874, 0.85, -0.45, 2.468, 2.052, 2.006, 1.426, 2.006, 1.292, 1.292, 0.536, 0.454, 0.282, 0.454, 3.258, 0.454, 3.258, 0.454, -0.45, 0.724, 2.768, 1.658, 1.658, 2.768, 2.768, 2.768, 1.658, 1.658, 2.874, 1.658, 2.402, 1.712, 1.712, 1.712, 2.402, 2.768, 2.402, 2.052, 1.99, 2.956, -0.45, 3.072, 2.768, 1.712, 1.712, 2.654, 2.654, 2.654, 1.712, 2.768, 1.658, 0.724, 0.724, 0.802, 1.658, 2.768, 2.402, 2.402, 2.402, 2.402, 1.712, 1.712, 2.402, 2.654, 2.654, 1.712, 2.654, 2.654, 2.458, 2.458, 2.458, 2.458, 2.654, 2.654, 1.712, 2.402, 2.402, 1.712, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 1.712, 1.712, 1.712, 2.654, 2.654, 2.458, 2.458, 2.458, 2.458, 2.458, 2.458, 2.458, 2.458, 2.654, 2.654, 2.654, 2.458, 2.13, 2.13, 2.13, 2.13, 2.13, 2.13, 2.458, 2.654, 2.402, 2.402, 2.654, 2.654, 2.458, 2.458, 2.458, 2.458, 2.458, 2.458, 2.458, 2.654, 2.654, 2.654, 2.458, 2.458, 2.13, 2.13, 2.458, 2.13, 2.13, 2.13, 2.458, 1.712, 1.658, 2.874, 3.072, 2.874, 2.768, 2.768, 0.724, 0.724, 1.658, 0.724, 0.85, 4.1, 0.536, 2.956, 2.956, 3.258, 2.052, 2.052, 0.454, 2.052, 2.052, 2.956, 1.292, 3.258, 0.85, 2.768, 1.712, 2.654, 2.654, 2.654, 2.402, 1.712, 1.712, 1.712, 1.712, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 2.458, 2.654, 2.654, 3.072, 0.85, 2.874, 2.768, 2.768, 0.724, 0.724, 0.724, 2.874, 3.072, 1.466, -0.45, 0.282, 3.258, 0.536, 2.956, 2.006, 1.292, 2.956, 2.956, 0.536, 3.258, 0.454, 1.916, 0.454, 0.536, 3.258, 3.258, 2.468, 2.402, 2.874, 0.724, 1.658, 1.658, 0.724, 2.874, 2.402, 1.916, 2.956, 2.956, 2.956, 0.536, 3.258, 2.956, 1.426, 2.83, 2.83, 1.222, 1.914, 1.644, 1.914, 1.222, 2.83, 1.426, 1.426, 2.956, 0.454, 4.1, 4.1, 0.282, 4.1, 2.956, 1.426, 2.83, 1.426, 2.006, 0.536, 3.258, 3.258, 2.006, 2.83, 1.914, 2.346, 2.346, 1.914, 1.222, 2.83, 1.99, 2.006, 2.956, 2.956, 0.536, 3.258, 0.536, 0.536, 2.956, 2.006, 0.536, 2.052, 2.052, 2.052, 0.536, 2.956, 1.292, 1.292, 1.426, 1.914, 2.346, 2.346, 1.644, 1.222, 2.006, 2.052, 4.1, 3.056, 0.85, -0.45, 2.468, 2.052, 1.426, 1.222, 1.426, 1.292, 1.916, 2.468, 2.468, 0.282, 1.916, 3.258, 2.006, 1.426, 2.006, 0.454, -0.45, 1.466, 1.752, 2.654, 2.458, 2.458, 2.458, 2.654, 1.712, 2.402, 3.072, 1.466, 2.874, 2.768, 0.724, 1.658, 2.874, 3.072, 2.874, 2.874, 0.85, 2.052, 0.454, 3.056, 2.402, 3.072, 3.072, 2.874, 2.874, 1.466, 0.85, 3.056, 2.468, 4.1, 2.052, 3.258, 1.916, 0.282, 2.402, 2.874, 1.658, 0.724, 1.658, 1.658, 0.724, 0.85, 4.1, 3.056, 2.874, 2.402, 1.712, 1.79, 1.712, 2.654, 2.654, 2.654, 2.654, 1.712, 2.402, 2.402, 2.768, 0.724, 2.874, 2.402, -0.45, -0.45, 0.85, 1.466, 2.402, 0.282, 4.1, 2.402, 2.874, 1.658, 1.658, 1.712, 1.712, 1.712, 1.712, 1.712, 1.712, 1.712, 2.402, 0.724, 2.874, 2.874, 2.874, 2.874, 3.072, 0.85, 2.468, 1.916, 2.006, 1.644, 2.346, 1.644, 2.83, 2.052, 0.454, 0.282, 2.468, 2.468, -0.45, 0.85, 0.85, 4.1, 1.292, 2.83, 1.99, 2.956, 0.536, 3.258, 1.916, 2.468, 2.402, 2.874, 1.658, 1.658, 2.874, 1.658, 1.712, 2.654, 2.654, 2.458, 2.458, 2.654, 1.712, 2.654, 2.654, 2.458, 2.458, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 2.402, 3.5, 3.072, 3.072, 1.466, 0.724, 2.402, 2.654, 2.458, 2.458, 2.458, 2.654, 1.658, 2.402, 1.466, 2.402, 3.072, 0.724, 2.768, 1.712, 1.712, 1.712, 1.658, 0.85, 4.1, 0.282, 1.466, 1.712, 2.654, 2.458, 2.458, 2.458, 2.458, 2.458, 2.458, 2.458, 2.654, 2.654, 1.712, 2.654, 2.654, 2.458, 2.458, 2.654, 2.654, 1.712, 1.466, 2.006, 1.914, 1.914, 2.83, 1.99, 0.454, 2.402, 3.072, 2.874, 1.658, 2.402, 2.654, 1.712, 2.402, 2.768, 2.768, 2.768, 2.768, 2.402, 1.712, 1.712, 2.654, 2.654, 2.402, -0.45, 0.282, 3.056, 1.466, 0.724, 1.712, 1.712, 1.712, 2.654, 1.712, 1.658, 3.056, 4.1, 0.282, 2.402, 2.768, 2.402, 1.658, 1.658, 1.658, 2.768, 2.402, 2.768, 0.724, 1.466, -0.45, 1.466, 0.724, 2.402, 1.712, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 1.712, 2.768, 3.06, 2.402, 1.466, 2.874, 2.874, 0.85, 3.5, 3.5, 3.056, 2.052, 1.426, 1.914, 2.83, 1.292, 2.468, 1.658, 1.712, 2.654, 2.458, 2.458, 2.458, 2.458, 2.458, 2.654, 2.874, 1.466, 3.072, 1.658, 2.402, 2.768, 1.658, 2.874, 2.402, 3.072, 2.402, 0.282, 3.056, 3.072, 2.402, 2.402, 1.712, 2.654, 2.654, 2.654, 2.458, 2.654, 1.712, 2.768, 0.724, 1.466, 2.874, 2.768, 1.712, 1.712, 2.402, 2.402, 2.402, 0.85, 1.99, 2.346, 2.346, 2.346, 1.644, 1.222, 1.99, 3.258, 4.1, 3.5, 3.072, 2.874, 0.85, -0.45, 0.454, 1.916, 3.056, 3.5, 3.072, 2.768, 1.712, 2.402, 2.402, 2.402, 2.768, 1.466, 0.85, 2.402, 1.466, 3.072, 3.072, 0.724, 1.658, 0.724, 3.072, 1.466, -0.45, 2.468, 2.052, 2.956, 0.536, 2.956, 2.956, 2.052, 4.1, 4.1, 2.468, 0.282, 1.916, 4.1, 3.5, 0.85, 3.5, 3.056, 4.1, 0.282, 3.056, 2.468, 0.85, 1.466, 3.072, 3.072, 2.874, 0.724, 1.658, 1.658, 1.658, 0.724, 1.466, 0.85, 0.454, 2.006, 1.99, 2.006, 2.956, 0.454, 1.916, 2.052, 2.052, 1.916, -0.45, 0.724, 2.768, 2.402, 1.712, 1.712, 2.402, 2.402, 0.724, 0.85, -0.45, 0.282, 0.282, -0.45, 3.5, -0.45, 1.916, 2.052, 0.454, 2.468, 2.468, 3.056, -0.45, 0.85, 2.874, 2.654, 2.654, 1.712, 1.658, 3.072, 2.468, 4.1, 3.056, -0.45, -0.45, 1.466, 1.466, 3.5, 2.468, 0.454, 1.292, 3.258, 1.916, 2.468, 3.072, 2.768, 2.402, 1.712, 1.712, 2.402, 0.724, 2.874, 3.072, 3.5, 0.282, 2.468, 2.402, -0.45, 0.282, 2.468, 4.1, 2.052, 0.536, 2.052, 3.258, 2.956, 0.454, 1.916, 0.454, 0.282, 0.85, 1.466, 1.658, 1.712, 2.402, 2.654, 2.654, 2.654, 1.712, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 1.712, 0.724, 2.874, 2.402, 2.468, 2.468, 0.85, 0.85, 3.5, 1.466, 2.874, 2.874, 0.724, 3.072, -0.45, 3.056, 2.402, 1.466, 3.5, 2.468, 3.056, -0.45, 0.85, 0.85, 3.056, 2.402, 2.874, 1.658, 1.658, 1.658, 2.768, 2.402, 2.768, 0.724, 3.072, 1.466, 3.072, 1.466, 3.5, 3.5, 2.874, 2.874, 3.072, 2.874, 3.072, 1.466, 1.466, 0.282, 2.956, 2.006, 2.052, 0.282, 3.056, 1.466, 3.072, 2.768, 1.712, 1.712, 2.654, 2.654, 2.654, 2.654, 2.654, 1.712, 1.712, 1.712, 2.654, 2.654, 1.712, 1.658, 2.402, 1.916, 2.83, 1.644, 1.914, 1.222, 1.426, 1.426, 1.292, 2.052, 3.5, 3.072, 1.658, 2.768, 2.768, 0.724, 1.466, -0.45, 0.85, 2.402, 3.072, 2.874, 3.072, 3.072, 1.466, 2.052, 1.222, 1.644, 2.83, 2.052, -0.45, 0.724, 2.402, 1.712, 1.712, 1.712, 1.712, 1.712, 1.658, 0.85, 0.536, 1.292, 3.056, 0.85, 0.85, 3.5, 3.5, 2.76, 4.1, 1.292, 1.914, 2.346, 2.346, 1.914, 2.83, 1.99, 0.536, 2.052, 3.258, 1.916, -0.45, 2.402, 3.072, 2.874, 2.874, 3.5, 2.468, 4.1, 2.052, 2.052, 2.052, 4.1, 1.916, 2.468, 2.468, 1.916, 3.056, 2.874, 0.724, 2.768, 2.402, 1.658, 2.874, 1.466, 3.056, 0.454, 0.454, 2.052, 3.258, 0.454, 0.282, 4.1, 2.468, -0.45, 1.466, -0.45, 0.282, 0.536, 1.99, 1.426, 2.006, 1.292, 2.956, 0.454, 3.056, 2.402, 2.402, -0.45, 3.056, -0.45, -0.45, 1.916, 2.006, 1.426, 2.956, 3.258, 3.258, 1.916, 0.282, 3.5, 3.5, 1.916, 1.99, 1.99, 2.956, 0.454, 3.056, 3.5, 1.466, 0.724, 1.658, 2.402, 1.712, 1.712, 2.402, 2.768, 0.724, 0.85, 2.468, 2.468, 1.916, 1.292, 2.006, 1.292, 2.956, 2.006, 1.222, 2.83, 1.99, 2.956, 2.052, 3.056, 0.724, 2.768, 2.402, 1.712, 1.712, 1.712, 2.402, 1.658, 2.874, 3.072, 2.874, 1.466, 1.466, 0.724, 0.724, 1.658, 0.724, 0.724, 0.724, 2.874, 2.874, 0.724, 1.658, 2.768, 1.658, 2.402, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 2.654, 1.712, 2.768, 2.402, 1.712, 2.654, 2.654, 2.654, 1.712, 0.724, 1.466, 2.402, 3.072, 2.874, 0.724, 2.874, 3.072, 3.072, 2.402, 0.454, 1.99, 2.346, 2.346, 2.346, 1.914, 2.006, 3.258, 0.282, 3.5, 2.402, 3.072, 2.402, 0.282, 2.006, 0.536, 3.258, 0.536, 2.052, 2.052, 0.454, 1.916, 2.468, 3.056, 3.5, 0.454, 2.956, 2.006, 2.83, 2.346, 2.346, 1.644, 1.222, 2.83, 2.006, 1.292, 2.006, 2.83, 1.222, 2.83, 2.956, 2.956, 2.052, 1.916, 4.1, 4.1, 0.536, 2.956, 1.292, 1.426, 1.99, 1.426, 1.426, 4.1, 3.056, 4.1, 2.468, 3.5, 2.402, 2.402, 4.1, 1.292, 1.222, 1.99, 0.454, 2.402, 3.072, 0.724, 1.658, 0.724, 0.724, 3.072, 2.874, 3.072, 3.5, 1.292, 1.644, 1.644, 2.346, 1.644, 1.222, 2.83, 2.006, 0.536, 0.536, 0.536, 3.258, 1.916, 0.282, 3.056, 2.402, 3.072, 2.874, 2.874, 2.402, 2.468, 0.454, 2.052, 1.916, 1.916, 0.454, 2.052, 2.052, 1.916, 0.282, 3.056, -0.45, -0.45, 3.5, -0.45, 1.916, 0.454, 0.282, 3.056, -0.45, 3.5, 2.402, 2.402, 2.402, -0.45, 0.282, 0.282, 2.468, 1.424, 1.426, 1.292, 2.956, 1.292, 2.052, 4.1, -0.45, 3.5, 0.282, 0.454, 3.258, 0.536, 1.292, 0.536, 2.956, 2.052, 1.916, 2.052, 1.916, 2.052, 3.258, 2.052, 0.536, 2.006, 1.292, 2.956, 2.956, 0.454, 2.468, 3.056, 2.468, 0.454, 0.536, 1.868, 1.766, 1.766, 1.766, 1.766, 2.346, 1.222, 1.426, 1.292, 2.052, 0.282, 2.468, 4.1, 0.454, 0.536, 1.292, 2.052, 2.052, 2.052, 2.052, 2.956, 1.292, 1.292, 2.83, 1.644, 1.766, 1.914, 1.222, 1.914, 1.222, 2.006, 1.292, 2.956, 0.536, 2.956, 1.292, 3.258, 0.536, 1.426, 1.644, 2.346, 1.644, 2.83, 2.956, 2.052, 2.468, -0.45, 3.5, 4.1, 0.536, 3.258, 2.052, 1.916, 3.056, 3.072, 0.724, 1.658, 1.658, 2.768, 2.402, 2.768, 2.768, 1.658, 1.466, 2.402, -0.45, -0.45, 2.468, 1.916, -0.45, 1.466, 3.072, 1.466, 2.468, 0.454, 2.956, 2.052, 0.536, 0.454, 3.056, -0.45, 2.402, -0.45, 3.5, 4.1, 1.292, 1.426, 1.99, 2.052, 2.468, 3.5, 1.466, 2.874, 0.724, 2.768, 1.658, 3.5, 1.916, 1.916, 0.454, 0.454, 3.258, 4.1, -0.45, 2.402, 3.072, 0.724, 0.802, 2.402, 3.5, 2.468, 4.1, 0.454, 4.1, 2.468, 3.5, 0.85, 2.402, 2.402, 4.1, 1.99, 1.426, 2.006, 3.258, 0.454, 0.536, 3.258, 0.282, 3.5, 0.85, 2.402, 3.056, 2.052, 1.292, 2.006, 2.83, 2.83, 2.83, 2.83, 1.426, 1.222, 2.83, 2.83, 1.222, 1.914, 1.222, 1.292, 2.052, 4.1, 4.1, 1.916, 4.1, 0.454, 3.258, 0.536, 0.536, 0.454, 2.052, 2.956, 1.292, 3.258, 2.052, 3.258, 0.454, 3.056, 2.402, 2.402, 0.282, 1.99, 2.83, 1.222, 2.83, 2.83, 1.99, 1.292, 2.956, 2.956, 1.292, 1.292, 1.292, 1.99, 1.644, 1.766, 1.766, 2.346, 1.914, 2.346, 1.644, 1.914, 1.222, 1.426, 1.99, 2.83, 2.006, 0.454, 0.282, 3.056, 0.85, 1.466, 2.874, 1.466, 3.072, 2.874, 1.658, 0.724, 0.85, 4.1, 2.052, 1.292, 1.292, 1.292, 0.536, 2.956, 0.536, 2.052, 0.536, 2.006, 2.346, 2.346, 2.346, 1.644, 2.83, 1.292, 2.052, 3.056, 3.056, 2.052, 0.454, 0.282, 0.282, 4.1, 1.916, 0.454, 2.052, 2.956, 3.258, 2.052, 0.536, 0.536, 0.536, 1.292, 2.006, 0.536, 1.916, 4.1, 2.468, 2.468, 2.512, 3.056, -0.45, 2.468, 3.056, 4.1, 2.83, 1.222, 2.346, 1.914, 1.468, 1.292, 2.956, 3.258, 0.454, 4.1, 0.454, 0.536, 0.454, 0.282, 3.5, 2.402, 2.402, 2.402, 1.466, 0.724, 1.658, 2.768, 2.768, 2.768, 2.768, 2.768, 1.658, 0.724, 0.724, 3.072, 3.056, 3.258, 1.99, 2.956, 1.292, 2.052, 1.916, 0.536, 3.258, 2.052, 2.052, -0.45, 3.072, 0.724, 2.768, 2.768, 2.768, 1.658, 2.874, 2.874, 2.874, 1.466, 1.466, 3.072, 1.658, 1.658, 1.658, 0.85, 0.282, 2.468, -0.45, 2.402, 0.724, 0.724, 0.802, 1.658, 2.768, 2.768, 2.768, 2.402, 2.402, 2.402, 2.402, 2.768, 1.658, 1.658, 2.768, 2.768, 2.402, 2.402, 2.402, 2.402, 1.712, 2.402, 2.768, 1.658, 0.724, 3.072, 3.5, 2.874, 0.724, 1.658, 0.724, 2.874, 0.85, 2.468, 0.454, 1.292, 2.83, 1.99, 2.052, 3.5, 3.072, 2.874, 2.874, 1.658, 0.724, 3.072, 2.468, 2.468, 2.468, 1.916, 2.468, 3.5, 3.072, 0.724, 2.874, 0.724, 0.724, 1.658, 0.724, 1.466, 2.402, 0.85, 2.402, 2.402, 0.282, 1.916, 4.1, 0.572, 1.292, 1.222, 2.83, 2.006, 3.258, 4.1, -0.45, 2.402, 2.402, 0.85, 3.5, 3.5, -0.45, 2.468, 2.052, 1.99, 1.766, 2.346, 1.644, 1.644, 1.222, 1.644, 2.346, 2.346, 1.766, 1.222, 1.546, 1.546, 1.222, 1.766, 1.222, 1.292, 2.052, 0.282, 2.468, -0.45, 3.5, 0.85, 0.85, -0.45, 2.468, -0.45, 0.282, 1.916, 0.572, 2.052, 4.1, 1.466, 0.85, 3.258, 1.426, 1.99, 0.536, 1.292, 0.536, 4.1, 0.282, -0.45, 2.402, 1.466, 2.402, 2.402, 3.072, 2.874, 3.072, 2.402, 3.056, 1.916, 0.536, 2.006, 1.292, 3.258, 0.454, 1.292, 1.222, 1.222, 2.83, 1.99, 2.006, 1.292, 1.292], "emissions_factor_series_lb_NOx_per_kwh": [-0.000779, 0.001352, 0.001838, 8.8e-05, 8.8e-05, 0.001352, 0.001326, 0.001326, -0.000779, -8.1e-05, 0.002336, 0.00032, -8e-06, -8e-06, -0.000604, 0.00021, 0.00071, 5.3e-05, 5.3e-05, 0.000362, 0.000362, 0.000362, 0.000391, 0.00021, 0.000901, -8e-06, 0.002336, -0.000268, 0.00213, 0.000389, -0.000129, 0.00021, 0.001315, 0.001315, -0.000129, -0.000129, -0.000129, -0.000129, -0.000129, 0.001315, 0.000743, 0.00039, 0.00021, 0.000807, 0.00213, -8.1e-05, 0.001337, 0.000169, 0.000169, 0.000169, 8.8e-05, 8.8e-05, 0.000169, 0.000605, 0.00213, 0.000764, 0.000764, 0.000807, 0.000807, 0.000764, 0.000764, 0.000764, 0.000764, 0.000764, 0.000807, 0.00039, 0.00021, 0.000764, -8.1e-05, 0.001337, 0.000169, 8.8e-05, 0.000717, 0.000717, 0.001134, 0.000708, 0.001134, 0.000708, 0.001326, -8e-06, -0.000604, 0.000389, 0.000807, 0.000389, -0.000268, 0.000605, 0.001158, 0.001337, 0.00213, 0.000764, -0.000268, -0.000779, 0.000169, 8.8e-05, 8.8e-05, 0.001838, 0.000717, -0.000304, -0.000304, 0.001838, 0.001352, 0.001326, 0.001326, 0.001337, 0.001326, 8.8e-05, 0.001352, 0.001352, 8.8e-05, 0.000708, 0.000708, 0.001134, 0.001134, 0.000717, -0.000304, -0.000304, 0.000708, 0.001134, 0.001001, 0.001001, 0.001001, 0.001001, 0.001001, 0.001001, 0.001134, 0.001134, -0.000304, 0.001838, 0.001838, 0.000717, 0.000717, 0.000717, -0.000304, 0.000708, 0.000708, 0.000717, -0.000268, 0.000807, 0.001315, 0.001315, 0.00021, 0.00021, 0.000743, 0.000743, 0.001315, 0.00021, 0.00021, 0.00021, 0.00039, 0.000391, 7e-05, 0.000362, 5.3e-05, 5.3e-05, 5.3e-05, 0.000362, 0.000362, 0.00071, 0.00071, 7e-05, 0.00071, 0.00071, 0.000391, 0.000391, 0.000686, 0.00021, 0.000807, -0.000129, -0.000129, 0.001315, 0.000389, 0.00213, -0.000268, 0.00213, 0.000389, -0.000129, 0.00021, 0.001315, 0.000389, -0.000604, -8e-06, -0.000604, 0.000764, 0.00021, 0.000391, 0.000362, 0.000362, 0.000362, 7e-05, 7e-05, 0.00071, 0.000391, 0.000391, 0.000391, 0.000391, 0.000391, 0.00071, 0.00071, 0.00071, 7e-05, 7e-05, 7e-05, 0.000362, 0.000362, 0.000362, 0.000362, 0.000362, 0.000362, 0.000362, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 0.000362, 7e-05, 7e-05, 0.00071, 0.00071, 0.00071, 0.00071, 0.00071, 7e-05, 7e-05, 0.000362, 7e-05, 7e-05, 0.00071, 0.000686, 0.00039, 0.000743, 0.000686, 0.000391, 0.00071, 0.000391, 0.00039, 0.00039, 0.000743, -0.000129, 0.000389, 0.000389, 0.000764, -0.000604, 0.00213, -0.000604, 0.001315, 0.00039, 0.000686, 0.00039, 0.00021, 0.00039, 0.00039, 0.000743, 0.000743, 0.000743, 0.00039, 0.00071, 0.000362, 0.00071, 0.000391, 0.000686, 0.000743, 0.000807, 0.000807, 0.000764, 0.000764, 0.000764, 0.000901, 0.000389, 0.000807, 0.000743, 0.000686, 0.000743, 0.00021, 0.00039, 0.000743, 0.000743, 0.00021, 0.00021, 0.001315, 0.001315, 0.001315, 0.000901, -8e-06, -8.1e-05, 0.001337, 0.000169, 0.000717, -0.000304, -0.000304, 0.000708, 0.001134, 0.001134, -0.000304, 0.001352, 0.000169, 8.8e-05, 0.001352, 0.001352, 0.001352, -0.000779, 0.002336, 0.002336, 0.001337, 0.001326, -0.000779, 0.000605, -0.000779, 0.000169, 0.001326, 0.001352, 8.8e-05, 8.8e-05, 8.8e-05, 0.001352, 0.001352, 0.000169, 0.000169, -0.000779, 0.001337, -0.000779, 0.001326, 0.000169, 0.000169, 0.000169, 0.000169, 8.8e-05, 8.8e-05, 0.001352, -0.000779, -0.000268, 0.00032, 0.002336, 0.000605, 0.001337, 0.001337, 0.001337, 0.001337, 0.000669, -8.1e-05, -0.000268, -8e-06, -0.000268, -0.000604, -8e-06, -8e-06, 0.000774, -8e-06, 0.000605, 0.000169, 0.001352, 8.8e-05, 0.001352, 0.000605, -0.000604, 0.001315, 0.00021, 0.000764, 0.00032, 0.001337, 0.001326, 0.001326, 0.001352, 0.001352, 8.8e-05, 0.001838, 0.001838, 0.001838, 0.001838, 0.000717, -0.000304, 0.000708, 0.001134, 0.001134, 0.001001, 0.001001, 0.000708, 0.000169, 0.001337, 0.001337, 0.001326, 0.001352, 0.001838, 0.000717, 0.000717, -0.000304, 0.000708, -0.000304, 0.001838, 0.000717, 8.8e-05, 0.001337, -0.000268, -0.000604, 0.00213, -8e-06, -0.000268, 0.00032, 0.00213, 0.000764, 0.000764, -0.000129, 0.000807, 0.000389, 0.000389, 0.000901, 0.00032, 0.001337, 0.001352, 8.8e-05, 8.8e-05, 0.001838, 0.001838, 0.001352, -0.000779, -8.1e-05, 0.001337, 0.001326, 0.001352, 0.001352, 8.8e-05, 0.001352, 0.000169, -8.1e-05, 0.000764, 0.000743, 0.00039, -0.000129, 0.000764, 0.000901, 0.00213, 0.00032, 0.000605, 0.000169, 0.000169, 0.001337, -0.000779, 0.000605, 0.00032, -0.000604, 0.000764, 0.000764, 0.000764, 0.00021, 0.00039, 0.000743, 0.00039, 0.000391, 0.000391, 0.000391, 0.000391, 0.000743, 0.000389, -0.000604, 0.002336, -0.000779, -0.000779, 0.001326, 0.001326, 0.001326, -0.000779, 0.000605, 0.00032, 0.000605, -0.000779, 0.001326, 0.000169, 0.000169, 0.001326, 0.001337, -0.000779, 0.000169, -0.000779, -8.1e-05, -0.000268, 0.000901, 0.00213, 0.000389, 0.000807, 0.000389, 0.00213, 0.00032, 0.00032, 0.00213, -0.000604, 0.000901, -0.000129, 0.000743, 0.00039, -0.000129, -0.000268, -0.000268, -0.000268, -8e-06, 0.000901, -0.000129, 0.00039, 0.000391, 0.000686, -0.000129, 0.000901, -8.1e-05, 0.001326, 0.000169, 8.8e-05, 0.001838, 0.001838, 0.001838, 8.8e-05, 0.001352, -0.000779, -8.1e-05, 0.00032, 0.000605, 0.001337, -8.1e-05, -8.1e-05, 0.000605, -8.1e-05, -8.1e-05, 0.000605, 0.00032, 0.002336, 0.001337, 0.001326, 0.000169, 0.001352, 0.000169, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 0.001352, 0.001326, -0.000268, 0.000901, 0.000807, 0.00021, 0.00039, 0.00021, 0.001315, -0.000129, 0.000807, -8e-06, -8e-06, 0.00032, -8.1e-05, 0.002336, 0.000605, 0.001337, 0.000605, 0.002336, 0.002336, 0.00032, 0.000901, 0.001315, 0.00021, 0.00021, 0.000686, 0.000686, 0.000686, 0.00039, -0.000129, 0.000389, -0.000268, 0.002336, -8.1e-05, 0.002336, 0.000764, 0.00039, 0.000686, 0.00039, 0.00039, 0.000686, 0.000743, 0.00021, 0.001315, 0.000743, 0.00039, 0.000743, 0.00021, 0.000743, 0.000686, 0.00071, 0.00071, 0.000391, 0.00021, 0.000901, 0.00213, -0.000268, 0.00213, 0.000764, 0.00021, 0.000391, 0.00071, 0.000391, 0.000391, 0.000686, 0.00039, 0.00039, 0.000686, 0.000391, 0.000391, 0.000391, 0.00071, 0.000362, 5.3e-05, 0.000171, 0.000171, 0.000171, 0.000171, 0.000171, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 0.000171, 0.000171, 0.000171, 0.000171, 5.3e-05, 5.3e-05, 7e-05, 0.00071, 0.00071, 0.00071, 0.00071, 0.00071, 7e-05, 0.000362, 5.3e-05, 5.3e-05, 0.000362, 0.00071, 0.000686, 0.001315, -0.000129, 0.000389, -0.000604, -8e-06, 0.00213, -0.000129, 0.000764, 0.000901, 0.000901, 0.00213, 0.00213, -8e-06, -8e-06, -0.000604, 0.00213, 0.00213, -0.000604, -5e-05, 0.000686, 0.00071, 0.00071, 0.00071, 0.000686, 0.000686, 0.00039, 0.000743, 0.000743, 0.001315, 0.001315, 0.000743, 0.00021, 0.000807, 0.000807, 0.000764, 0.00213, -0.000268, 0.002336, 0.000605, 0.000605, 0.000605, 0.002336, 0.00213, 0.000807, 0.000807, 0.000764, 0.000901, 0.000764, 0.000807, 0.000807, 0.000389, -8e-06, -8.1e-05, -8.1e-05, -8.1e-05, 0.00032, 0.00032, 0.00032, -0.000268, 0.002336, 0.000605, 0.000169, 8.8e-05, 0.001838, 0.000717, 0.001838, 0.001838, -0.000304, 0.000717, -0.000304, -0.000304, -0.000304, -0.000304, -0.000304, 0.000708, 0.000708, 0.000708, -0.000304, 0.000717, 0.000717, 0.001838, 0.001838, 0.001838, 0.001838, 0.000717, -0.000304, 0.000717, -0.000304, 0.000717, -0.000304, 0.000717, 0.000717, 0.001838, 0.001838, 0.001838, 0.000717, 8.8e-05, 0.001326, 0.000605, -8e-06, 0.000764, 0.000686, 0.00071, 0.000391, 0.000686, 0.000743, 0.000807, -0.000604, 0.002336, -0.000779, 0.001326, -0.000779, -0.000268, 0.000389, 0.00021, 0.000686, 0.00071, 0.00071, 0.00071, 0.00071, 7e-05, 7e-05, 7e-05, 7e-05, 0.00071, 7e-05, 0.000362, 7e-05, 7e-05, 7e-05, 0.000391, 0.000686, 0.00039, 0.001315, 0.001315, 0.000764, 0.00213, -0.000604, 0.000807, 0.001315, 0.00021, 0.000743, 0.000743, 0.000743, 0.001315, 0.000807, 0.000764, 0.000764, -0.000129, 0.000743, 0.000686, 0.00071, 0.00039, 0.000807, 0.00213, 0.000605, -0.000779, 0.001326, 0.001326, 0.001352, 0.001352, 0.001337, -8e-06, 0.000807, 0.00021, -0.000129, -0.000129, -0.000129, 0.00213, 0.000605, 0.000605, -0.000779, -0.000779, 0.001337, 0.001337, -0.000779, -0.000779, 0.001352, 0.001838, -0.000304, -0.000304, -0.000304, -0.000304, -0.000304, -0.000304, -0.000304, 0.001838, -0.000779, 0.00032, 0.00032, 0.001337, 0.001352, 8.8e-05, 0.001838, 0.000717, 0.000717, 8.8e-05, 0.001326, 0.000764, 0.00039, 0.00039, 0.00039, 0.00021, 0.000807, 0.00213, 0.002336, 0.000605, 0.000605, 0.000605, -0.000268, 0.000389, 0.00021, 0.000391, 0.000686, 0.00039, 0.001315, 0.000807, 0.001315, 0.001315, 0.00021, -0.000129, 0.001315, 0.000743, 0.00039, 0.001315, 0.000807, 0.000389, -0.000604, 0.000901, -0.000268, -0.000268, -8e-06, 0.00032, 0.002336, 0.002336, 0.002336, -0.000268, -0.000604, -0.000604, 0.000764, 0.000807, -0.000129, 0.000389, 0.00032, -8.1e-05, 0.00032, -0.000129, 0.000743, 0.000807, 0.000389, -0.000604, -8e-06, 0.00032, -0.000268, 0.00213, -0.000268, -0.000268, 0.00213, 0.000807, 0.00021, 0.000686, 0.00021, 0.000807, 0.00213, 0.002336, 0.002336, 0.000605, 0.000605, -8.1e-05, 0.002336, -8e-06, 0.001315, 0.00039, 0.000391, 0.000391, 0.00071, 0.000391, 0.000686, 0.000686, 0.00039, 0.000743, 0.00021, 0.00039, 0.00071, 7e-05, 0.00071, 0.000391, 0.00039, 0.000686, 0.000391, 0.000391, 0.000686, 0.000391, 7e-05, 5.3e-05, 0.000171, 5.3e-05, 5.3e-05, 0.000362, 7e-05, 7e-05, 0.00071, 0.00071, 0.00071, 0.00071, 7e-05, 0.000362, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 0.000362, 0.000362, 7e-05, 0.00071, 0.000391, 0.000391, 7e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 0.000362, 0.000362, 7e-05, 7e-05, 7e-05, 7e-05, 7e-05, 7e-05, 0.000362, 5.3e-05, 0.000171, 0.000171, 0.000171, 5.3e-05, 5.3e-05, 0.000362, 0.00071, 0.000391, 0.00039, 0.000686, 0.00071, 7e-05, 0.00071, 0.00071, 0.00071, 0.000391, 0.000686, 0.000686, 0.000391, 0.00071, 0.00071, 0.00071, 0.000362, 5.3e-05, 5.3e-05, 5.3e-05, 7e-05, 0.00071, 0.00071, 0.00071, 7e-05, 7e-05, 7e-05, 7e-05, 0.000362, 5.3e-05, 0.000171, 0.000171, 0.000171, 5.3e-05, 0.000362, 7e-05, 7e-05, 7e-05, 0.000362, 0.000362, 5.3e-05, 0.000171, 0.000171, 0.000171, 0.000171, 0.000171, 5.3e-05, 0.000362, 7e-05, 0.00071, 7e-05, 7e-05, 7e-05, 0.000362, 0.000362, 0.000362, 0.000362, 7e-05, 0.000362, 0.000362, 0.000362, 7e-05, 7e-05, 0.00071, 7e-05, 0.000362, 0.000362, 0.000362, 5.3e-05, 0.000171, 0.000171, 0.000171, 0.000171, 5.3e-05, 5.3e-05, 5.3e-05, 0.000171, 0.000171, 5.3e-05, 5.3e-05, 5.3e-05, 0.000362, 7e-05, 7e-05, 7e-05, 7e-05, 7e-05, 7e-05, 0.000362, 0.000362, 5.3e-05, 5.3e-05, 5.3e-05, 0.000362, 5.3e-05, 0.000362, 7e-05, 7e-05, 7e-05, 0.000362, 5.3e-05, 0.000171, 0.000171, 0.000171, 0.000171, 5.3e-05, 0.000362, 0.000362, 0.000362, 7e-05, 7e-05, 0.000362, 0.000362, 0.000362, 5.3e-05, 0.000362, 5.3e-05, 5.3e-05, 0.000362, 0.00071, 0.000686, 0.00039, 0.000743, 0.00039, 0.000391, 0.00071, 0.000391, 0.000743, 0.000743, 0.000743, 0.00021, 0.00021, 0.001315, 0.001315, 0.000743, 0.000743, 0.000391, 0.000391, 0.00071, 0.000391, 0.000391, 0.00071, 0.000391, 0.000686, 0.00039, 0.000686, 0.000391, 7e-05, 0.000362, 5.3e-05, 0.000362, 0.000362, 0.000362, 7e-05, 7e-05, 7e-05, 0.00071, 0.00071, 0.00071, 7e-05, 0.000362, 5.3e-05, 5.3e-05, 5.3e-05, 0.000362, 7e-05, 7e-05, 7e-05, 7e-05, 7e-05, 7e-05, 0.000362, 5.3e-05, 0.000171, 0.000171, 5.3e-05, 5.3e-05, 0.000362, 7e-05, 0.00071, 0.000391, 0.00071, 0.00071, 0.00071, 7e-05, 0.000362, 5.3e-05, 0.000362, 7e-05, 0.00071, 0.000391, 0.000391, 0.000686, 0.00039, 0.000743, 0.000686, 7e-05, 0.000362, 0.000362, 0.000362, 0.00071, 0.00039, 0.000389, -8e-06, -0.000268, 0.002336, -0.000268, -0.000604, 0.000764, -0.000129, 0.001315, 0.000764, 0.000807, 0.001315, -0.000129, 0.000901, 0.001337, 0.000169, 0.001352, 0.000169, 0.00213, 0.00021, 0.00021, 0.000743, 0.00021, -0.000129, 0.000807, 0.000901, -0.000268, -8.1e-05, 0.001337, 8.8e-05, 0.001838, 0.001838, 8.8e-05, -0.000304, -0.000304, -0.000304, 0.000717, 0.001838, 0.000717, 0.000717, 0.000717, 0.001352, 0.002336, -0.000604, -0.000268, 0.001337, 0.000169, 0.000169, 0.000169, 0.000169, 0.001352, 8.8e-05, 8.8e-05, 8.8e-05, 0.000169, 0.000169, 0.000169, 8.8e-05, 0.001838, 0.000717, 0.000717, -0.000304, -0.000304, -0.000304, -0.000304, 0.000169, 0.000901, 0.001315, -0.000129, 0.000389, 0.00032, -8.1e-05, 0.001326, 0.001352, 0.001352, 0.001352, 0.000169, 0.000169, 0.000169, 0.001326, -0.000779, 0.000169, 0.001352, 8.8e-05, 0.001838, 0.001838, 0.000717, 0.000717, 0.001744, 0.001326, -0.000604, 0.000807, 0.000807, 0.000389, -0.000604, -8e-06, 0.00032, -8.1e-05, 0.001352, 0.001326, 0.000605, 0.002336, 0.00032, 0.000901, 0.000901, -0.000268, -8.1e-05, -8.1e-05, 0.001326, 0.001352, 0.001838, -0.000304, 0.001134, 0.000708, 0.000717, 8.8e-05, 0.001838, 0.000717, 0.001838, 0.000717, 0.000717, -0.000304, -0.000304, -0.000304, 8.8e-05, -8.1e-05, 0.00213, 0.000807, -0.000129, -0.000129, 0.000764, 0.000389, 0.000764, 0.000901, 0.000389, 0.000389, 0.000807, 0.000743, 0.000686, 0.00071, 0.000391, 0.000686, 0.000743, 0.00021, 0.001315, -0.000129, -0.000129, -0.000129, -0.000129, 0.000743, 0.000391, 0.00071, 0.00071, 0.00071, 0.000391, 0.00021, 0.000807, -0.000604, -0.000268, 0.000669, 0.000605, 0.002336, -0.000604, 0.000901, -8e-06, 0.00032, -8.1e-05, 0.000605, -0.000779, 0.000169, 0.001352, 0.000605, 0.00032, 0.00213, 0.00213, -0.000268, 0.000605, 0.000169, 8.8e-05, 0.001838, 0.001838, 0.000169, 0.001352, 0.001838, 0.001352, 0.001337, -8e-06, 0.000807, 0.00213, -8e-06, 0.002336, 0.001326, 0.000169, 8.8e-05, 0.001352, 0.001352, 0.001352, 0.001326, -0.000604, -0.000129, 0.001315, 0.000764, 0.000389, 0.00032, 0.000169, 8.8e-05, 0.001838, 0.001838, 0.000717, 0.000717, 8.8e-05, 0.001326, 0.001337, 0.001337, -0.000779, 0.001326, 0.001352, 0.001352, 8.8e-05, 8.8e-05, 8.8e-05, 0.001352, 0.001326, -0.000779, 0.001337, 0.001337, 0.001326, 0.000169, 0.000169, 0.001337, 0.000605, 0.002336, -0.000268, 0.000901, 0.000743, 0.000686, 0.00039, 0.001315, 0.000389, 0.00213, -8e-06, -8e-06, -8.1e-05, 0.001337, 0.001337, -8.1e-05, -8e-06, 0.000389, -0.000129, -0.000129, 0.001315, 0.000743, 0.00039, 0.000743, 0.001315, 0.000807, 0.000734, 0.000807, 0.00039, 0.000743, 0.000807, -0.000268, 0.001337, 0.001326, 0.001352, 0.001838, 0.001838, 0.001838, 0.000169, -0.000779, 0.002336, -0.000604, 0.00213, -0.000268, -8.1e-05, 0.001337, -0.000779, 0.000605, 0.000605, 0.000605, 0.000605, 0.000605, 0.00213, 0.000764, 0.000764, -0.000604, -8.1e-05, 0.001326, 0.001326, 0.001337, -0.000268, 0.00213, -0.000604, 0.000764, -0.000129, 0.00039, 0.000686, 0.000743, 0.00021, 0.001315, -0.000129, 0.000807, 0.000807, 0.000764, 0.000764, -0.000129, 0.00021, 0.001315, 0.000901, 0.00032, 0.000605, -0.000779, 0.001326, 0.001352, 8.8e-05, 0.001352, 0.001326, -0.000779, 0.001337, 0.002336, 0.002336, -0.000268, 0.00032, -8.1e-05, -8e-06, -8e-06, 0.000901, -8e-06, -8e-06, 0.000901, 0.000901, 0.000807, 0.000807, 0.00213, -8.1e-05, 0.001337, 0.001337, -0.000779, 0.000169, 0.001352, 0.000169, 0.001337, 0.001337, -8.1e-05, 0.002336, -0.000268, 0.000807, 0.000764, 0.000764, 0.000807, 0.000807, 0.000807, -0.000129, 0.000743, 0.000686, 0.000686, 0.000686, -0.000129, -8e-06, -0.000779, 0.001352, 0.001838, 8.8e-05, 0.001838, 0.001838, 0.001838, 0.001838, 0.001248, 0.000169, 8.8e-05, 0.001352, 8.8e-05, 0.000717, 0.000708, 0.000708, 0.001134, 0.001134, 0.001134, 0.001134, 0.000708, 0.001838, 0.001838, 0.000717, 0.000708, 0.001134, 0.001134, 0.001001, 0.001134, 0.001134, 0.001134, -0.000304, 0.001326, 0.001326, 0.001352, 0.001326, -0.000779, -0.000779, -0.000779, 0.001326, 0.000169, 0.001352, -0.000779, 0.002336, 0.002336, 0.001326, 8.8e-05, 0.001838, 0.000717, -0.000304, 0.000708, 0.001001, 0.001134, 0.000708, 0.000169, -0.000268, -0.000129, 0.000743, 0.00039, 0.00039, 0.00039, 0.00021, 0.000389, 0.00032, 0.001326, 8.8e-05, 0.001838, 0.001326, 0.002336, 0.000605, -0.000779, -0.000779, 8.8e-05, 0.001838, 0.000717, 0.001352, 0.001352, 0.001352, 0.000605, -0.000604, 0.000807, 0.000901, 0.00213, -0.000268, -8.1e-05, 0.00032, 0.00032, 0.001337, 0.001337, 0.001326, 0.001326, -0.000779, 0.002336, 0.001337, 8.8e-05, 0.000717, 0.000708, 0.000708, -0.000304, 0.000708, 0.000708, 0.000708, -0.000304, 0.000169, 0.002336, -0.000604, 0.000901, -0.000268, 0.000605, 0.001326, 0.001326, 0.001326, 0.001326, -0.000779, -8.1e-05, 0.000389, -0.000129, 0.001315, 0.000743, 0.000743, 0.000807, -0.000129, 0.000807, 0.000764, 0.000807, 0.001315, 0.00021, 0.00039, 0.000391, 0.000391, 0.000686, 0.00021, 0.000901, 0.00213, 0.00213, 0.00213, -8e-06, 0.00032, -0.000268, -8e-06, 0.00213, 0.00213, -8e-06, 0.00032, 0.002336, -8.1e-05, 0.001337, -0.000779, -0.000779, 0.001337, -0.000268, 0.000807, 0.00039, 0.000391, 0.00071, 0.00039, -0.000129, 0.000764, 0.000901, 0.000901, -0.000604, 0.00213, 0.00213, 0.000389, 0.00021, 0.000743, 0.00039, 0.000686, 0.000686, 0.00039, 0.00039, 0.000743, 0.00039, 0.00039, 0.000686, 0.000686, 0.000391, 0.000391, 0.000391, 0.00071, 0.00071, 0.00071, 0.00071, 0.000391, 0.000391, 0.000391, 0.00039, 0.00039, 0.000743, 0.00021, 0.001315, -0.000129, 0.000764, 0.00213, -8e-06, 0.00032, -8.1e-05, -8.1e-05, 0.000605, 0.000605, 0.000605, 0.000605, -8.1e-05, -8.1e-05, -8.1e-05, 0.000605, 0.001337, -0.000779, -0.000779, 0.001337, -8.1e-05, 0.00032, -0.000268, -8e-06, 0.002336, 0.000605, -0.000779, -0.000602, -0.000779, 0.001326, 0.001326, 0.001326, 0.001337, 0.00032, 0.000389, 0.00021, 0.000743, 0.00039, 0.00039, 0.00039, 0.000743, 0.00021, -0.000129, 0.000389, 0.00213, 0.000764, 0.001315, 0.000743, 0.000743, 0.001315, 0.000764, 0.00213, -2.9e-05, -0.000604, 0.000764, 0.000389, 0.000389, -0.000129, 0.00039, 0.00039, 0.000743, 0.001315, 0.000807, 0.000764, 0.000764, -0.000129, -0.000129, 0.000807, 0.000807, 0.000764, 0.001315, 0.001315, 0.000807, -0.000604, -8e-06, -8.1e-05, 0.001337, 0.001326, 0.001326, -0.000779, 0.000605, 0.002336, 0.00213, -0.000604, 0.00213, 0.00032, 0.000605, -0.000779, 0.001352, 0.000169, 0.001352, 0.001352, 0.001352, 0.000169, -0.000779, -8.1e-05, 0.00032, -0.000268, 0.00032, -8.1e-05, 0.000605, -8.1e-05, -8e-06, 0.000764, 0.00039, 0.00071, 7e-05, 0.00071, 0.000391, 0.00039, 0.000743, 0.001315, 0.001315, -0.000129, -0.000129, -0.000129, -0.000129, 0.000743, 0.00039, 0.000743, 0.000807, -0.000604, -8.1e-05, 0.000605, 0.000605, 0.001337, 0.001337, -8.1e-05, 0.002336, 0.00032, 0.00213, 0.000901, 0.000901, 0.000901, 0.000901, 0.00213, 0.00032, -8.1e-05, -8.1e-05, 0.002336, 0.002336, 0.001337, 0.001326, 8.8e-05, 8.8e-05, -0.000304, 0.000708, 0.000708, 0.001134, 0.001134, 0.001134, 0.000708, -0.000304, 0.000717, 0.001352, 0.000169, 0.000169, 8.8e-05, 0.000717, 0.001134, 0.001001, 0.001001, 0.00074, 0.001001, 0.001134, 0.000708, 0.000717, 0.001838, 0.001838, 0.000717, -0.000304, 0.001001, 0.001001, 0.00074, 0.00074, 0.00074, 0.001001, 0.001001, 0.001134, 0.001134, 0.001134, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.001001, 0.001001, -0.000304, 0.001352, -0.000779, 0.002336, -0.000268, 0.00032, -8.1e-05, 0.000605, -0.000779, -0.000779, 0.001326, -0.000779, 0.00032, 0.000389, 0.000304, 0.000743, 0.000743, 0.001315, 0.000764, 0.000389, 0.000389, -8e-06, 0.002336, 0.000605, -8.1e-05, 0.00213, 0.000389, 0.001315, 0.001315, -0.000129, 0.000764, -0.000604, -8.1e-05, 0.000169, -0.000304, 0.000717, 0.000717, 0.001838, 0.001352, 0.000169, 0.001352, 0.001838, 0.000717, 0.000708, 0.000708, -0.000304, -0.000304, 0.000708, 0.000717, 0.000717, 0.001352, 0.001326, 0.001352, 8.8e-05, 0.000717, -0.000304, 0.000708, 0.001134, 0.001134, -0.000304, 0.001838, 0.000169, -8.1e-05, -8e-06, 0.000774, 0.000901, -0.000129, 0.00021, 0.000743, 0.00039, 0.000743, 0.00021, 0.00021, 0.000743, 0.000743, 0.00021, -8e-06, -0.000779, 0.001326, 0.001326, 0.001337, 0.000605, 0.00032, -0.000604, 0.000764, 0.000743, 0.00071, 0.000391, 0.00039, 0.00021, -0.000604, -8e-06, -8e-06, 0.000764, -0.000129, -0.000129, -0.000129, 0.001315, 0.000764, -0.000604, -8.1e-05, 0.001337, 0.001326, 0.001838, 8.8e-05, 0.001326, 0.00032, -0.000268, 0.000901, 0.00021, 0.00039, 0.000743, 0.000743, -0.000129, 0.000764, 0.000389, 0.000901, 0.00213, -0.000268, -8e-06, 0.000901, 0.001315, 0.00039, 0.000743, 0.001315, 0.000807, -0.000604, 0.00032, 0.000605, 0.001326, 0.000169, 0.000169, 0.000169, 8.8e-05, 0.001838, 0.001838, 0.000717, 0.001134, 0.001001, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.001001, 0.001134, 0.001838, 0.00213, 0.001315, 0.000743, 0.000743, 0.001315, 0.000807, 0.000901, 0.000605, 0.001352, 0.000169, 0.000169, 0.001352, 0.001352, 0.000169, 0.001838, 0.001134, 0.00074, 0.000996, 0.000996, 0.000996, 0.00074, 0.001134, 0.001337, 0.000389, -0.000129, 0.000807, -8e-06, 0.000169, 0.001134, 0.001001, 0.001001, 0.00074, 0.00074, 0.001001, 0.000708, -0.000304, 0.000708, 0.001134, 0.001134, 0.001001, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.001134, -0.000304, 0.000708, 0.001001, 0.00074, 0.001001, 0.001001, 0.001001, 0.001001, -0.000304, 0.00032, 0.000807, 0.00039, 0.000391, 0.000743, -0.000129, -0.000604, 0.000901, -8e-06, 0.00213, 0.00213, 0.000901, 0.000389, 0.00021, 0.000391, 0.00071, 0.000391, 0.000686, 0.000686, 0.00021, 0.001315, -0.000129, -0.000129, 0.00021, 0.00021, 0.000743, 0.00039, 0.000743, 0.001315, -0.000604, 0.002336, -8.1e-05, 0.000605, 0.002336, -8.1e-05, -8e-06, -0.000604, 0.001315, 0.000743, 0.000743, 0.001315, -0.000604, -8.1e-05, 0.000169, 0.001352, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 0.000169, 0.001326, 0.001326, 0.000605, 0.00032, -8e-06, -8e-06, -8e-06, -0.000268, 0.00032, 0.002336, 0.002336, 0.002336, 0.00032, 0.002336, 0.001326, 8.8e-05, 0.000717, 0.000708, 0.000708, -0.000304, 0.000708, -0.000304, 0.001744, 0.001352, 0.001337, -8.1e-05, 0.000669, 0.001352, 0.000717, -0.000304, -0.000304, -0.000304, 0.000717, 8.8e-05, 0.001326, -8.1e-05, -0.000604, 0.000807, 0.001315, 0.000807, -0.000604, -0.000268, 0.002336, 0.002336, 0.00032, -0.000268, 0.000901, 0.000389, 0.000389, 0.000764, 0.000389, 0.000389, 0.000764, 0.00213, -8e-06, -0.000268, 0.00032, 0.00032, 0.00032, -8e-06, -0.000604, 0.00032, 0.001326, 8.8e-05, 0.001838, -0.000304, -0.000304, -0.000304, 0.000717, 0.001838, 0.000169, 0.000605, 0.000605, 0.002336, -8e-06, -8e-06, -8e-06, -0.000268, 0.002336, 0.000605, -0.000268, -0.000604, -0.000604, 0.000764, 0.000389, 0.000389, 0.000389, -8e-06, -8.1e-05, -8.1e-05, 0.002336, -8.1e-05, -8.1e-05, -8.1e-05, 0.002336, 0.00213, 0.000389, 0.000901, 0.000389, 0.000389, 0.000901, 0.00213, -0.000268, 0.000605, 0.001337, 0.001337, 0.000605, -0.000268, -8e-06, -0.000268, -0.000779, 0.001352, 8.8e-05, 0.000717, 0.001134, 0.00074, 0.00074, 0.001001, 0.001001, 0.001134, 0.000708, 0.001134, 0.001001, 0.00074, 0.00074, 0.00074, 0.00074, 0.001001, 0.00074, 0.001001, 0.001134, 0.000708, -0.000304, 0.000717, 0.001838, 0.001838, -0.000304, 0.000708, 0.001134, 0.001001, 0.001001, 0.001001, 0.001001, 0.001134, 0.001134, 0.001134, 0.001001, 0.001001, 0.001001, 0.001134, 0.001134, 0.001134, 0.001001, 0.001134, 0.000708, 0.000717, 0.001838, 0.000605, 0.00032, -0.000604, 0.000901, -0.000604, -0.000268, -0.000268, 0.001337, 8.8e-05, 8.8e-05, 8.8e-05, 0.001352, 0.001352, 8.8e-05, 0.000717, 0.000708, 0.000708, 0.000708, -0.000304, -0.000304, 0.000717, 0.001352, 0.002336, 0.000807, 0.00021, 0.001315, 0.000389, 0.00032, -0.000779, 0.001352, -0.000304, -0.000304, 0.000708, -0.000304, 0.000717, 0.001838, 0.000717, 0.000708, 0.001134, 0.001134, 0.001134, 0.001134, 0.001134, 0.001134, 0.001134, 0.000708, 0.000708, 0.000717, 0.001326, 0.001337, 0.002336, 0.000901, 0.000807, 0.000807, 0.000764, 0.000389, -0.000604, 0.000389, 0.000764, -8e-06, -0.000268, -0.000268, 0.002336, -0.000779, 0.000169, 8.8e-05, 0.001838, 8.8e-05, 0.001326, 0.002336, 0.00213, 0.000807, 0.000764, 0.00032, 0.000169, 0.000708, 0.001001, 0.00074, 0.00074, 0.00074, 0.001001, 0.000708, 0.000717, 0.000708, 0.001134, 0.001134, 0.001001, 0.001001, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.001001, 0.001134, 0.000708, 0.000708, 0.001134, 0.000708, 0.000717, 8.8e-05, 0.001326, 0.001337, 0.00032, -0.000604, 0.000807, 0.000807, -0.000604, 0.00213, -0.000604, 0.000389, 0.000764, 0.000389, -0.000604, -0.000604, -0.000604, -0.000604, -0.000604, 0.000764, 0.000764, 0.00213, -0.000268, -0.000268, 0.002336, 0.001337, 0.001352, 0.001352, 0.001326, 0.000605, -8e-06, 0.000389, 0.000389, 0.000901, 0.000901, 0.00213, 0.00032, 0.002336, 0.001337, 0.001337, 0.00032, 0.00213, -0.000604, -0.000604, 0.00213, -8e-06, 0.002336, 0.000605, 0.001326, -0.000779, 0.002336, 0.00032, 0.00213, -0.000604, 0.000774, 0.000389, 0.000764, 0.000389, 0.000389, 0.000389, -0.000604, 0.00032, -0.000779, -0.000779, 0.001326, -0.000779, -8.1e-05, -8.1e-05, -0.000779, 0.000169, 0.001838, 0.000708, 0.000708, 0.000708, -0.000304, 0.000708, -0.000304, 0.000717, 0.001352, 0.001352, 0.001326, 0.000605, 0.000605, 0.001337, 0.001337, -0.000779, 0.001326, -8.1e-05, 0.00032, 0.000901, -0.000129, 0.000686, 0.000686, 0.00039, 0.000743, 0.000743, 0.001315, -0.000129, -0.000129, -0.000129, -0.000129, 0.00021, 0.000743, 0.000743, 0.00021, 0.001315, 0.000807, 0.000389, -0.000268, -0.000779, 0.001326, 0.001352, 0.001352, 0.000169, 0.000169, 0.001326, 0.000605, -0.000268, 0.00032, 0.001337, 0.001337, -0.000779, -0.000779, -0.000779, 0.001326, -0.000779, 0.000605, -0.000268, 0.00213, -8.1e-05, 0.001326, -0.000779, 0.000605, 0.001337, 0.001337, 0.001326, -0.000779, 0.002336, -0.000604, 0.000743, 0.000686, 0.00039, 0.001315, 0.000764, -0.000604, 0.002336, 0.001326, 0.001352, 8.8e-05, 0.000717, -0.000304, 0.000717, 0.000708, -0.000304, 0.000717, -0.000304, 0.000708, 0.000708, 0.000717, -0.000304, -0.000304, 0.001352, 0.000901, 0.00021, 0.00039, 0.00039, 0.001315, -0.000268, -0.000779, 0.001838, 0.001134, 0.001001, 0.001134, 0.000708, 8.8e-05, 0.001326, -0.000779, -8.1e-05, -0.000604, 0.000807, -0.000129, 0.000807, 0.000901, 0.00213, -0.000604, 0.000389, 0.000807, 0.00021, 0.00039, 0.000743, 0.000389, 0.000901, -0.000604, -0.000604, -8e-06, 0.002336, 0.00032, 0.00032, -8e-06, -0.000604, 0.000901, 0.000431, 0.000901, 0.00213, 0.00032, 0.001326, -0.000779, -0.000779, 0.000169, 0.001326, 0.000605, 0.000389, 0.00021, 0.000686, 0.00039, 0.00039, 0.000743, 0.000743, 0.00021, 0.001315, 0.00021, 0.00039, 0.000686, 0.000391, 0.00039, 0.00021, 0.001315, 0.000807, 0.000764, -0.000604, -8e-06, 0.000901, 0.000807, -0.000129, 0.001315, -0.000129, 0.001315, 0.000764, 0.00032, 0.001326, 0.001838, 0.000717, -0.000304, -0.000304, 0.000717, 0.001838, 8.8e-05, 8.8e-05, 0.000169, 0.001352, 0.001838, -0.000304, 0.000717, 0.000717, -0.000304, 0.001134, 0.000708, 0.000717, -0.000779, 0.00032, -0.000604, -0.000604, -8e-06, 0.002336, 0.002336, 0.002336, -8.1e-05, 0.000605, -8.1e-05, -0.000604, 0.000764, 0.000807, -0.000129, 0.000764, -0.000604, 0.00213, -0.000268, -8e-06, -8e-06, -0.000268, -0.000268, -8e-06, -0.000604, -0.000129, 0.00021, -0.000129, 0.000764, 0.000901, -8e-06, 0.00213, -8e-06, -0.000268, -0.000268, 0.00032, -8e-06, -8e-06, -0.000268, 0.001337, 0.001352, 0.000717, 0.000708, 0.001001, 0.00074, 0.001001, 0.001134, 0.001134, 0.000708, -0.000304, 0.000708, 0.000708, 0.001001, 0.00074, 0.000996, 0.001001, 0.001001, 0.001134, -0.000304, 0.000717, 8.8e-05, 0.001352, 0.001326, 0.001326, 0.000717, 0.001134, 0.001001, 0.00074, 0.00074, 0.00074, 0.00074, 0.001134, -0.000304, -0.000304, 0.000708, 0.001001, 0.001001, 0.000996, 0.000996, 0.000996, 0.000806, 0.000806, 0.000996, 0.000996, 0.00074, 0.00074, 0.001001, 0.000708, 8.8e-05, 0.000169, 0.001838, 0.000717, 0.001838, 0.000169, 0.000169, 8.8e-05, 8.8e-05, 0.000717, 0.001134, 0.001001, 0.00074, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.001001, 0.001838, -0.000779, 0.001337, -8.1e-05, -8e-06, -0.000217, -0.000779, 0.001352, 8.8e-05, -0.000304, 0.000708, 0.001134, 0.000708, -0.000304, -0.000304, -0.000304, -0.000304, 0.000708, 0.001134, 0.001001, 0.001134, 0.000708, -0.000304, -0.000304, 8.8e-05, 0.001352, 8.8e-05, -0.000304, -0.000304, -0.000304, 0.000708, 0.000717, -0.000304, -0.000304, 0.000708, 0.000708, 0.000169, 0.00213, 0.00021, 0.00039, 0.001315, 0.000807, 0.000901, 0.00213, 0.00032, -0.000779, 8.8e-05, 8.8e-05, 0.000169, -0.000779, -8.1e-05, -8.1e-05, 0.000605, -0.000779, 0.000605, 0.002336, 0.00032, -0.000604, 0.000764, 0.001315, 0.00039, 0.000686, 0.00039, -0.000129, 0.00213, 0.001337, 0.001352, 0.001134, 0.00074, 0.000996, 0.00074, 0.001001, 0.001134, 8.8e-05, -0.000268, 0.000901, 0.000807, 0.000807, 0.000764, 0.000764, 0.000764, 0.000764, -0.000129, 0.001315, 0.000389, 0.00032, 0.000169, 0.000717, -0.000304, 0.001001, 0.001001, 0.00066, 0.001144, 0.001144, 0.001144, 0.001078, 0.001151, 0.001078, 0.000441, -0.000461, 0.00041, -1.9e-05, -0.000254, 0.000552, 0.000794, 0.000794, -0.000186, 0.000552, -0.000194, 0.001618, 0.001036, 0.000441, 0.000351, 0.000564, 0.001151, 0.00066, 0.001144, 0.001144, 0.001144, 0.00066, 0.00066, 0.001144, 0.001144, 0.001144, 0.001144, 0.000564, 0.000564, 0.001078, 0.001078, 0.001151, 0.001078, 0.001151, 0.000564, 0.001078, 0.001078, 0.00066, 0.00066, 0.001144, 0.001144, 0.001018, 0.001018, 0.001018, 0.001018, 0.001144, 0.001144, 0.00066, 0.00066, 0.00066, 0.00066, 0.00066, 0.00066, 0.00066, 0.000351, 0.000459, 0.001618, 0.00221, -1.9e-05, 0.001666, -0.000254, 0.000642, 0.000642, -0.000254, 0.001666, -1.9e-05, -1.9e-05, 0.000369, -0.000254, 0.000552, 0.00076, -0.000186, 0.000642, -3.5e-05, 0.001399, 0.001036, 0.000459, 0.000441, 0.001036, -0.000194, -1.9e-05, 0.000642, 0.000552, 0.000794, 0.001533, -0.000186, -0.000254, 0.001618, 0.000564, 0.001078, 0.001078, 0.000564, 0.000351, 0.000441, 0.001036, 0.001399, -3.5e-05, -3.5e-05, -0.000194, 0.00041, -0.000194, 0.00243, -0.000194, 0.001036, 0.000459, 6.9e-05, 0.00243, 0.00076, 0.000117, 0.000117, 0.001533, -0.000186, 0.000794, 0.000794, 0.000552, -0.000254, 0.000642, 0.00076, 0.000794, 0.000794, 0.000552, 0.001666, -1.9e-05, -0.000194, -0.000461, 6.9e-05, 0.001399, -3.5e-05, -0.000254, 0.000552, 0.000552, 0.00076, 0.001666, 0.001618, 0.000441, 0.001151, 0.001078, 0.00066, 0.00066, 0.001144, 0.00066, 0.000351, 0.001036, 0.00243, 0.001666, 0.000642, 0.000642, 0.000552, 0.000552, 0.000642, 0.000642, 0.000642, -1.9e-05, 0.001399, -0.000461, 6.9e-05, 0.001036, 0.000564, 0.001151, 0.001078, 0.00066, 0.001144, 0.001144, 0.001137, 0.001144, 0.001144, 0.001144, 0.001018, 0.001144, 0.001144, 0.001144, 0.001018, 0.001018, 0.001018, 0.001018, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.00066, 0.00066, 0.00066, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.00066, 0.001078, 0.000351, 0.000459, 6.9e-05, 0.001399, -1.9e-05, 0.001666, 0.001666, 0.000552, 0.000794, -0.000186, 0.00076, -0.000186, 0.001533, 0.001533, 0.00076, -0.000254, -1.9e-05, -0.000194, 0.00243, -0.000461, -0.000461, -0.000461, 0.00041, 0.00243, 0.00243, -0.000461, 0.001618, 0.000459, 0.000459, 0.001305, 6.9e-05, 0.00041, 0.00243, -1.9e-05, 0.000642, -0.000254, 0.000642, 0.000369, -0.000194, 0.001399, -0.000461, 0.001399, 0.001399, 0.00041, 0.000369, 0.00076, -0.000186, 0.000117, 0.000117, 0.000117, 0.000117, 0.001533, 0.000552, 0.000642, -0.000254, 0.00076, 0.001533, 0.000765, 0.000454, 0.000559, 0.000559, 0.000454, 0.000117, -0.000186, -0.000254, -1.9e-05, -0.000194, -0.000194, 0.001399, 0.00041, -1.9e-05, -1.9e-05, -0.000194, -0.000461, -0.000461, -0.000461, 0.001399, 0.00041, 0.001399, -0.000461, 6.9e-05, 0.001618, 0.001618, 0.001399, 0.00041, -0.000461, 6.9e-05, 0.000564, 0.001078, 0.001078, 0.001078, 0.001078, 0.001078, 0.001151, 0.000351, 0.000351, 0.000441, 0.000351, 0.000351, 0.000351, 0.000351, 0.00053, 0.00041, -1.9e-05, -1.9e-05, 0.00243, 0.00243, 0.001666, -0.000254, 0.00243, 6.9e-05, 0.000459, 0.000351, 0.001305, 0.000459, 0.000459, 0.00041, 0.000369, -0.000254, 0.001666, 0.001666, 0.000552, 0.000642, 0.001666, -0.000254, 0.000552, -0.000254, -0.000254, -1.9e-05, -0.000194, 0.001618, 0.001618, -1.9e-05, 0.001666, 0.001618, 0.001305, 0.001305, 0.000459, 0.001399, -0.000194, 0.00243, -3.5e-05, -3.5e-05, -3.5e-05, 0.000369, 0.001666, -1.9e-05, 0.00243, 0.00041, 6.9e-05, 0.001305, 0.000459, -0.000194, 0.00041, 0.001399, -0.000194, 0.001399, 0.001305, 0.001151, 0.00066, 0.001078, 0.00066, 0.00066, 0.001144, 0.00066, 0.00066, 0.00066, 0.001151, 0.000564, 0.000351, 0.000441, 0.000459, 0.000459, 0.000459, 0.000459, 0.000459, 0.001036, 0.000459, 0.001305, 0.001036, 0.001618, 0.001399, -0.000461, -0.000461, 0.001036, 0.000459, 0.001305, 0.001305, 6.9e-05, 0.00243, 0.00243, 0.001666, -0.000254, 0.001666, -1.9e-05, 0.00041, 0.00041, 0.00243, 0.001399, 0.001618, 6.9e-05, 0.001618, -0.000194, 0.000369, -0.000254, -0.000254, 0.000369, -3.5e-05, -0.000194, 0.00041, 0.00243, -0.000461, 0.001618, -0.000461, 0.001618, 0.00041, -0.000194, 0.001399, 0.00041, 0.00041, 0.001399, 0.001618, 0.00041, 0.001399, 0.001399, 6.9e-05, 0.000431, 6.9e-05, 0.00041, 0.001618, 0.000459, 0.001618, -0.000461, 0.001036, 0.000441, 0.000441, 0.001036, 0.001618, 0.001399, 0.00243, 0.00243, 0.00041, 0.001488, 0.001618, -0.000461, 0.001618, 0.001618, 0.001618, -3.5e-05, 0.000369, 0.000369, 0.00243, 0.001399, 6.9e-05, 0.001305, 0.000441, 0.000351, 0.000564, 0.000564, 0.001151, 0.000564, 0.000564, 0.000564, 0.000564, 0.000351, 0.000351, 0.000564, 0.001151, 0.001151, 0.001151, 0.000564, 0.000351, 0.000351, 0.000351, 0.001151, 0.001078, 0.001078, 0.001151, 0.00066, 0.00066, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001078, 0.001078, 0.001151, 0.001078, 0.001043, 0.00066, 0.001078, 0.001078, 0.000441, 0.000351, 0.000564, 0.000564, 0.00066, 0.001144, 0.001144, 0.001144, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001144, 0.001144, 0.001144, 0.00066, 0.000351, 0.001078, 0.00066, 0.001144, 0.001018, 0.001018, 0.001144, 0.001144, 0.001018, 0.001018, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.00066, 0.001078, 0.001151, 0.001151, 0.001078, 0.001078, 0.001151, 0.000564, 0.000441, 0.001036, 0.001242, -0.000194, -3.5e-05, 0.00243, 0.00243, -0.000194, 0.001399, 0.001399, 0.00041, -0.000194, -0.000194, 0.00243, -0.000194, -0.000194, 0.00041, -0.000194, 0.001399, -0.000461, -0.000194, 0.00041, 0.001305, 0.001151, 0.001151, 0.001078, 0.001151, 0.000564, 0.000564, 0.000351, 0.000564, 0.001151, 0.000564, 0.000351, 0.001305, 0.001399, -1.9e-05, 0.000552, -0.000186, 0.000117, 0.000117, 0.000117, 0.000794, 0.001666, 0.001618, 0.000351, 0.001078, 0.001151, 0.001151, 0.001151, 0.001078, 0.001151, 0.001151, 0.000351, 0.000459, 0.001305, 0.000351, 0.000441, 0.000351, 0.000351, 0.001151, 0.000351, 0.000441, -0.000461, -0.000194, 0.001399, -0.000461, 0.001305, 0.001151, 0.00066, 0.00066, 0.00066, 0.00066, 0.00066, 0.001078, 0.001078, 0.001078, 0.001078, 0.00066, 0.001151, 0.000441, 0.001618, 0.00041, -3.5e-05, -0.000254, 0.000552, 0.000794, 0.00076, 0.000794, 0.00076, -1.9e-05, 0.000459, 0.000351, 0.000351, 0.001151, 0.001151, 0.000564, 0.000564, 0.000564, 0.000351, 0.000351, 0.001305, 0.000441, 0.000441, 0.000564, 0.000459, -0.000461, 0.001618, 6.9e-05, -0.000461, 0.00041, 0.001399, 0.001036, 0.001305, 0.000441, 0.000351, 0.001151, 0.001151, 0.001078, 0.00066, 0.00066, 0.00066, 0.001078, 0.001078, 0.001078, 0.000564, 0.000441, 0.000459, 0.001036, 0.001305, 0.001036, 0.000459, 0.001305, 0.001618, 0.00243, 0.001399, -0.000461, -0.000461, 0.001618, 0.001618, -0.000461, 0.001618, 0.000459, 0.000459, 0.001305, 6.9e-05, 0.001399, 0.001399, 6.9e-05, 0.001036, 6.9e-05, 6.9e-05, 6.9e-05, 0.00041, -0.000194, 0.00041, 6.9e-05, 6.9e-05, 0.001399, 0.001399, -1.9e-05, 0.000552, -0.000186, 0.000794, 0.000552, 0.000642, 0.000369, -1.9e-05, -3.5e-05, -3.5e-05, -3.5e-05, 0.001666, 0.001666, 0.000552, 0.000794, -0.000186, 0.000794, 0.001533, 0.001533, 0.000765, 0.000765, 0.000454, 0.000559, 0.000454, 0.000454, 0.000559, 0.000559, 0.000454, 0.001533, 0.000794, 0.000642, 0.001666, -1.9e-05, 0.000369, -0.000254, 0.000642, 0.000642, 0.00076, -0.000186, 0.000117, 0.000765, 0.000765, 0.000765, 0.000454, 0.000559, 0.000559, 0.000454, 0.000454, 0.000454, 0.000454, 0.000454, 0.000595, 0.000559, 0.001533, 0.00076, 0.000552, 0.000642, 0.000642, 0.00076, 0.000794, 0.000794, 0.001533, 0.001533, 0.000765, 0.000765, 0.000454, 0.000454, 0.000559, 0.000559, 0.000567, 0.000595, -4e-05, -4e-05, 0.000314, 0.000314, -4e-05, 0.000567, 0.001533, -0.000254, -3.5e-05, 0.001399, 0.001036, 0.000459, 0.001618, -0.000461, 0.00041, 0.001666, 0.000794, 0.000117, 0.000454, 0.000567, 0.000595, 0.000595, 0.000314, 0.000314, 8.2e-05, 8.2e-05, 0.000314, 0.000595, 0.000454, 0.000642, 0.00243, 6.9e-05, 0.001305, 0.001305, 0.001305, 0.000459, 0.00041, 0.001666, 0.000552, -0.000186, 0.000117, 0.000765, 0.000559, 0.000595, 0.000595, -4e-05, 0.000314, 8.2e-05, 8.2e-05, 0.000314, -4e-05, 0.000559, 0.00076, 0.00243, 0.001618, 0.000459, 0.000441, 0.000351, 0.001305, 6.9e-05, 0.00041, 0.00041, -0.000194, -1.9e-05, 0.000642, 0.00076, -0.000186, 0.000117, 0.000765, 0.000559, 0.000567, 0.000567, 0.000567, 0.000454, 0.000794, -0.000254, -0.000194, 6.9e-05, 0.001618, 0.000459, 0.001305, 0.000441, 0.000564, 0.000351, 0.000351, 0.000351, 0.000441, 0.001618, -3.5e-05, -0.000254, 0.00076, 0.000765, 0.000567, 0.000595, 0.000595, 0.000567, 0.000559, 0.001533, 0.000552, -0.000254, 0.000369, -0.000194, 0.00041, 0.00041, 6.9e-05, 0.001036, 6.9e-05, 0.00041, -1.9e-05, 0.001666, 0.000642, 0.000552, 0.000794, 0.000794, 0.00076, 0.00076, 0.001533, 0.000765, 0.000595, -4e-05, -4e-05, 0.000567, 0.000454, 0.000794, 0.000642, -3.5e-05, 0.001399, 0.000459, 0.000441, 0.000441, 0.000441, 0.000441, 0.001305, 0.001036, 6.9e-05, 0.001399, -0.000194, -0.000461, -3.5e-05, 0.000369, 0.000552, 0.000642, 0.000642, 0.000794, -0.000186, -0.000186, -0.000186, 0.000794, -0.000186, -0.000254, 0.00243, 0.001036, 0.001305, 0.000441, 0.000351, 0.001036, -0.000461, 0.00041, -1.9e-05, 0.000552, 0.000765, 0.000567, 0.000595, -4e-05, -4e-05, -4e-05, 0.000314, 8.2e-05, 8.2e-05, 0.000314, 0.000314, 0.000567, 0.000454, -0.000254, -0.000461, 0.001305, 0.000351, 0.000351, 0.000351, 0.000441, 0.000459, 0.000492, -3.5e-05, 0.000642, -0.000186, 0.000117, 0.000117, 0.000117, 0.000559, 0.000559, 0.000595, 0.000567, 0.000567, 0.000567, 0.000567, 0.000454, 0.000117, 0.000552, -1.9e-05, 0.001399, 0.001618, 0.001618, 6.9e-05, 0.001036, 0.000459, 6.9e-05, 6.9e-05, 6.9e-05, 0.000459, 0.001036, 6.9e-05, 0.001399, -3.5e-05, 0.00076, 0.000765, 0.000567, 0.000595, 0.000595, 0.000595, 0.000595, 0.000567, 0.000765, -0.000186, 0.000642, -0.000194, -0.000461, 0.001618, 6.9e-05, 0.001618, 0.001618, 6.9e-05, 0.001618, 0.001399, 0.00041, -0.000194, -1.9e-05, 0.000369, -1.9e-05, 0.000369, -0.000254, 0.00076, 0.001533, 0.000117, 0.000117, 0.000765, 0.000791, 0.000369, -0.000194, 0.001399, -0.000461, 0.001399, 0.001399, 0.001399, 0.001399, 0.00243, -3.5e-05, 0.000642, -0.000186, 0.001533, 0.001533, 0.000454, 0.000595, -4e-05, 0.000314, 0.000314, 0.000314, -4e-05, 0.000567, 0.000559, 0.001533, -0.000254, 0.00041, 0.001618, 0.001618, 6.9e-05, 0.001618, -0.000461, -3.5e-05, 0.000552, 0.000765, 0.000567, 0.000595, 0.000595, -4e-05, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000182, 0.000182, 8.2e-05, 0.000314, 0.000567, 0.001533, -0.000254, -3.5e-05, 0.001399, 0.001399, 0.001399, 0.001399, 0.001399, -3.5e-05, 0.00076, 0.000559, 0.000595, 0.000567, 0.000454, 0.000559, 0.000595, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 8.2e-05, 0.000314, 0.000595, 0.000765, 0.00076, 0.001666, -3.5e-05, 0.00243, 0.00243, 0.00243, 0.001666, 0.00076, 0.000454, 0.000595, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 8.2e-05, 0.000314, -4e-05, 0.000454, 0.000794, -0.000254, -1.9e-05, 0.00243, -0.000194, -1.9e-05, 0.00076, 0.001533, 0.000559, 0.000314, 0.000314, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 8.2e-05, 0.000314, -4e-05, 0.000595, 0.000454, 0.000765, 0.001533, 0.00076, 0.000552, 0.001666, 0.000369, 0.000369, 0.000369, 0.000369, 0.000552, -0.000186, 0.000454, 0.000595, 0.000314, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000182, 0.000182, 0.000182, 0.000182, 0.000314, -4e-05, 0.000454, 0.001533, 0.000642, 0.000642, 0.00076, 0.000794, 0.00076, -0.000254, 0.00076, 0.000794, -0.000186, 0.000567, 0.000314, 0.000314, 0.000314, 0.000567, 0.000567, -4e-05, 0.000595, 0.000567, 0.000765, 0.000454, -0.000186, 0.000369, -0.000461, 0.001618, 6.9e-05, 0.000459, 0.000441, 0.000441, 0.000441, 0.001305, 0.000459, 0.000459, 0.000459, 0.001618, 0.00243, 0.000552, 0.000117, 0.000559, 0.000454, 0.000794, 0.000552, -0.000254, -0.000254, -3.5e-05, 0.00041, 0.001618, 6.9e-05, 0.001036, 0.000459, 0.000459, 0.001618, 0.001666, 0.000794, 0.000117, 0.000454, 0.000559, 0.000567, 0.000567, 0.000567, 0.000567, 0.000595, 0.000595, 0.000595, -4e-05, 0.000314, -4e-05, 0.000595, 0.000117, 0.00243, 0.000459, 0.000459, 0.001305, 0.000441, 0.000351, 0.000351, 0.000351, 0.000441, 0.000459, -0.000461, 0.001666, 0.000552, 0.000117, 0.000567, -4e-05, 0.000314, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, -4e-05, 0.000454, 0.000794, -3.5e-05, -0.000461, 6.9e-05, 0.00041, -3.5e-05, -3.5e-05, 0.001666, -0.000254, 0.000794, 0.000454, 0.000595, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, 0.000314, 0.000567, 0.00076, -1.9e-05, 0.00243, 0.00041, 0.001399, 0.00041, -0.000194, 0.001666, 0.000794, 0.001533, 0.000765, 0.000567, 0.000595, 0.000595, 0.000595, -4e-05, 0.000595, 0.000595, 0.000567, 0.000567, 0.000567, 0.000559, 0.000117, 0.000552, 0.000642, 0.001666, -3.5e-05, -3.5e-05, 0.000552, 0.001533, 0.000117, 0.000117, 0.000765, 0.000559, 0.000595, -4e-05, 0.000314, 8.2e-05, 0.000314, -4e-05, 0.000559, 0.001533, 0.00076, 0.000552, 0.000552, 0.000642, 0.001666, -3.5e-05, 0.00243, -0.000194, 0.00041, 6.9e-05, 6.9e-05, 6.9e-05, 0.001036, 0.001036, 0.001036, 0.001036, 0.001036, 0.001036, 6.9e-05, 0.001399, -3.5e-05, 0.001666, 0.00076, -0.000186, -0.000186, -0.000186, 0.000117, -0.000186, 0.000642, -2e-05, -0.000194, 0.00041, -0.000194, 0.00041, 0.001399, -0.000461, -0.000461, 0.00243, -1.9e-05, 0.001666, 0.000642, 0.00076, 0.000117, 0.000765, 0.000559, 0.000454, 0.000454, 0.000559, 0.000567, 0.000567, 0.000595, 0.000595, 0.000559, 0.000117, 0.00076, 0.000642, 0.000642, -0.000254, -0.000254, 0.000552, 0.000794, 0.000765, 0.000559, 0.000567, 0.000765, 0.000454, 0.000595, 0.000595, 0.000314, -4e-05, 0.000314, 0.000314, 0.000314, 0.000314, 8.2e-05, 0.000314, 0.000595, 0.000454, 0.000117, 0.001533, 0.001533, 0.000117, 0.000765, 0.000559, 0.000567, 0.000595, 0.000567, 0.000595, 0.000595, -4e-05, -4e-05, 0.000314, 0.000314, 0.000314, 0.000314, 0.000314, -4e-05, 0.000567, 0.000559, 0.000559, 0.000117, 0.000794, 0.00076, 0.000552, 0.000642, -0.000254, -0.000254, 0.000794, 0.000117, 0.000454, 0.000454, 0.000117, 0.000794, 0.000794, -0.000186, 0.001533, 0.000765, 0.000595, 0.000314, 8.2e-05, 8.2e-05, 0.000314, 0.000314, 0.000595, 0.000454, 0.001533, 0.00076, -0.000186, -0.000186, 0.000794, -0.000186, 0.000454, 0.000567, 0.000567, 0.000567, 0.000567, 0.000559, 0.000559, 0.000595, -4e-05, -4e-05, -4e-05, 0.000595, 0.000595, 0.000567, 0.000559, 0.000549, 0.000454, 0.000559, 0.000454, -0.000186, 0.000552, 0.000642, -0.000254, -0.000254, 0.000642, 0.000552, 0.000794, 0.00076, -0.000186, 0.001533, 0.000765, 0.000454, 0.000559, 0.000595, -4e-05, -4e-05, -4e-05, -4e-05, 0.000567, 0.000559, 0.000765, 0.000794, -0.000254, -1.9e-05, 0.00243, 0.001399, -0.000461, -0.000461, -0.000461, -0.000194, 0.00243, -1.9e-05, 0.000642, 0.000794, 0.001533, 0.000559, -4e-05, 8.2e-05, 8.2e-05, 8.2e-05, 0.000314, 0.000314, 8.2e-05, 0.000314, -4e-05, 0.000559, 0.000117, 0.000642, 0.000369, -1.9e-05, 0.000369, -0.000254, 0.00076, 0.000794, 0.00076, 0.000117, 0.000567, 0.000595, 0.000314, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, 0.000314, 0.000314, 0.000314, 0.000595, 0.000559, 0.000765, 0.000794, 0.000369, 0.000642, 0.000794, 0.000117, 0.000454, 0.000454, 0.000454, 0.000559, 0.000595, -4e-05, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000474, 0.000474, 0.000182, 0.000182, 0.000314, -4e-05, 0.000559, 0.001533, 0.000642, 0.000369, -0.000254, 0.000642, 0.000794, -0.000186, -0.000186, 0.000117, -0.000186, 0.000117, 0.000559, -4e-05, 0.000595, -4e-05, 8.2e-05, 0.000314, 0.000314, 0.000314, 0.000314, 8.2e-05, 0.000182, 8.2e-05, -4e-05, 0.000567, 0.000454, 0.000765, 0.001533, 0.000117, 0.000454, 0.000567, 0.000595, 0.000595, -4e-05, 0.000283, 8.2e-05, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 0.000182, 0.000314, 0.000567, 0.001533, 0.000552, 0.001557, -1.9e-05, 0.000173, -0.000194, 0.00243, -0.000194, 0.00243, 0.00243, 0.001666, 0.000794, 0.000559, 0.000314, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 8.2e-05, 8.2e-05, 0.000314, -4e-05, 0.000595, 0.000559, 0.001533, 0.00076, 0.001666, -1.9e-05, 0.000369, 0.001666, 0.000642, 0.000794, 0.000765, -4e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 8.2e-05, 0.000314, -4e-05, 0.000567, 0.000117, 0.000552, 0.000642, 0.000552, 0.000642, 0.001666, 0.001666, -3.5e-05, 0.00243, -3.5e-05, -3.5e-05, -0.000254, -0.000186, 0.000117, 0.000559, 0.000595, 0.000595, -4e-05, -4e-05, 0.000314, 8.2e-05, 8.2e-05, 8.2e-05, 0.000314, 0.000314, 0.000595, 0.000567, 0.000559, 0.000559, 0.000454, 0.000765, 0.000765, 0.000765, 0.000454, 0.000559, 0.000595, -4e-05, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 8.2e-05, 2e-05, 0.000765, 0.000794, 0.000642, -0.000254, -0.000254, -0.000254, -0.000254, -0.000254, 0.000642, -0.000186, 0.000567, -4e-05, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 0.000314, 0.000567, 0.000117, 0.000642, 0.000369, -3.5e-05, 0.000552, 0.000794, 0.000765, 0.000454, 0.000454, 0.000454, 0.000454, 0.000454, 0.000567, 0.000567, 0.000567, -4e-05, 8.2e-05, 0.000182, 0.000182, 8.2e-05, 8.2e-05, 0.000314, 0.000595, 0.000595, 0.000559, 0.000454, 0.000552, -3.5e-05, 0.00243, 0.00243, -0.000194, 0.00243, -1.9e-05, 0.000642, 0.000794, 0.001533, 0.000454, 0.000559, 0.000559, 0.000567, 0.000567, -4e-05, 0.000314, 0.000314, -4e-05, 0.000567, 0.000454, 0.000454, 0.000454, 0.000765, 0.001533, -0.000186, 0.000794, 0.000794, 0.000794, -0.000186, 0.000765, 0.000454, 0.000567, 0.000567, 0.000595, -4e-05, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, -4e-05, 0.000559, -0.000186, 0.000642, 0.001666, 0.001666, 0.001666, 0.001666, 0.000552, -0.000186, 0.001533, 0.000454, 0.000567, 0.000595, -4e-05, -4e-05, 0.000314, 0.000182, 0.000182, 8.2e-05, 0.000283, 0.000314, 8.2e-05, 0.000314, 0.000595, 0.000765, 0.000552, -1.9e-05, -3.5e-05, 0.00243, -0.000194, 0.00041, 0.00243, -0.000254, 0.000794, 0.001533, 0.000454, 0.000595, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, 0.000314, -4e-05, 0.000567, 0.000559, 0.000567, 0.000765, 0.000454, 0.000559, 0.000559, 0.000567, 0.000559, 0.000454, 0.000559, 0.000567, -4e-05, 0.000314, 8.2e-05, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 0.000182, 0.000314, -4e-05, 0.000595, 0.000567, 0.000454, 0.000559, 0.000567, 0.000595, 0.000595, 0.000595, -4e-05, 0.000314, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 4.5e-05, 4.5e-05, 4.5e-05, 0.000474, 8.2e-05, -4e-05, 0.000454, -0.000186, 0.000552, 0.001666, 0.001666, 0.001666, -0.000254, 0.000794, 0.001533, 0.000117, 0.000567, 0.000567, 0.000595, -4e-05, -4e-05, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000314, 0.000595, 0.000559, 0.000117, 0.001533, 0.00076, 0.001666, 0.000369, -3.5e-05, 0.00243, 0.00243, 0.000369, 0.00076, 0.000559, -4e-05, 8.2e-05, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000182, 0.000182, 8.2e-05, 0.000314, -4e-05, 0.000559, 0.000117, 0.001533, 0.001533, 0.000794, -0.000186, -0.000186, -0.000186, 0.000765, 0.000567, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000474, 4.5e-05, 4.5e-05, 0.000474, 0.000474, 0.000474, 0.000182, 8.2e-05, -4e-05, 0.000559, 0.000765, 0.000765, 0.001533, 0.001533, 0.000117, 0.000117, 0.000117, 0.000765, 0.000559, 0.000595, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 8.2e-05, 0.000314, -4e-05, 0.000595, 0.000567, 0.000567, 0.000559, 0.000117, 0.001533, 0.001533, 0.001533, -0.000186, 0.000794, 0.000552, 0.00076, -0.000186, 0.001533, 0.001533, 0.000117, 0.000567, -4e-05, -4e-05, 0.000314, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, 0.000314, 0.000595, 0.000567, 0.000559, 0.000559, 0.000454, 0.000454, 0.000454, 0.000454, 0.000454, 0.000454, 0.000559, 0.000567, -4e-05, 0.000314, -4e-05, 0.000595, -4e-05, 0.000314, -4e-05, -4e-05, 0.000567, -4e-05, 0.000595, 0.000595, 0.000567, 0.000765, 0.000117, 0.000765, 0.000117, 0.001533, -0.000186, 0.001533, 0.000117, 0.000559, 0.000595, 0.000595, -4e-05, 8.2e-05, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000182, 0.000182, 8.2e-05, -4e-05, 0.000117, 0.00076, 0.000642, 0.001666, 0.001666, 0.000552, -0.000186, 0.000765, 0.000454, 0.000559, 0.000559, 0.000454, 0.000454, 0.000567, 0.000314, 8.2e-05, 8.2e-05, 8.2e-05, 0.000182, 0.000182, 8.2e-05, 8.2e-05, 8.2e-05, 0.000595, 0.001533, 0.000552, -0.000254, 0.001666, -1.9e-05, 0.001666, 0.00076, 0.000765, 0.000765, 0.000117, 0.000559, 0.000567, -4e-05, -4e-05, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, 0.000314, 0.000567, 0.000765, 0.00076, -0.000254, 0.001666, 0.001666, 0.000642, 0.000794, -0.000186, 0.000117, 0.000454, 0.000559, 0.000559, 0.000595, 8.2e-05, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, 8.2e-05, -4e-05, 0.000559, 0.001533, -0.000186, 0.000552, -0.000254, 0.000642, -0.000254, 0.000642, -0.000186, 0.000117, 0.000765, 0.000567, 0.000595, 0.000567, -4e-05, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, -4e-05, 0.000454, 0.000552, -0.000194, 0.00041, 0.001399, -0.000461, 0.001618, 0.001036, 0.001036, 0.001036, 0.001036, 6.9e-05, -0.000461, 0.001399, -3.5e-05, 0.000369, 0.000552, 0.000794, 0.000117, 0.000117, 0.000765, 0.000765, 0.000765, 0.000765, 0.000559, 0.000765, 0.000117, -0.000186, 0.00076, -0.000254, 0.001666, 0.000369, 0.000369, -0.000254, 0.00076, -0.000186, -0.000186, 0.000117, 0.000454, 0.000559, 0.000559, 0.000567, -4e-05, 0.000314, 0.000314, 8.2e-05, 8.2e-05, 0.000314, 0.000595, 0.000117, 0.001666, -0.000194, -0.000461, 0.001399, -0.000194, 0.00243, -1.9e-05, -0.000254, 0.00076, 0.001533, 0.000765, 0.000559, 0.000595, -4e-05, 0.000314, 0.000182, 0.000182, 0.000474, 0.000182, 0.000182, 0.000314, 0.000559, 0.000117, 0.000642, 0.001666, -3.5e-05, 0.00243, 0.00041, 0.001399, 0.00243, 0.000642, 0.001533, 0.000454, 0.000567, 0.000595, 0.000595, 0.000595, 0.000314, 0.000314, 8.2e-05, 8.2e-05, 0.000314, 0.000595, 0.000567, 0.000567, 0.000595, 0.000567, 0.000765, 0.00076, 0.001666, -3.5e-05, 0.00243, -3.5e-05, -3.5e-05, -3.5e-05, 0.001666, 0.000552, -0.000186, 0.000117, 0.000765, 0.000559, 0.000595, -4e-05, -4e-05, 0.000314, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, -4e-05, 0.000595, 0.000765, -0.000186, 0.000552, 0.00076, 0.000794, 0.000794, 0.000794, 0.000117, 0.000117, 0.000454, 0.000559, 0.000595, -4e-05, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000182, 0.000314, 0.000454, 0.000794, -0.000254, 0.00243, 0.001618, 6.9e-05, 0.001036, 0.001036, 0.001036, 6.9e-05, 6.9e-05, 0.00041, 0.00076, 0.000559, -4e-05, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, 0.000314, 0.000567, 0.000559, 0.000559, 0.000117, 0.000552, -3.5e-05, 0.001618, 6.9e-05, 6.9e-05, 6.9e-05, 0.001399, -0.000194, 0.00041, 0.00041, -3.5e-05, 0.000369, -3.5e-05, -2e-05, -1.9e-05, -0.000254, -0.000186, 0.000794, 0.00076, 0.000552, 0.000552, -0.000186, 0.000117, 0.000765, 0.000765, -0.000186, 0.00076, 0.000552, -0.000254, 0.000369, -3.5e-05, -0.000194, -0.000194, -0.000461, 0.001399, 0.000369, 0.000642, 0.000117, 0.000567, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000474, 0.000182, -4e-05, 0.000559, 0.001533, -0.000254, -3.5e-05, 0.00243, -0.000194, 0.00041, 0.00041, 0.000369, 0.000642, 0.000552, 0.000794, 0.000567, -4e-05, 0.000314, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000182, 0.000182, 0.000182, 0.000314, -4e-05, 0.000595, 0.000117, 0.000552, -3.5e-05, -3.5e-05, 0.000369, -1.9e-05, -3.5e-05, 0.001666, 0.001533, 0.000559, 0.000595, -4e-05, 0.000314, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 0.000182, 0.000182, 0.000182, -4e-05, 0.000559, -0.000186, 0.001666, -1.9e-05, -3.5e-05, -1.9e-05, 0.000552, 0.000794, 0.00076, 0.000552, 0.00076, 0.000765, 0.000595, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 0.000314, 0.000567, -0.000186, -0.000186, 0.00076, 0.000642, 0.001666, 0.000552, 0.000794, 0.000794, -0.000186, 0.00076, 0.000369, 0.001666, 0.00076, 0.000765, 0.000567, 0.000314, 0.000314, 8.2e-05, 8.2e-05, 0.000182, 8.2e-05, 0.000182, 0.000314, 0.000595, 0.000567, 0.000559, 0.001533, 0.00076, 0.00076, -0.000105, -0.000186, 0.001533, 0.000765, 0.000117, 0.000454, 0.000559, 0.000567, 0.000595, -4e-05, 0.000314, 0.000314, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, 0.000314, 0.000567, 0.000765, 0.00076, 0.000369, 0.00243, -0.000194, -0.000144, 0.00041, 0.001399, -0.000461, -3.5e-05, -3.5e-05, -3.5e-05, -1.9e-05, 0.000369, 0.000552, 0.000794, -0.000186, 0.000559, -4e-05, -4e-05, 0.000314, 0.000595, 0.000567, 0.000765, 0.001533, 0.000642, -3.5e-05, -0.000194, 0.001399, 6.9e-05, 6.9e-05, 6.9e-05, 0.001618, 6.9e-05, 0.001618, 0.00243, 0.001666, 0.001533, 0.000595, -4e-05, 0.000314, 0.000182, 0.000182, 0.000182, 8.2e-05, 0.000314, -4e-05, 0.000559, 0.000765, 0.001533, -0.000186, 0.00076, -0.000254, -1.9e-05, -1.9e-05, -1.9e-05, 0.000369, 0.000552, 0.00076, 0.00076, 0.000117, 0.000567, -4e-05, 8.2e-05, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, -4e-05, 0.000454, 0.000642, -1.9e-05, -3.5e-05, -0.000194, 0.00041, -0.000194, -3.5e-05, 0.000552, -0.000186, 0.001533, 0.000117, 0.000559, 0.000567, 0.000595, 0.000595, -4e-05, 8.2e-05, 0.000314, 0.000314, -4e-05, 0.000559, 0.000117, -0.000186, 0.000552, 0.00243, 0.001618, 0.001036, 0.000459, 0.000459, 0.000459, 0.00099, 6.9e-05, -3.5e-05, -1.9e-05, 0.000642, 0.000794, 0.000794, 0.000794, -0.000186, 0.000765, 0.000454, 0.000559, 0.000567, 0.000559, 0.000454, 0.001533, 0.000794, 0.000642, 0.00243, 0.001618, 0.001036, 0.001305, 0.001305, 0.001036, 6.9e-05, 0.001399, 0.000369, 0.001666, 0.000552, 0.000552, 0.001533, 0.000454, 0.000454, 0.000567, 0.000567, 0.000765, -0.000186, 0.000794, 0.000794, 0.000791, 0.000552, 0.000369, 0.00041, 0.001618, 0.001036, -0.000461, 0.00243, -0.000461, -0.000461, 0.001618, 6.9e-05, 0.000459, 0.001036, 0.001036, 0.001036, 0.001618, 0.00041, 0.000369, 0.000642, 0.000794, 0.001533, 0.000117, 0.000794, -0.000254, 0.001666, -3.5e-05, 0.00041, -0.000461, -0.000461, 0.001399, -0.000194, -1.9e-05, -3.5e-05, 0.001666, 0.000642, -0.000254, 0.000369, 0.00041, 0.00041, 0.001399, -0.000461, -0.000461, 0.001618, -0.000461, 0.00041, -0.000194, 0.00243, 0.00243, 0.00041, 0.001399, -0.000461, 6.9e-05, 6.9e-05, 0.001618, 0.001618, 6.9e-05, 0.001036, 0.000459, 0.000459, 0.001036, 6.9e-05, 0.001618, 0.001399, 0.000369, 0.00076, 0.000117, 0.000765, 0.000567, 0.000283, 8.2e-05, 0.000182, 8.2e-05, 0.000595, 0.000454, 0.001533, 0.000552, 0.000642, 0.000642, 0.000552, 0.000552, 0.000642, 0.000642, 0.00076, 0.00076, -0.000186, 0.000454, 0.000567, 0.000314, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 0.000314, 0.000595, 0.000559, 0.000117, 0.000552, 0.000642, 0.000642, 0.000369, 0.001666, 0.000642, 0.000552, 0.000794, 0.000765, 0.000595, 0.000314, 0.000182, 0.000182, 0.000474, 0.000474, 4.5e-05, 4.5e-05, 4.5e-05, 0.000474, 0.000182, 0.000314, 0.000765, 0.000552, 0.000369, -1.9e-05, -2e-05, -1.9e-05, 0.000369, -0.000254, -0.000254, -0.000254, 0.000552, -0.000186, 0.000117, 0.000559, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, -4e-05, 0.000117, 0.000642, -1.9e-05, 0.00243, -3.5e-05, 0.00243, 0.00243, 0.001557, 0.000642, -0.000186, 0.000559, -4e-05, 0.000595, 0.000595, -4e-05, 0.000314, 0.000314, 0.000314, 8.2e-05, 0.000314, 8.2e-05, 8.2e-05, -4e-05, 0.000454, -0.000186, 0.000642, 0.000369, -1.9e-05, -3.5e-05, -3.5e-05, 0.00243, 0.000369, -0.000254, -0.000254, 0.001666, 0.000552, 0.000765, 0.000567, 0.000314, 0.000314, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, -4e-05, -4e-05, 0.000559, 0.001389, 0.000552, 0.000369, -3.5e-05, -0.000194, -0.000194, -0.000194, -0.000194, 0.00041, -0.000194, 0.001399, 0.001399, 0.00243, 0.000552, 0.001533, 0.000559, 0.000595, 0.000314, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, 0.000314, 0.000567, 0.000794, -1.9e-05, 0.00243, -0.000194, 0.00041, 0.00041, 0.00041, 0.00041, -0.000194, 0.00243, -0.000194, -3.5e-05, 0.001666, 0.000552, -0.000186, 0.000117, 0.000765, 0.000454, 0.000567, 0.000595, -4e-05, -4e-05, 0.000595, 0.000559, 0.000765, 0.001533, -0.000186, 0.00076, -0.000254, 0.000369, -1.9e-05, 0.001666, 0.000552, 0.000794, 0.000794, -0.000186, 0.001533, 0.000765, 0.000765, 0.000595, 8.2e-05, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000182, 8.2e-05, 0.000595, 0.001533, 0.000642, 0.000369, -1.9e-05, -1.9e-05, 0.00243, -1.9e-05, -0.000254, 0.000642, 0.00076, 0.000233, 0.000559, 0.000595, 0.000314, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 8.2e-05, -4e-05, 0.000559, 0.000794, 0.001666, 0.00243, 0.00041, 0.001399, 0.00041, -0.000194, 0.00041, 0.00041, -0.000254, 0.00076, 0.000765, 0.000567, 0.000559, 0.001533, 0.001533, 0.000765, 0.000454, 0.000765, 0.000117, 0.000117, 0.001533, -0.000186, 0.00076, 0.001666, -1.9e-05, 0.00243, 0.000642, -0.000254, -0.000254, -0.000254, -0.000254, 0.000642, 0.000794, 0.000794, -0.000105, 0.000794, -0.000186, 0.000765, 0.000567, 0.000314, 8.2e-05, 8.2e-05, 0.000182, 0.000182, 0.000182, 8.2e-05, 8.2e-05, 0.000314, 0.000567, 0.000454, 0.000117, 0.001533, 0.000117, 0.000117, 0.000117, 0.000454, 0.000567, 0.000567, 0.000567, 0.000567, 0.000567, 0.000595, -4e-05, -4e-05, 0.000595, 0.000567, 0.000567, 0.000567, 0.000559, 0.000765, 0.000765, 0.000567, 0.000559, 0.000559, 0.000454, 0.000765, 0.000117, -0.000186, 0.000794, 0.00076, 0.00076, 0.000552, 0.00076, -0.000186, 0.000454, 0.000559, 0.000567, 0.000595, -4e-05, 0.000314, 0.000314, 0.000314, 0.000314, -4e-05, 0.000559, 0.001533, -0.000254, -0.000194, 0.001399, 6.9e-05, 0.001305, 0.000459, 6.9e-05, 0.001618, 0.001618, 0.001618, -0.000461, 0.001666, 0.00076, 0.000117, 0.000559, 0.000595, -4e-05, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 8.2e-05, 0.000314, 0.000559, 0.001533, 0.000642, -3.5e-05, 0.001399, 0.001618, 0.001618, 0.001399, 0.00041, 0.00041, -0.000194, -0.000254, -0.000186, 0.000454, 0.000595, 0.000314, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000314, 0.000595, 0.000454, 0.001533, -0.000186, 0.00076, -0.000254, -0.000194, -0.000461, 0.00041, -0.000194, 0.00041, -0.000194, -1.9e-05, 0.000642, 0.000117, 0.000595, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, 0.000314, 0.000567, 0.001533, 0.001666, 0.00243, -0.000461, 0.001399, 0.00041, 0.00041, -0.000194, 0.00243, 0.000369, -0.000254, 0.000642, -0.000186, 0.000567, 0.000314, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000182, 8.2e-05, 2e-05, 0.000117, -0.000186, 0.000794, 0.000794, 0.00076, 0.00076, 0.000794, 0.000117, 0.000559, 0.000559, 0.000454, 0.000559, 0.000595, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, -4e-05, 0.000567, 0.000454, 0.000117, -0.000186, -0.000186, 0.001533, 0.001533, 0.000765, 0.000559, 0.000567, 0.000559, 0.000559, 0.000567, 0.000567, 0.000595, -4e-05, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 8.2e-05, -4e-05, 0.000454, 0.000552, -3.5e-05, 0.001618, 0.001036, 0.001305, 0.000459, 6.9e-05, 6.9e-05, -0.000461, -0.000461, -0.000461, 0.001399, 0.000369, 0.000794, 0.000765, -4e-05, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, 0.000314, 0.000567, 0.000765, 0.000794, -0.000194, 6.9e-05, 0.001399, -1.9e-05, 0.00243, -3.5e-05, -1.9e-05, -1.9e-05, -3.5e-05, 0.001666, -0.000254, 0.000794, 0.000454, -4e-05, 0.000314, 0.000314, 0.000314, -4e-05, -4e-05, -4e-05, -4e-05, 0.000595, 0.000567, 0.000765, -0.000254, -0.000194, 0.001399, 0.00041, 0.00041, 0.00041, -0.000194, -0.000194, -0.000194, -0.000194, -3.5e-05, 0.000369, 0.001666, 0.000369, 0.000369, -0.000186, 0.000567, 0.000314, 8.2e-05, 8.2e-05, 0.000314, 0.000567, 0.000765, -0.000105, 0.001666, -0.000194, 0.001399, -0.000461, -0.000461, -0.000461, -0.000194, -1.9e-05, 0.00076, -0.000186, -0.000186, 0.001533, 0.000559, 0.000567, 0.000567, 0.000595, 0.000595, 0.000595, 0.000567, 0.000559, 0.000765, -0.000186, 0.000369, -0.000461, 0.001036, 0.00099, 0.000459, 0.001036, 0.001036, 6.9e-05, 0.001618, -0.000194, 0.001399, -0.000461, 0.001399, 0.001399, -0.000194, -1.9e-05, 0.001666, 0.000552, 0.001533, 0.000559, 0.000595, -4e-05, 0.000567, 0.000117, 0.000642, -0.000194, 6.9e-05, 0.000459, 0.000441, 0.000351, 0.000351, 0.000351, 6.9e-05, 0.00243, 0.001666, -0.000254, 0.000552, -0.000186, 0.001533, 0.001533, 0.000117, 0.000454, 0.000559, 0.000765, 0.000765, 0.000117, -0.000186, -0.000254, 0.000369, -0.000194, 0.000459, 0.000351, 0.000351, 0.000441, 0.000351, 0.000351, 0.000351, 0.001305, 6.9e-05, 0.001618, 0.001036, 0.000459, 0.000459, 0.001618, 0.00243, 0.001666, 0.00076, 0.001533, 0.001533, 0.000765, 0.000117, -0.000186, 0.000552, -3.5e-05, -0.000461, 6.9e-05, 0.000459, 0.000459, 0.001305, 0.001305, 0.001305, 0.001305, 0.000441, 0.000351, 6.9e-05, 0.00041, -3.5e-05, 0.000369, 0.00243, 0.001399, 6.9e-05, -0.000194, -0.000254, 0.000642, 0.001666, -0.000194, -0.000461, 0.001618, 0.001618, 0.001036, 0.001305, 0.001305, 0.001305, 0.000459, 0.000459, 0.001305, 0.000459, 0.001618, 0.001399, -1.9e-05, 0.001666, -0.000254, 0.000794, -0.000186, 0.000117, 0.000454, 0.000559, 0.000595, 0.000595, 0.000567, 0.000454, 0.000642, 0.001618, 0.000431, 0.000564, 0.001151, 0.001078, 0.001078, 0.001078, 0.001151, 0.000564, 0.000564, 0.001078, 0.001078, 0.001078, 0.001078, 0.001078, 0.00066, 0.001078, 0.001078, 0.00066, 0.000441, 0.001036, 0.00243, -0.000194, 0.001305, 0.001151, 0.001151, 0.000564, 0.000564, 0.000564, 0.000351, 0.000441, 0.000459, 0.001036, 6.9e-05, 0.001399, 0.00041, 0.00041, -0.000194, -1.9e-05, 0.001666, 0.00076, 0.001533, 0.000559, 0.000595, 0.000595, 0.000595, 0.000765, 0.000552, 0.00243, 6.9e-05, 0.001305, 0.000441, 0.000441, 0.000441, 0.000441, 0.000459, -0.000461, 0.00041, 0.00243, 0.001666, 0.001533, 0.000765, 0.000454, 0.000559, 0.000567, 0.000595, -4e-05, -4e-05, 0.000595, 0.000454, 0.001533, -0.000254, -0.000194, 0.001618, 0.001399, 0.001618, -0.000461, 0.001399, -3.5e-05, 0.000552, 0.000552, 0.000369, -1.9e-05, -3.5e-05, -3.5e-05, 0.000552, 0.001533, 0.000117, 0.000765, 0.000559, 0.000562, 0.000567, 0.000765, 0.000794, 0.000794, -0.000186, -0.000186, 0.001666, -0.000194, 0.00243, 0.00243, -0.000461, 0.001036, 6.9e-05, 6.9e-05, 0.001036, 0.000459, 0.000459, -0.000194, 0.001666, 0.000794, 0.000117, 0.000765, 0.000454, 0.000559, 0.000454, 0.001533, 0.000369, 0.001618, 0.000459, 0.000564, 0.001151, 0.001078, 0.001151, 0.001151, 0.001151, 0.000564, 0.000564, 0.000564, 0.001151, 0.000564, 6.9e-05, 0.00243, -1.9e-05, -0.000254, 0.00076, -0.000186, 0.000765, 0.000454, 0.000454, 0.000765, 0.00076, 0.001666, 0.00041, 0.001036, 0.001036, 0.001036, 0.001305, 0.000351, 0.000351, 0.000351, 0.000351, 0.000564, 0.001151, 0.000351, 0.001305, 0.001399, 0.000642, 0.000765, 0.000559, -4e-05, 0.000314, 8.2e-05, 0.000314, -4e-05, 0.000595, 0.000595, 0.000454, -0.000186, 0.000642, 0.001666, 0.001666, -0.000254, 0.000552, 0.00076, 0.001533, 0.001533, 0.000794, 0.000117, 0.000117, 0.000117, 0.000117, 0.000117, 0.000454, 0.000559, 0.000567, 0.000567, 0.000567, 0.000559, -0.000186, -3.5e-05, 6.9e-05, 0.001036, 0.000441, 0.001151, 0.000351, 0.001036, 6.9e-05, 0.00041, -3.5e-05, 0.000369, 0.001666, -3.5e-05, -0.000461, 0.001036, 0.000441, 0.000459, -0.000461, -3.5e-05, 0.000369, -0.000254, -3.5e-05, -0.000194, -1.9e-05, 0.00243, 6.9e-05, 0.000441, 0.001151, 0.000564, 0.000441, 0.000564, 0.001151, 0.001151, 0.001305, 6.9e-05, 0.001618, 0.001036, 0.000459, 0.001305, 0.000459, 0.000459, 0.000459, 0.001305, 0.001305, 0.001305, 0.001305, 0.001305, 0.000441, 0.000564, 0.000564, 0.000564, 0.001151, 0.000564, 0.000564, 0.000564, 0.001151, 0.001151, 0.001232, 0.000459, 0.001305, 0.001305, 0.000441, 0.000459, 0.001036, 6.9e-05, 0.00041, 0.00243, 0.000369, 0.00076, 0.000454, 0.000567, 0.000559, 0.000765, -0.000186, 0.000552, 0.000642, 0.000901, 0.000389, 0.000764, 0.000807, -0.000129, 0.00021, 0.00039, 0.00039, 0.000743, 0.000743, 0.000743, 0.000743, 0.000743, 0.000743, 0.000743, 0.000686, 0.000686, 0.00039, 0.00039, 0.000743, 0.00021, -0.000129, 0.000764, 0.00213, -8e-06, 0.00032, 0.00032, 0.00032, 0.002336, -8.1e-05, 0.000605, 0.000169, -0.000779, 0.001326, 0.000169, 0.001326, 0.001337, 0.002336, -8e-06, 0.00213, 0.001315, 0.000743, 0.00039, 0.000743, 0.00021, -0.000129, 0.000807, 0.000389, -0.000604, -8e-06, -0.000268, -0.000268, 0.00032, -0.000268, 0.00032, -8.1e-05, -8.1e-05, -0.000268, -8e-06, 0.00213, 0.000901, 0.000901, 0.000389, 0.000807, 0.00039, 0.000686, 0.000686, 0.000743, 0.000807, 0.00213, -8.1e-05, 0.001326, 0.001352, 8.8e-05, 8.8e-05, 0.000169, 0.000605, 0.002336, 0.002336, 0.002336, -8e-06, 0.000764, -0.000129, 0.001315, 0.000743, 0.00039, 0.000686, 0.000391, 0.000391, 0.000686, 0.000764, 0.000605, 0.001352, 0.000717, 0.001134, 0.001001, 0.00074, 0.00074, 0.001001, 0.000708, 0.000169, -8.1e-05, 0.00213, -8e-06, 0.00213, 0.000901, 0.000389, 0.000901, -0.000604, -0.000604, -8e-06, 0.002336, 0.002336, 0.000605, 0.001838, 0.001134, 0.00074, 0.000996, 0.000996, 0.000996, 0.000806, 0.000806, 0.000996, 0.000996, 0.00074, -0.000304, 8.8e-05, 0.000169, -0.000779, 0.001337, -0.000779, 8.8e-05, 0.001352, 8.8e-05, 0.001838, 0.001352, 0.000169, 0.001337, 0.000169, 0.000708, 0.001001, 0.00074, 0.00074, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.00074, 0.001001, -0.000304, 0.001838, 8.8e-05, 8.8e-05, 0.000169, 0.002336, 0.000764, 0.001315, 0.00021, 0.00039, 0.000391, 0.000391, 0.000686, 0.00021, -0.000129, 0.000389, -0.000604, 0.000605, 0.001352, 0.001838, 0.001838, 0.000169, -0.000268, 0.001315, 0.00021, 0.001315, 0.001315, -0.000129, -0.000129, 0.001315, 0.001195, 0.000807, 0.000901, -0.000268, -0.000268, -0.000268, 0.002336, -0.000779, 0.001838, 0.000708, 0.001134, 0.001001, 0.00074, 0.00074, 0.001001, 0.001001, 0.001001, 0.00074, 0.001001, 0.001001, 0.001001, 0.001001, 0.00074, 0.00074, 0.000996, 0.00074, 0.001001, 0.001134, 0.000708, 0.001134, 0.001001, 0.001001, 0.001001, 0.00074, 0.00074, 0.00074, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.000996, 0.00074, 0.00074, 0.001134, 8.8e-05, -8.1e-05, 0.000901, 0.000764, 0.000389, 0.00032, -0.000779, 0.000717, 0.000708, 0.000708, 0.001134, 0.000708, 0.001352, 0.00032, 0.000901, 0.000764, 0.000901, 0.000901, 0.000764, -8e-06, -0.000779, 0.000717, 0.000708, 0.000708, -0.000304, 8.8e-05, 0.000169, 0.000717, 0.001134, 0.00074, 0.00074, 0.000996, 0.000996, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000996, 0.001001, 0.00074, 0.000996, 0.001001, 0.000996, 0.000996, 0.001001, 0.000708, 0.001838, 0.001838, -0.000304, -0.000304, 0.001838, 0.000708, 0.001001, 0.00074, 0.000996, 0.000996, 0.000806, 0.000806, 0.000996, 0.000996, 0.00074, 8.8e-05, -0.000779, 8.8e-05, -0.000304, 0.001134, 0.001134, 0.001134, 0.00074, 0.00074, 0.00074, 0.00074, 0.001001, 0.001134, 0.001134, 0.001134, 0.001001, 0.001001, 0.001134, 0.000717, 0.000717, 0.000717, 0.000169, 0.00032, 0.00213, 0.001315, 0.000743, 0.000743, -0.000129, 0.00213, 0.002336, 0.002336, 0.00032, -8e-06, 0.00213, 0.000764, 0.000764, -0.000129, 0.001315, 0.000807, 0.000389, 0.000901, -8e-06, -8.1e-05, 0.001326, 0.001352, 0.001838, 0.001838, 0.000708, 0.001134, 0.000708, -0.000304, 0.000708, 0.001134, 0.001001, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.000717, -8e-06, 0.000901, 0.000389, 0.000764, -0.000604, 0.00032, 0.001326, 0.000717, 0.001134, 0.000708, -0.000304, 0.000717, 0.001337, 0.00032, 0.00032, -0.000268, -8e-06, -8e-06, -8e-06, 0.002336, -8.1e-05, 0.002336, -8e-06, 0.000764, -0.000129, 0.000764, 0.00213, -0.000268, 0.000605, 8.8e-05, 0.000708, 0.001134, 0.001134, 0.001134, 0.000708, 0.001838, 0.001337, 0.002336, 0.000605, 0.000605, 0.001326, -0.000304, 0.001134, 0.00074, 0.001001, 0.00074, 0.00074, 0.000708, 0.001838, 0.001134, 0.001001, 0.00074, 0.00074, 0.000996, 0.000806, 0.000996, 0.00074, 0.000708, -0.000304, 0.001134, 0.000717, -0.000779, 0.002336, -0.000268, 0.00032, 0.002336, 0.00032, 0.00032, 0.00032, 0.00032, 0.000605, 0.002336, 0.00032, 0.001326, 0.000717, 0.001134, 0.001001, 0.00074, 0.00074, 0.000996, 0.00074, 0.001001, 0.001001, 0.001001, 0.001134, 0.001001, 0.001001, 0.001001, 0.001134, 0.001134, 0.001134, 0.001001, 0.00074, 0.00074, 0.00074, 0.001001, 0.001134, 0.001134, 0.001123, 0.001001, 0.001001, 0.001001, 0.001134, 0.001001, 0.001001, 0.001134, 0.001134, 0.001134, -0.000304, 0.001352, 0.000169, 0.001838, 0.001838, 0.001838, 0.000717, 0.000717, 8.8e-05, 0.001352, 0.00032, -0.000129, 0.000743, 0.00021, 0.001315, -0.000129, 0.000389, 0.000901, -8e-06, -0.000779, 8.8e-05, 0.000717, 0.001838, -0.000779, 0.000901, 0.000807, 0.000764, 0.000807, -0.000129, -0.000129, 0.000764, 0.000389, 0.000389, 0.000389, 0.000764, 0.00021, 0.00039, 0.000743, 0.001315, 0.000764, -0.000268, -0.000779, 0.001352, 0.001838, 0.000717, 0.001352, -8.1e-05, -0.000604, -8e-06, -8e-06, -0.000268, 0.00032, 0.00032, -0.000268, -0.000604, 0.000901, 0.000389, 0.000764, 0.000807, -0.000129, 0.001195, 0.000807, -0.000268, 0.001326, 0.000717, 0.001001, 0.00074, 0.001134, 0.001134, 0.001001, 0.000717, 0.000169, -0.000779, 0.000605, -8e-06, 0.000764, -0.000129, 0.000764, 0.000389, 0.000389, -0.000604, -0.000268, -8.1e-05, -0.000268, 0.00213, -0.000268, 0.00213, -0.000268, -0.000779, -0.000304, 0.001134, 0.000708, 0.000708, 0.001134, 0.001134, 0.001134, 0.000708, 0.000708, 0.000717, 0.000708, 0.001001, 0.00074, 0.00074, 0.00074, 0.001001, 0.001134, 0.001352, -8e-06, 0.000807, 0.000901, -0.000779, 0.001838, 0.001134, 0.00074, 0.00074, 0.000996, 0.000996, 0.000996, 0.00074, 0.001134, 0.000708, -0.000304, -0.000304, -0.000218, 0.000708, 0.001134, 0.001001, 0.001001, 0.001001, 0.001001, 0.00074, 0.00074, 0.001001, 0.000996, 0.000996, 0.00074, 0.000996, 0.000996, 0.000806, 0.000806, 0.000806, 0.000806, 0.000996, 0.000996, 0.00074, 0.001001, 0.001001, 0.00074, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.00074, 0.00074, 0.00074, 0.000996, 0.000996, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000996, 0.000996, 0.000996, 0.000806, 0.000771, 0.000771, 0.000771, 0.000771, 0.000771, 0.000771, 0.000806, 0.000996, 0.001001, 0.001001, 0.000996, 0.000996, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000996, 0.000996, 0.000996, 0.000806, 0.000806, 0.000771, 0.000771, 0.000806, 0.000771, 0.000771, 0.000771, 0.000806, 0.00074, 0.000708, 0.000717, 0.001838, 0.000717, 0.001134, 0.001134, -0.000304, -0.000304, 0.000708, -0.000304, 0.000169, 0.002336, -0.000604, 0.000901, 0.000901, 0.00213, -8e-06, -8e-06, -0.000268, -8e-06, -8e-06, 0.000901, 0.000389, 0.00213, 0.000169, 0.001134, 0.00074, 0.000996, 0.000996, 0.000996, 0.001001, 0.00074, 0.00074, 0.00074, 0.00074, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000806, 0.000996, 0.000996, 0.001838, 0.000169, 0.000717, 0.001134, 0.001134, -0.000304, -0.000304, -0.000304, 0.000717, 0.001838, 8.8e-05, -0.000779, -8.1e-05, 0.00213, -0.000604, 0.000901, 0.000764, 0.000389, 0.000901, 0.000901, -0.000604, 0.00213, -0.000268, 0.00032, -0.000268, -0.000604, 0.00213, 0.00213, 0.000605, 0.001352, 0.000717, -0.000304, 0.000708, 0.000708, -0.000304, 0.000717, 0.001352, 0.00032, 0.000901, 0.000901, 0.000901, -0.000604, 0.00213, 0.000901, -0.000129, 0.001315, 0.001315, 0.00021, 0.000743, 0.00039, 0.000743, 0.00021, 0.001315, -0.000129, -0.000129, 0.000901, -0.000268, 0.002336, 0.002336, -8.1e-05, 0.002336, 0.000901, -0.000129, 0.001315, -0.000129, 0.000764, -0.000604, 0.00213, 0.00213, 0.000764, 0.001315, 0.000743, 0.000686, 0.000686, 0.000743, 0.00021, 0.001315, 0.000807, 0.000764, 0.000901, 0.000901, -0.000604, 0.00213, -0.000604, -0.000604, 0.000901, 0.000764, -0.000604, -8e-06, -8e-06, -8e-06, -0.000604, 0.000901, 0.000389, 0.000389, -0.000129, 0.000743, 0.000686, 0.000686, 0.00039, 0.00021, 0.000764, -8e-06, 0.002336, 0.001337, 0.000169, -0.000779, 0.000605, -8e-06, -0.000129, 0.00021, -0.000129, 0.000389, 0.00032, 0.000605, 0.000605, -8.1e-05, 0.00032, 0.00213, 0.000764, -0.000129, 0.000764, -0.000268, -0.000779, 8.8e-05, 0.000747, 0.000996, 0.000806, 0.000806, 0.000806, 0.000996, 0.00074, 0.001001, 0.001838, 8.8e-05, 0.000717, 0.001134, -0.000304, 0.000708, 0.000717, 0.001838, 0.000717, 0.000717, 0.000169, -8e-06, -0.000268, 0.001337, 0.001352, 0.001838, 0.001838, 0.000717, 0.000717, 8.8e-05, 0.000169, 0.001337, 0.000605, 0.002336, -8e-06, 0.00213, 0.00032, -8.1e-05, 0.001352, 0.000717, 0.000708, -0.000304, 0.000708, 0.000708, -0.000304, 0.000169, 0.002336, 0.001337, 0.000717, 0.001001, 0.00074, 0.00076, 0.00074, 0.000996, 0.000996, 0.000996, 0.000996, 0.00074, 0.001001, 0.001001, 0.001134, -0.000304, 0.000717, 0.001352, -0.000779, -0.000779, 0.000169, 8.8e-05, 0.001352, -8.1e-05, 0.002336, 0.001352, 0.000717, 0.000708, 0.000708, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.001001, -0.000304, 0.000717, 0.000717, 0.000717, 0.000717, 0.001838, 0.000169, 0.000605, 0.00032, 0.000764, 0.00039, 0.000686, 0.00039, 0.001315, -8e-06, -0.000268, -8.1e-05, 0.000605, 0.000605, -0.000779, 0.000169, 0.000169, 0.002336, 0.000389, 0.001315, 0.000807, 0.000901, -0.000604, 0.00213, 0.00032, 0.000605, 0.001352, 0.000717, 0.000708, 0.000708, 0.000717, 0.000708, 0.00074, 0.000996, 0.000996, 0.000806, 0.000806, 0.000996, 0.00074, 0.000996, 0.000996, 0.000806, 0.000806, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.001352, 0.001326, 0.001838, 0.001838, 8.8e-05, -0.000304, 0.001001, 0.000996, 0.000806, 0.000806, 0.000806, 0.000996, 0.000708, 0.001352, 8.8e-05, 0.001352, 0.001838, -0.000304, 0.001134, 0.00074, 0.00074, 0.00074, 0.000708, 0.000169, 0.002336, -8.1e-05, 8.8e-05, 0.00074, 0.000996, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000996, 0.000996, 0.00074, 0.000996, 0.000996, 0.000806, 0.000806, 0.000996, 0.000996, 0.00074, 8.8e-05, 0.000764, 0.000743, 0.000743, 0.001315, 0.000807, -0.000268, 0.001352, 0.001838, 0.000717, 0.000708, 0.001001, 0.000996, 0.00074, 0.001001, 0.001134, 0.001134, 0.001134, 0.001134, 0.001001, 0.00074, 0.00074, 0.000996, 0.000996, 0.001001, -0.000779, -8.1e-05, 0.001337, 8.8e-05, -0.000304, 0.00074, 0.00074, 0.00074, 0.000996, 0.00074, 0.000708, 0.001337, 0.002336, -8.1e-05, 0.001352, 0.001134, 0.001001, 0.000708, 0.000708, 0.000708, 0.001134, 0.001001, 0.001134, -0.000304, 8.8e-05, -0.000779, 8.8e-05, -0.000304, 0.001001, 0.00074, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.00074, 0.001134, 0.001744, 0.001352, 8.8e-05, 0.000717, 0.000717, 0.000169, 0.001326, 0.001326, 0.001337, -8e-06, -0.000129, 0.000743, 0.001315, 0.000389, 0.000605, 0.000708, 0.00074, 0.000996, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000996, 0.000717, 8.8e-05, 0.001838, 0.000708, 0.001001, 0.001134, 0.000708, 0.000717, 0.001352, 0.001838, 0.001352, -8.1e-05, 0.001337, 0.001838, 0.001001, 0.001001, 0.00074, 0.000996, 0.000996, 0.000996, 0.000806, 0.000996, 0.00074, 0.001134, -0.000304, 8.8e-05, 0.000717, 0.001134, 0.00074, 0.00074, 0.001001, 0.001001, 0.001001, 0.000169, 0.000807, 0.000686, 0.000686, 0.000686, 0.00039, 0.00021, 0.000807, 0.00213, 0.002336, 0.001326, 0.001838, 0.000717, 0.000169, -0.000779, -0.000268, 0.00032, 0.001337, 0.001326, 0.001838, 0.001134, 0.00074, 0.001001, 0.001001, 0.001001, 0.001134, 8.8e-05, 0.000169, 0.001352, 8.8e-05, 0.001838, 0.001838, -0.000304, 0.000708, -0.000304, 0.001838, 8.8e-05, -0.000779, 0.000605, -8e-06, 0.000901, -0.000604, 0.000901, 0.000901, -8e-06, 0.002336, 0.002336, 0.000605, -8.1e-05, 0.00032, 0.002336, 0.001326, 0.000169, 0.001326, 0.001337, 0.002336, -8.1e-05, 0.001337, 0.000605, 0.000169, 8.8e-05, 0.001838, 0.001838, 0.000717, -0.000304, 0.000708, 0.000708, 0.000708, -0.000304, 8.8e-05, 0.000169, -0.000268, 0.000764, 0.000807, 0.000764, 0.000901, -0.000268, 0.00032, -8e-06, -8e-06, 0.00032, -0.000779, -0.000304, 0.001134, 0.001001, 0.00074, 0.00074, 0.001001, 0.001001, -0.000304, 0.000169, -0.000779, -8.1e-05, -8.1e-05, -0.000779, 0.001326, -0.000779, 0.00032, -8e-06, -0.000268, 0.000605, 0.000605, 0.001337, -0.000779, 0.000169, 0.000717, 0.000996, 0.000996, 0.00074, 0.000708, 0.001838, 0.000605, 0.002336, 0.001337, -0.000779, -0.000779, 8.8e-05, 8.8e-05, 0.001326, 0.000605, -0.000268, 0.000389, 0.00213, 0.00032, 0.000605, 0.001838, 0.001134, 0.001001, 0.00074, 0.00074, 0.001001, -0.000304, 0.000717, 0.001838, 0.001326, -8.1e-05, 0.000605, 0.001352, -0.000779, -8.1e-05, 0.000605, 0.002336, -8e-06, -0.000604, -8e-06, 0.00213, 0.000901, -0.000268, 0.00032, -0.000268, -8.1e-05, 0.000169, 8.8e-05, 0.000708, 0.00074, 0.001001, 0.000996, 0.000996, 0.000996, 0.00074, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.00074, -0.000304, 0.000717, 0.001352, 0.000605, 0.000605, 0.000169, 0.000169, 0.001326, 8.8e-05, 0.000717, 0.000717, -0.000304, 0.001838, -0.000779, 0.001337, 0.001352, 8.8e-05, 0.001326, 0.000605, 0.001337, -0.000779, 0.000169, 0.000169, 0.001337, 0.001352, 0.000717, 0.000708, 0.000708, 0.000708, 0.001134, 0.001001, 0.001134, -0.000304, 0.001838, 8.8e-05, 0.001838, 8.8e-05, 0.001326, 0.001326, 0.000717, 0.000717, 0.001838, 0.000717, 0.001838, 8.8e-05, 8.8e-05, -8.1e-05, 0.000901, 0.000764, -8e-06, -8.1e-05, 0.001337, 8.8e-05, 0.001838, 0.001134, 0.00074, 0.00074, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.00074, 0.00074, 0.00074, 0.000996, 0.000996, 0.00074, 0.000708, 0.001352, 0.00032, 0.001315, 0.00039, 0.000743, 0.00021, -0.000129, -0.000129, 0.000389, -8e-06, 0.001326, 0.001838, 0.000708, 0.001134, 0.001134, -0.000304, 8.8e-05, -0.000779, 0.000169, 0.001352, 0.001838, 0.000717, 0.001838, 0.001838, 8.8e-05, -8e-06, 0.00021, 0.00039, 0.001315, -8e-06, -0.000779, -0.000304, 0.001001, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.000708, 0.000169, -0.000604, 0.000389, 0.001337, 0.000169, 0.000169, 0.001326, 0.001326, 0.001158, 0.002336, 0.000389, 0.000743, 0.000686, 0.000686, 0.000743, 0.001315, 0.000807, -0.000604, -8e-06, 0.00213, 0.00032, -0.000779, 0.001352, 0.001838, 0.000717, 0.000717, 0.001326, 0.000605, 0.002336, -8e-06, -8e-06, -8e-06, 0.002336, 0.00032, 0.000605, 0.000605, 0.00032, 0.001337, 0.000717, -0.000304, 0.001134, 0.001001, 0.000708, 0.000717, 8.8e-05, 0.001337, -0.000268, -0.000268, -8e-06, 0.00213, -0.000268, -8.1e-05, 0.002336, 0.000605, -0.000779, 8.8e-05, -0.000779, -8.1e-05, -0.000604, 0.000807, -0.000129, 0.000764, 0.000389, 0.000901, -0.000268, 0.001337, 0.001352, 0.001352, -0.000779, 0.001337, -0.000779, -0.000779, 0.00032, 0.000764, -0.000129, 0.000901, 0.00213, 0.00213, 0.00032, -8.1e-05, 0.001326, 0.001326, 0.00032, 0.000807, 0.000807, 0.000901, -0.000268, 0.001337, 0.001326, 8.8e-05, -0.000304, 0.000708, 0.001001, 0.00074, 0.00074, 0.001001, 0.001134, -0.000304, 0.000169, 0.000605, 0.000605, 0.00032, 0.000389, 0.000764, 0.000389, 0.000901, 0.000764, 0.00021, 0.001315, 0.000807, 0.000901, -8e-06, 0.001337, -0.000304, 0.001134, 0.001001, 0.00074, 0.00074, 0.00074, 0.001001, 0.000708, 0.000717, 0.001838, 0.000717, 8.8e-05, 8.8e-05, -0.000304, -0.000304, 0.000708, -0.000304, -0.000304, -0.000304, 0.000717, 0.000717, -0.000304, 0.000708, 0.001134, 0.000708, 0.001001, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.00074, 0.001134, 0.001001, 0.00074, 0.000996, 0.000996, 0.000996, 0.00074, -0.000304, 8.8e-05, 0.001352, 0.001838, 0.000717, -0.000304, 0.000717, 0.001838, 0.001838, 0.001352, -0.000268, 0.000807, 0.000686, 0.000686, 0.000686, 0.000743, 0.000764, 0.00213, -8.1e-05, 0.001326, 0.001352, 0.001838, 0.001352, -8.1e-05, 0.000764, -0.000604, 0.00213, -0.000604, -8e-06, -8e-06, -0.000268, 0.00032, 0.000605, 0.001337, 0.001326, -0.000268, 0.000901, 0.000764, 0.001315, 0.000686, 0.000686, 0.00039, 0.00021, 0.001315, 0.000764, 0.000389, 0.000764, 0.001315, 0.00021, 0.001315, 0.000901, 0.000901, -8e-06, 0.00032, 0.002336, 0.002336, -0.000604, 0.000901, 0.000389, -0.000129, 0.000807, -0.000129, -0.000129, 0.002336, 0.001337, 0.002336, 0.000605, 0.001326, 0.001352, 0.001352, 0.002336, 0.000389, 0.00021, 0.000807, -0.000268, 0.001352, 0.001838, -0.000304, 0.000708, -0.000304, -0.000304, 0.001838, 0.000717, 0.001838, 0.001326, 0.000389, 0.00039, 0.00039, 0.000686, 0.00039, 0.00021, 0.001315, 0.000764, -0.000604, -0.000604, -0.000604, 0.00213, 0.00032, -8.1e-05, 0.001337, 0.001352, 0.001838, 0.000717, 0.000717, 0.001352, 0.000605, -0.000268, -8e-06, 0.00032, 0.00032, -0.000268, -8e-06, -8e-06, 0.00032, -8.1e-05, 0.001337, -0.000779, -0.000779, 0.001326, -0.000779, 0.00032, -0.000268, -8.1e-05, 0.001337, -0.000779, 0.001326, 0.001352, 0.001352, 0.001352, -0.000779, -8.1e-05, -8.1e-05, 0.000605, 0.000431, -0.000129, 0.000389, 0.000901, 0.000389, -8e-06, 0.002336, -0.000779, 0.001326, -8.1e-05, -0.000268, 0.00213, -0.000604, 0.000389, -0.000604, 0.000901, -8e-06, 0.00032, -8e-06, 0.00032, -8e-06, 0.00213, -8e-06, -0.000604, 0.000764, 0.000389, 0.000901, 0.000901, -0.000268, 0.000605, 0.001337, 0.000605, -0.000268, -0.000604, 0.000699, 0.000391, 0.000391, 0.000391, 0.000391, 0.000686, 0.00021, -0.000129, 0.000389, -8e-06, -8.1e-05, 0.000605, 0.002336, -0.000268, -0.000604, 0.000389, -8e-06, -8e-06, -8e-06, -8e-06, 0.000901, 0.000389, 0.000389, 0.001315, 0.00039, 0.000391, 0.000743, 0.00021, 0.000743, 0.00021, 0.000764, 0.000389, 0.000901, -0.000604, 0.000901, 0.000389, 0.00213, -0.000604, -0.000129, 0.00039, 0.000686, 0.00039, 0.001315, 0.000901, -8e-06, 0.000605, -0.000779, 0.001326, 0.002336, -0.000604, 0.00213, -8e-06, 0.00032, 0.001337, 0.001838, -0.000304, 0.000708, 0.000708, 0.001134, 0.001001, 0.001134, 0.001134, 0.000708, 8.8e-05, 0.001352, -0.000779, -0.000779, 0.000605, 0.00032, -0.000779, 8.8e-05, 0.001838, 8.8e-05, 0.000605, -0.000268, 0.000901, -8e-06, -0.000604, -0.000268, 0.001337, -0.000779, 0.001352, -0.000779, 0.001326, 0.002336, 0.000389, -0.000129, 0.000807, -8e-06, 0.000605, 0.001326, 8.8e-05, 0.000717, -0.000304, 0.001134, 0.000708, 0.001326, 0.00032, 0.00032, -0.000268, -0.000268, 0.00213, 0.002336, -0.000779, 0.001352, 0.001838, -0.000304, -0.000218, 0.001352, 0.001326, 0.000605, 0.002336, -0.000268, 0.002336, 0.000605, 0.001326, 0.000169, 0.001352, 0.001352, 0.002336, 0.000807, -0.000129, 0.000764, 0.00213, -0.000268, -0.000604, 0.00213, -8.1e-05, 0.001326, 0.000169, 0.001352, 0.001337, -8e-06, 0.000389, 0.000764, 0.001315, 0.001315, 0.001315, 0.001315, -0.000129, 0.00021, 0.001315, 0.001315, 0.00021, 0.000743, 0.00021, 0.000389, -8e-06, 0.002336, 0.002336, 0.00032, 0.002336, -0.000268, 0.00213, -0.000604, -0.000604, -0.000268, -8e-06, 0.000901, 0.000389, 0.00213, -8e-06, 0.00213, -0.000268, 0.001337, 0.001352, 0.001352, -8.1e-05, 0.000807, 0.001315, 0.00021, 0.001315, 0.001315, 0.000807, 0.000389, 0.000901, 0.000901, 0.000389, 0.000389, 0.000389, 0.000807, 0.00039, 0.000391, 0.000391, 0.000686, 0.000743, 0.000686, 0.00039, 0.000743, 0.00021, -0.000129, 0.000807, 0.001315, 0.000764, -0.000268, -8.1e-05, 0.001337, 0.000169, 8.8e-05, 0.000717, 8.8e-05, 0.001838, 0.000717, 0.000708, -0.000304, 0.000169, 0.002336, -8e-06, 0.000389, 0.000389, 0.000389, -0.000604, 0.000901, -0.000604, -8e-06, -0.000604, 0.000764, 0.000686, 0.000686, 0.000686, 0.00039, 0.001315, 0.000389, -8e-06, 0.001337, 0.001337, -8e-06, -0.000268, -8.1e-05, -8.1e-05, 0.002336, 0.00032, -0.000268, -8e-06, 0.000901, 0.00213, -8e-06, -0.000604, -0.000604, -0.000604, 0.000389, 0.000764, -0.000604, 0.00032, 0.002336, 0.000605, 0.000605, 0.000669, 0.001337, -0.000779, 0.000605, 0.001337, 0.002336, 0.001315, 0.00021, 0.000686, 0.000743, -5e-05, 0.000389, 0.000901, 0.00213, -0.000268, 0.002336, -0.000268, -0.000604, -0.000268, -8.1e-05, 0.001326, 0.001352, 0.001352, 0.001352, 8.8e-05, -0.000304, 0.000708, 0.001134, 0.001134, 0.001134, 0.001134, 0.001134, 0.000708, -0.000304, -0.000304, 0.001838, 0.001337, 0.00213, 0.000807, 0.000901, 0.000389, -8e-06, 0.00032, -0.000604, 0.00213, -8e-06, -8e-06, -0.000779, 0.001838, -0.000304, 0.001134, 0.001134, 0.001134, 0.000708, 0.000717, 0.000717, 0.000717, 8.8e-05, 8.8e-05, 0.001838, 0.000708, 0.000708, 0.000708, 0.000169, -8.1e-05, 0.000605, -0.000779, 0.001352, -0.000304, -0.000304, -0.000218, 0.000708, 0.001134, 0.001134, 0.001134, 0.001001, 0.001001, 0.001001, 0.001001, 0.001134, 0.000708, 0.000708, 0.001134, 0.001134, 0.001001, 0.001001, 0.001001, 0.001001, 0.00074, 0.001001, 0.001134, 0.000708, -0.000304, 0.001838, 0.001326, 0.000717, -0.000304, 0.000708, -0.000304, 0.000717, 0.000169, 0.000605, -0.000268, 0.000389, 0.001315, 0.000807, -8e-06, 0.001326, 0.001838, 0.000717, 0.000717, 0.000708, -0.000304, 0.001838, 0.000605, 0.000605, 0.000605, 0.00032, 0.000605, 0.001326, 0.001838, -0.000304, 0.000717, -0.000304, -0.000304, 0.000708, -0.000304, 8.8e-05, 0.001352, 0.000169, 0.001352, 0.001352, -8.1e-05, 0.00032, 0.002336, -0.000217, 0.000389, 0.00021, 0.001315, 0.000764, 0.00213, 0.002336, -0.000779, 0.001352, 0.001352, 0.000169, 0.001326, 0.001326, -0.000779, 0.000605, -8e-06, 0.000807, 0.000391, 0.000686, 0.00039, 0.00039, 0.00021, 0.00039, 0.000686, 0.000686, 0.000391, 7e-05, 0.000362, 0.000362, 7e-05, 0.000391, 0.00021, 0.000389, -8e-06, -8.1e-05, 0.000605, -0.000779, 0.001326, 0.000169, 0.000169, -0.000779, 0.000605, -0.000779, -8.1e-05, 0.00032, -0.000217, -8e-06, 0.002336, 8.8e-05, 0.000169, 0.00213, -0.000129, 0.000807, -0.000604, 0.000389, -0.000604, 0.002336, -8.1e-05, -0.000779, 0.001352, 8.8e-05, 0.001352, 0.001352, 0.001838, 0.000717, 0.001838, 0.001352, 0.001337, 0.00032, -0.000604, 0.000764, 0.000389, 0.00213, -0.000268, 0.000389, 0.00021, 0.00021, 0.001315, 0.000807, 0.000764, 0.000389, 0.000389], "emissions_factor_series_lb_SO2_per_kwh": [-0.000779, 0.001352, 0.001838, 8.8e-05, 8.8e-05, 0.001352, 0.001326, 0.001326, -0.000779, -8.1e-05, 0.002336, 0.00032, -8e-06, -8e-06, -0.000604, 0.00021, 0.00071, 5.3e-05, 5.3e-05, 0.000362, 0.000362, 0.000362, 0.000391, 0.00021, 0.000901, -8e-06, 0.002336, -0.000268, 0.00213, 0.000389, -0.000129, 0.00021, 0.001315, 0.001315, -0.000129, -0.000129, -0.000129, -0.000129, -0.000129, 0.001315, 0.000743, 0.00039, 0.00021, 0.000807, 0.00213, -8.1e-05, 0.001337, 0.000169, 0.000169, 0.000169, 8.8e-05, 8.8e-05, 0.000169, 0.000605, 0.00213, 0.000764, 0.000764, 0.000807, 0.000807, 0.000764, 0.000764, 0.000764, 0.000764, 0.000764, 0.000807, 0.00039, 0.00021, 0.000764, -8.1e-05, 0.001337, 0.000169, 8.8e-05, 0.000717, 0.000717, 0.001134, 0.000708, 0.001134, 0.000708, 0.001326, -8e-06, -0.000604, 0.000389, 0.000807, 0.000389, -0.000268, 0.000605, 0.001158, 0.001337, 0.00213, 0.000764, -0.000268, -0.000779, 0.000169, 8.8e-05, 8.8e-05, 0.001838, 0.000717, -0.000304, -0.000304, 0.001838, 0.001352, 0.001326, 0.001326, 0.001337, 0.001326, 8.8e-05, 0.001352, 0.001352, 8.8e-05, 0.000708, 0.000708, 0.001134, 0.001134, 0.000717, -0.000304, -0.000304, 0.000708, 0.001134, 0.001001, 0.001001, 0.001001, 0.001001, 0.001001, 0.001001, 0.001134, 0.001134, -0.000304, 0.001838, 0.001838, 0.000717, 0.000717, 0.000717, -0.000304, 0.000708, 0.000708, 0.000717, -0.000268, 0.000807, 0.001315, 0.001315, 0.00021, 0.00021, 0.000743, 0.000743, 0.001315, 0.00021, 0.00021, 0.00021, 0.00039, 0.000391, 7e-05, 0.000362, 5.3e-05, 5.3e-05, 5.3e-05, 0.000362, 0.000362, 0.00071, 0.00071, 7e-05, 0.00071, 0.00071, 0.000391, 0.000391, 0.000686, 0.00021, 0.000807, -0.000129, -0.000129, 0.001315, 0.000389, 0.00213, -0.000268, 0.00213, 0.000389, -0.000129, 0.00021, 0.001315, 0.000389, -0.000604, -8e-06, -0.000604, 0.000764, 0.00021, 0.000391, 0.000362, 0.000362, 0.000362, 7e-05, 7e-05, 0.00071, 0.000391, 0.000391, 0.000391, 0.000391, 0.000391, 0.00071, 0.00071, 0.00071, 7e-05, 7e-05, 7e-05, 0.000362, 0.000362, 0.000362, 0.000362, 0.000362, 0.000362, 0.000362, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 0.000362, 7e-05, 7e-05, 0.00071, 0.00071, 0.00071, 0.00071, 0.00071, 7e-05, 7e-05, 0.000362, 7e-05, 7e-05, 0.00071, 0.000686, 0.00039, 0.000743, 0.000686, 0.000391, 0.00071, 0.000391, 0.00039, 0.00039, 0.000743, -0.000129, 0.000389, 0.000389, 0.000764, -0.000604, 0.00213, -0.000604, 0.001315, 0.00039, 0.000686, 0.00039, 0.00021, 0.00039, 0.00039, 0.000743, 0.000743, 0.000743, 0.00039, 0.00071, 0.000362, 0.00071, 0.000391, 0.000686, 0.000743, 0.000807, 0.000807, 0.000764, 0.000764, 0.000764, 0.000901, 0.000389, 0.000807, 0.000743, 0.000686, 0.000743, 0.00021, 0.00039, 0.000743, 0.000743, 0.00021, 0.00021, 0.001315, 0.001315, 0.001315, 0.000901, -8e-06, -8.1e-05, 0.001337, 0.000169, 0.000717, -0.000304, -0.000304, 0.000708, 0.001134, 0.001134, -0.000304, 0.001352, 0.000169, 8.8e-05, 0.001352, 0.001352, 0.001352, -0.000779, 0.002336, 0.002336, 0.001337, 0.001326, -0.000779, 0.000605, -0.000779, 0.000169, 0.001326, 0.001352, 8.8e-05, 8.8e-05, 8.8e-05, 0.001352, 0.001352, 0.000169, 0.000169, -0.000779, 0.001337, -0.000779, 0.001326, 0.000169, 0.000169, 0.000169, 0.000169, 8.8e-05, 8.8e-05, 0.001352, -0.000779, -0.000268, 0.00032, 0.002336, 0.000605, 0.001337, 0.001337, 0.001337, 0.001337, 0.000669, -8.1e-05, -0.000268, -8e-06, -0.000268, -0.000604, -8e-06, -8e-06, 0.000774, -8e-06, 0.000605, 0.000169, 0.001352, 8.8e-05, 0.001352, 0.000605, -0.000604, 0.001315, 0.00021, 0.000764, 0.00032, 0.001337, 0.001326, 0.001326, 0.001352, 0.001352, 8.8e-05, 0.001838, 0.001838, 0.001838, 0.001838, 0.000717, -0.000304, 0.000708, 0.001134, 0.001134, 0.001001, 0.001001, 0.000708, 0.000169, 0.001337, 0.001337, 0.001326, 0.001352, 0.001838, 0.000717, 0.000717, -0.000304, 0.000708, -0.000304, 0.001838, 0.000717, 8.8e-05, 0.001337, -0.000268, -0.000604, 0.00213, -8e-06, -0.000268, 0.00032, 0.00213, 0.000764, 0.000764, -0.000129, 0.000807, 0.000389, 0.000389, 0.000901, 0.00032, 0.001337, 0.001352, 8.8e-05, 8.8e-05, 0.001838, 0.001838, 0.001352, -0.000779, -8.1e-05, 0.001337, 0.001326, 0.001352, 0.001352, 8.8e-05, 0.001352, 0.000169, -8.1e-05, 0.000764, 0.000743, 0.00039, -0.000129, 0.000764, 0.000901, 0.00213, 0.00032, 0.000605, 0.000169, 0.000169, 0.001337, -0.000779, 0.000605, 0.00032, -0.000604, 0.000764, 0.000764, 0.000764, 0.00021, 0.00039, 0.000743, 0.00039, 0.000391, 0.000391, 0.000391, 0.000391, 0.000743, 0.000389, -0.000604, 0.002336, -0.000779, -0.000779, 0.001326, 0.001326, 0.001326, -0.000779, 0.000605, 0.00032, 0.000605, -0.000779, 0.001326, 0.000169, 0.000169, 0.001326, 0.001337, -0.000779, 0.000169, -0.000779, -8.1e-05, -0.000268, 0.000901, 0.00213, 0.000389, 0.000807, 0.000389, 0.00213, 0.00032, 0.00032, 0.00213, -0.000604, 0.000901, -0.000129, 0.000743, 0.00039, -0.000129, -0.000268, -0.000268, -0.000268, -8e-06, 0.000901, -0.000129, 0.00039, 0.000391, 0.000686, -0.000129, 0.000901, -8.1e-05, 0.001326, 0.000169, 8.8e-05, 0.001838, 0.001838, 0.001838, 8.8e-05, 0.001352, -0.000779, -8.1e-05, 0.00032, 0.000605, 0.001337, -8.1e-05, -8.1e-05, 0.000605, -8.1e-05, -8.1e-05, 0.000605, 0.00032, 0.002336, 0.001337, 0.001326, 0.000169, 0.001352, 0.000169, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 0.001352, 0.001326, -0.000268, 0.000901, 0.000807, 0.00021, 0.00039, 0.00021, 0.001315, -0.000129, 0.000807, -8e-06, -8e-06, 0.00032, -8.1e-05, 0.002336, 0.000605, 0.001337, 0.000605, 0.002336, 0.002336, 0.00032, 0.000901, 0.001315, 0.00021, 0.00021, 0.000686, 0.000686, 0.000686, 0.00039, -0.000129, 0.000389, -0.000268, 0.002336, -8.1e-05, 0.002336, 0.000764, 0.00039, 0.000686, 0.00039, 0.00039, 0.000686, 0.000743, 0.00021, 0.001315, 0.000743, 0.00039, 0.000743, 0.00021, 0.000743, 0.000686, 0.00071, 0.00071, 0.000391, 0.00021, 0.000901, 0.00213, -0.000268, 0.00213, 0.000764, 0.00021, 0.000391, 0.00071, 0.000391, 0.000391, 0.000686, 0.00039, 0.00039, 0.000686, 0.000391, 0.000391, 0.000391, 0.00071, 0.000362, 5.3e-05, 0.000171, 0.000171, 0.000171, 0.000171, 0.000171, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 0.000171, 0.000171, 0.000171, 0.000171, 5.3e-05, 5.3e-05, 7e-05, 0.00071, 0.00071, 0.00071, 0.00071, 0.00071, 7e-05, 0.000362, 5.3e-05, 5.3e-05, 0.000362, 0.00071, 0.000686, 0.001315, -0.000129, 0.000389, -0.000604, -8e-06, 0.00213, -0.000129, 0.000764, 0.000901, 0.000901, 0.00213, 0.00213, -8e-06, -8e-06, -0.000604, 0.00213, 0.00213, -0.000604, -5e-05, 0.000686, 0.00071, 0.00071, 0.00071, 0.000686, 0.000686, 0.00039, 0.000743, 0.000743, 0.001315, 0.001315, 0.000743, 0.00021, 0.000807, 0.000807, 0.000764, 0.00213, -0.000268, 0.002336, 0.000605, 0.000605, 0.000605, 0.002336, 0.00213, 0.000807, 0.000807, 0.000764, 0.000901, 0.000764, 0.000807, 0.000807, 0.000389, -8e-06, -8.1e-05, -8.1e-05, -8.1e-05, 0.00032, 0.00032, 0.00032, -0.000268, 0.002336, 0.000605, 0.000169, 8.8e-05, 0.001838, 0.000717, 0.001838, 0.001838, -0.000304, 0.000717, -0.000304, -0.000304, -0.000304, -0.000304, -0.000304, 0.000708, 0.000708, 0.000708, -0.000304, 0.000717, 0.000717, 0.001838, 0.001838, 0.001838, 0.001838, 0.000717, -0.000304, 0.000717, -0.000304, 0.000717, -0.000304, 0.000717, 0.000717, 0.001838, 0.001838, 0.001838, 0.000717, 8.8e-05, 0.001326, 0.000605, -8e-06, 0.000764, 0.000686, 0.00071, 0.000391, 0.000686, 0.000743, 0.000807, -0.000604, 0.002336, -0.000779, 0.001326, -0.000779, -0.000268, 0.000389, 0.00021, 0.000686, 0.00071, 0.00071, 0.00071, 0.00071, 7e-05, 7e-05, 7e-05, 7e-05, 0.00071, 7e-05, 0.000362, 7e-05, 7e-05, 7e-05, 0.000391, 0.000686, 0.00039, 0.001315, 0.001315, 0.000764, 0.00213, -0.000604, 0.000807, 0.001315, 0.00021, 0.000743, 0.000743, 0.000743, 0.001315, 0.000807, 0.000764, 0.000764, -0.000129, 0.000743, 0.000686, 0.00071, 0.00039, 0.000807, 0.00213, 0.000605, -0.000779, 0.001326, 0.001326, 0.001352, 0.001352, 0.001337, -8e-06, 0.000807, 0.00021, -0.000129, -0.000129, -0.000129, 0.00213, 0.000605, 0.000605, -0.000779, -0.000779, 0.001337, 0.001337, -0.000779, -0.000779, 0.001352, 0.001838, -0.000304, -0.000304, -0.000304, -0.000304, -0.000304, -0.000304, -0.000304, 0.001838, -0.000779, 0.00032, 0.00032, 0.001337, 0.001352, 8.8e-05, 0.001838, 0.000717, 0.000717, 8.8e-05, 0.001326, 0.000764, 0.00039, 0.00039, 0.00039, 0.00021, 0.000807, 0.00213, 0.002336, 0.000605, 0.000605, 0.000605, -0.000268, 0.000389, 0.00021, 0.000391, 0.000686, 0.00039, 0.001315, 0.000807, 0.001315, 0.001315, 0.00021, -0.000129, 0.001315, 0.000743, 0.00039, 0.001315, 0.000807, 0.000389, -0.000604, 0.000901, -0.000268, -0.000268, -8e-06, 0.00032, 0.002336, 0.002336, 0.002336, -0.000268, -0.000604, -0.000604, 0.000764, 0.000807, -0.000129, 0.000389, 0.00032, -8.1e-05, 0.00032, -0.000129, 0.000743, 0.000807, 0.000389, -0.000604, -8e-06, 0.00032, -0.000268, 0.00213, -0.000268, -0.000268, 0.00213, 0.000807, 0.00021, 0.000686, 0.00021, 0.000807, 0.00213, 0.002336, 0.002336, 0.000605, 0.000605, -8.1e-05, 0.002336, -8e-06, 0.001315, 0.00039, 0.000391, 0.000391, 0.00071, 0.000391, 0.000686, 0.000686, 0.00039, 0.000743, 0.00021, 0.00039, 0.00071, 7e-05, 0.00071, 0.000391, 0.00039, 0.000686, 0.000391, 0.000391, 0.000686, 0.000391, 7e-05, 5.3e-05, 0.000171, 5.3e-05, 5.3e-05, 0.000362, 7e-05, 7e-05, 0.00071, 0.00071, 0.00071, 0.00071, 7e-05, 0.000362, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 0.000362, 0.000362, 7e-05, 0.00071, 0.000391, 0.000391, 7e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 0.000362, 0.000362, 7e-05, 7e-05, 7e-05, 7e-05, 7e-05, 7e-05, 0.000362, 5.3e-05, 0.000171, 0.000171, 0.000171, 5.3e-05, 5.3e-05, 0.000362, 0.00071, 0.000391, 0.00039, 0.000686, 0.00071, 7e-05, 0.00071, 0.00071, 0.00071, 0.000391, 0.000686, 0.000686, 0.000391, 0.00071, 0.00071, 0.00071, 0.000362, 5.3e-05, 5.3e-05, 5.3e-05, 7e-05, 0.00071, 0.00071, 0.00071, 7e-05, 7e-05, 7e-05, 7e-05, 0.000362, 5.3e-05, 0.000171, 0.000171, 0.000171, 5.3e-05, 0.000362, 7e-05, 7e-05, 7e-05, 0.000362, 0.000362, 5.3e-05, 0.000171, 0.000171, 0.000171, 0.000171, 0.000171, 5.3e-05, 0.000362, 7e-05, 0.00071, 7e-05, 7e-05, 7e-05, 0.000362, 0.000362, 0.000362, 0.000362, 7e-05, 0.000362, 0.000362, 0.000362, 7e-05, 7e-05, 0.00071, 7e-05, 0.000362, 0.000362, 0.000362, 5.3e-05, 0.000171, 0.000171, 0.000171, 0.000171, 5.3e-05, 5.3e-05, 5.3e-05, 0.000171, 0.000171, 5.3e-05, 5.3e-05, 5.3e-05, 0.000362, 7e-05, 7e-05, 7e-05, 7e-05, 7e-05, 7e-05, 0.000362, 0.000362, 5.3e-05, 5.3e-05, 5.3e-05, 0.000362, 5.3e-05, 0.000362, 7e-05, 7e-05, 7e-05, 0.000362, 5.3e-05, 0.000171, 0.000171, 0.000171, 0.000171, 5.3e-05, 0.000362, 0.000362, 0.000362, 7e-05, 7e-05, 0.000362, 0.000362, 0.000362, 5.3e-05, 0.000362, 5.3e-05, 5.3e-05, 0.000362, 0.00071, 0.000686, 0.00039, 0.000743, 0.00039, 0.000391, 0.00071, 0.000391, 0.000743, 0.000743, 0.000743, 0.00021, 0.00021, 0.001315, 0.001315, 0.000743, 0.000743, 0.000391, 0.000391, 0.00071, 0.000391, 0.000391, 0.00071, 0.000391, 0.000686, 0.00039, 0.000686, 0.000391, 7e-05, 0.000362, 5.3e-05, 0.000362, 0.000362, 0.000362, 7e-05, 7e-05, 7e-05, 0.00071, 0.00071, 0.00071, 7e-05, 0.000362, 5.3e-05, 5.3e-05, 5.3e-05, 0.000362, 7e-05, 7e-05, 7e-05, 7e-05, 7e-05, 7e-05, 0.000362, 5.3e-05, 0.000171, 0.000171, 5.3e-05, 5.3e-05, 0.000362, 7e-05, 0.00071, 0.000391, 0.00071, 0.00071, 0.00071, 7e-05, 0.000362, 5.3e-05, 0.000362, 7e-05, 0.00071, 0.000391, 0.000391, 0.000686, 0.00039, 0.000743, 0.000686, 7e-05, 0.000362, 0.000362, 0.000362, 0.00071, 0.00039, 0.000389, -8e-06, -0.000268, 0.002336, -0.000268, -0.000604, 0.000764, -0.000129, 0.001315, 0.000764, 0.000807, 0.001315, -0.000129, 0.000901, 0.001337, 0.000169, 0.001352, 0.000169, 0.00213, 0.00021, 0.00021, 0.000743, 0.00021, -0.000129, 0.000807, 0.000901, -0.000268, -8.1e-05, 0.001337, 8.8e-05, 0.001838, 0.001838, 8.8e-05, -0.000304, -0.000304, -0.000304, 0.000717, 0.001838, 0.000717, 0.000717, 0.000717, 0.001352, 0.002336, -0.000604, -0.000268, 0.001337, 0.000169, 0.000169, 0.000169, 0.000169, 0.001352, 8.8e-05, 8.8e-05, 8.8e-05, 0.000169, 0.000169, 0.000169, 8.8e-05, 0.001838, 0.000717, 0.000717, -0.000304, -0.000304, -0.000304, -0.000304, 0.000169, 0.000901, 0.001315, -0.000129, 0.000389, 0.00032, -8.1e-05, 0.001326, 0.001352, 0.001352, 0.001352, 0.000169, 0.000169, 0.000169, 0.001326, -0.000779, 0.000169, 0.001352, 8.8e-05, 0.001838, 0.001838, 0.000717, 0.000717, 0.001744, 0.001326, -0.000604, 0.000807, 0.000807, 0.000389, -0.000604, -8e-06, 0.00032, -8.1e-05, 0.001352, 0.001326, 0.000605, 0.002336, 0.00032, 0.000901, 0.000901, -0.000268, -8.1e-05, -8.1e-05, 0.001326, 0.001352, 0.001838, -0.000304, 0.001134, 0.000708, 0.000717, 8.8e-05, 0.001838, 0.000717, 0.001838, 0.000717, 0.000717, -0.000304, -0.000304, -0.000304, 8.8e-05, -8.1e-05, 0.00213, 0.000807, -0.000129, -0.000129, 0.000764, 0.000389, 0.000764, 0.000901, 0.000389, 0.000389, 0.000807, 0.000743, 0.000686, 0.00071, 0.000391, 0.000686, 0.000743, 0.00021, 0.001315, -0.000129, -0.000129, -0.000129, -0.000129, 0.000743, 0.000391, 0.00071, 0.00071, 0.00071, 0.000391, 0.00021, 0.000807, -0.000604, -0.000268, 0.000669, 0.000605, 0.002336, -0.000604, 0.000901, -8e-06, 0.00032, -8.1e-05, 0.000605, -0.000779, 0.000169, 0.001352, 0.000605, 0.00032, 0.00213, 0.00213, -0.000268, 0.000605, 0.000169, 8.8e-05, 0.001838, 0.001838, 0.000169, 0.001352, 0.001838, 0.001352, 0.001337, -8e-06, 0.000807, 0.00213, -8e-06, 0.002336, 0.001326, 0.000169, 8.8e-05, 0.001352, 0.001352, 0.001352, 0.001326, -0.000604, -0.000129, 0.001315, 0.000764, 0.000389, 0.00032, 0.000169, 8.8e-05, 0.001838, 0.001838, 0.000717, 0.000717, 8.8e-05, 0.001326, 0.001337, 0.001337, -0.000779, 0.001326, 0.001352, 0.001352, 8.8e-05, 8.8e-05, 8.8e-05, 0.001352, 0.001326, -0.000779, 0.001337, 0.001337, 0.001326, 0.000169, 0.000169, 0.001337, 0.000605, 0.002336, -0.000268, 0.000901, 0.000743, 0.000686, 0.00039, 0.001315, 0.000389, 0.00213, -8e-06, -8e-06, -8.1e-05, 0.001337, 0.001337, -8.1e-05, -8e-06, 0.000389, -0.000129, -0.000129, 0.001315, 0.000743, 0.00039, 0.000743, 0.001315, 0.000807, 0.000734, 0.000807, 0.00039, 0.000743, 0.000807, -0.000268, 0.001337, 0.001326, 0.001352, 0.001838, 0.001838, 0.001838, 0.000169, -0.000779, 0.002336, -0.000604, 0.00213, -0.000268, -8.1e-05, 0.001337, -0.000779, 0.000605, 0.000605, 0.000605, 0.000605, 0.000605, 0.00213, 0.000764, 0.000764, -0.000604, -8.1e-05, 0.001326, 0.001326, 0.001337, -0.000268, 0.00213, -0.000604, 0.000764, -0.000129, 0.00039, 0.000686, 0.000743, 0.00021, 0.001315, -0.000129, 0.000807, 0.000807, 0.000764, 0.000764, -0.000129, 0.00021, 0.001315, 0.000901, 0.00032, 0.000605, -0.000779, 0.001326, 0.001352, 8.8e-05, 0.001352, 0.001326, -0.000779, 0.001337, 0.002336, 0.002336, -0.000268, 0.00032, -8.1e-05, -8e-06, -8e-06, 0.000901, -8e-06, -8e-06, 0.000901, 0.000901, 0.000807, 0.000807, 0.00213, -8.1e-05, 0.001337, 0.001337, -0.000779, 0.000169, 0.001352, 0.000169, 0.001337, 0.001337, -8.1e-05, 0.002336, -0.000268, 0.000807, 0.000764, 0.000764, 0.000807, 0.000807, 0.000807, -0.000129, 0.000743, 0.000686, 0.000686, 0.000686, -0.000129, -8e-06, -0.000779, 0.001352, 0.001838, 8.8e-05, 0.001838, 0.001838, 0.001838, 0.001838, 0.001248, 0.000169, 8.8e-05, 0.001352, 8.8e-05, 0.000717, 0.000708, 0.000708, 0.001134, 0.001134, 0.001134, 0.001134, 0.000708, 0.001838, 0.001838, 0.000717, 0.000708, 0.001134, 0.001134, 0.001001, 0.001134, 0.001134, 0.001134, -0.000304, 0.001326, 0.001326, 0.001352, 0.001326, -0.000779, -0.000779, -0.000779, 0.001326, 0.000169, 0.001352, -0.000779, 0.002336, 0.002336, 0.001326, 8.8e-05, 0.001838, 0.000717, -0.000304, 0.000708, 0.001001, 0.001134, 0.000708, 0.000169, -0.000268, -0.000129, 0.000743, 0.00039, 0.00039, 0.00039, 0.00021, 0.000389, 0.00032, 0.001326, 8.8e-05, 0.001838, 0.001326, 0.002336, 0.000605, -0.000779, -0.000779, 8.8e-05, 0.001838, 0.000717, 0.001352, 0.001352, 0.001352, 0.000605, -0.000604, 0.000807, 0.000901, 0.00213, -0.000268, -8.1e-05, 0.00032, 0.00032, 0.001337, 0.001337, 0.001326, 0.001326, -0.000779, 0.002336, 0.001337, 8.8e-05, 0.000717, 0.000708, 0.000708, -0.000304, 0.000708, 0.000708, 0.000708, -0.000304, 0.000169, 0.002336, -0.000604, 0.000901, -0.000268, 0.000605, 0.001326, 0.001326, 0.001326, 0.001326, -0.000779, -8.1e-05, 0.000389, -0.000129, 0.001315, 0.000743, 0.000743, 0.000807, -0.000129, 0.000807, 0.000764, 0.000807, 0.001315, 0.00021, 0.00039, 0.000391, 0.000391, 0.000686, 0.00021, 0.000901, 0.00213, 0.00213, 0.00213, -8e-06, 0.00032, -0.000268, -8e-06, 0.00213, 0.00213, -8e-06, 0.00032, 0.002336, -8.1e-05, 0.001337, -0.000779, -0.000779, 0.001337, -0.000268, 0.000807, 0.00039, 0.000391, 0.00071, 0.00039, -0.000129, 0.000764, 0.000901, 0.000901, -0.000604, 0.00213, 0.00213, 0.000389, 0.00021, 0.000743, 0.00039, 0.000686, 0.000686, 0.00039, 0.00039, 0.000743, 0.00039, 0.00039, 0.000686, 0.000686, 0.000391, 0.000391, 0.000391, 0.00071, 0.00071, 0.00071, 0.00071, 0.000391, 0.000391, 0.000391, 0.00039, 0.00039, 0.000743, 0.00021, 0.001315, -0.000129, 0.000764, 0.00213, -8e-06, 0.00032, -8.1e-05, -8.1e-05, 0.000605, 0.000605, 0.000605, 0.000605, -8.1e-05, -8.1e-05, -8.1e-05, 0.000605, 0.001337, -0.000779, -0.000779, 0.001337, -8.1e-05, 0.00032, -0.000268, -8e-06, 0.002336, 0.000605, -0.000779, -0.000602, -0.000779, 0.001326, 0.001326, 0.001326, 0.001337, 0.00032, 0.000389, 0.00021, 0.000743, 0.00039, 0.00039, 0.00039, 0.000743, 0.00021, -0.000129, 0.000389, 0.00213, 0.000764, 0.001315, 0.000743, 0.000743, 0.001315, 0.000764, 0.00213, -2.9e-05, -0.000604, 0.000764, 0.000389, 0.000389, -0.000129, 0.00039, 0.00039, 0.000743, 0.001315, 0.000807, 0.000764, 0.000764, -0.000129, -0.000129, 0.000807, 0.000807, 0.000764, 0.001315, 0.001315, 0.000807, -0.000604, -8e-06, -8.1e-05, 0.001337, 0.001326, 0.001326, -0.000779, 0.000605, 0.002336, 0.00213, -0.000604, 0.00213, 0.00032, 0.000605, -0.000779, 0.001352, 0.000169, 0.001352, 0.001352, 0.001352, 0.000169, -0.000779, -8.1e-05, 0.00032, -0.000268, 0.00032, -8.1e-05, 0.000605, -8.1e-05, -8e-06, 0.000764, 0.00039, 0.00071, 7e-05, 0.00071, 0.000391, 0.00039, 0.000743, 0.001315, 0.001315, -0.000129, -0.000129, -0.000129, -0.000129, 0.000743, 0.00039, 0.000743, 0.000807, -0.000604, -8.1e-05, 0.000605, 0.000605, 0.001337, 0.001337, -8.1e-05, 0.002336, 0.00032, 0.00213, 0.000901, 0.000901, 0.000901, 0.000901, 0.00213, 0.00032, -8.1e-05, -8.1e-05, 0.002336, 0.002336, 0.001337, 0.001326, 8.8e-05, 8.8e-05, -0.000304, 0.000708, 0.000708, 0.001134, 0.001134, 0.001134, 0.000708, -0.000304, 0.000717, 0.001352, 0.000169, 0.000169, 8.8e-05, 0.000717, 0.001134, 0.001001, 0.001001, 0.00074, 0.001001, 0.001134, 0.000708, 0.000717, 0.001838, 0.001838, 0.000717, -0.000304, 0.001001, 0.001001, 0.00074, 0.00074, 0.00074, 0.001001, 0.001001, 0.001134, 0.001134, 0.001134, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.001001, 0.001001, -0.000304, 0.001352, -0.000779, 0.002336, -0.000268, 0.00032, -8.1e-05, 0.000605, -0.000779, -0.000779, 0.001326, -0.000779, 0.00032, 0.000389, 0.000304, 0.000743, 0.000743, 0.001315, 0.000764, 0.000389, 0.000389, -8e-06, 0.002336, 0.000605, -8.1e-05, 0.00213, 0.000389, 0.001315, 0.001315, -0.000129, 0.000764, -0.000604, -8.1e-05, 0.000169, -0.000304, 0.000717, 0.000717, 0.001838, 0.001352, 0.000169, 0.001352, 0.001838, 0.000717, 0.000708, 0.000708, -0.000304, -0.000304, 0.000708, 0.000717, 0.000717, 0.001352, 0.001326, 0.001352, 8.8e-05, 0.000717, -0.000304, 0.000708, 0.001134, 0.001134, -0.000304, 0.001838, 0.000169, -8.1e-05, -8e-06, 0.000774, 0.000901, -0.000129, 0.00021, 0.000743, 0.00039, 0.000743, 0.00021, 0.00021, 0.000743, 0.000743, 0.00021, -8e-06, -0.000779, 0.001326, 0.001326, 0.001337, 0.000605, 0.00032, -0.000604, 0.000764, 0.000743, 0.00071, 0.000391, 0.00039, 0.00021, -0.000604, -8e-06, -8e-06, 0.000764, -0.000129, -0.000129, -0.000129, 0.001315, 0.000764, -0.000604, -8.1e-05, 0.001337, 0.001326, 0.001838, 8.8e-05, 0.001326, 0.00032, -0.000268, 0.000901, 0.00021, 0.00039, 0.000743, 0.000743, -0.000129, 0.000764, 0.000389, 0.000901, 0.00213, -0.000268, -8e-06, 0.000901, 0.001315, 0.00039, 0.000743, 0.001315, 0.000807, -0.000604, 0.00032, 0.000605, 0.001326, 0.000169, 0.000169, 0.000169, 8.8e-05, 0.001838, 0.001838, 0.000717, 0.001134, 0.001001, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.001001, 0.001134, 0.001838, 0.00213, 0.001315, 0.000743, 0.000743, 0.001315, 0.000807, 0.000901, 0.000605, 0.001352, 0.000169, 0.000169, 0.001352, 0.001352, 0.000169, 0.001838, 0.001134, 0.00074, 0.000996, 0.000996, 0.000996, 0.00074, 0.001134, 0.001337, 0.000389, -0.000129, 0.000807, -8e-06, 0.000169, 0.001134, 0.001001, 0.001001, 0.00074, 0.00074, 0.001001, 0.000708, -0.000304, 0.000708, 0.001134, 0.001134, 0.001001, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.001134, -0.000304, 0.000708, 0.001001, 0.00074, 0.001001, 0.001001, 0.001001, 0.001001, -0.000304, 0.00032, 0.000807, 0.00039, 0.000391, 0.000743, -0.000129, -0.000604, 0.000901, -8e-06, 0.00213, 0.00213, 0.000901, 0.000389, 0.00021, 0.000391, 0.00071, 0.000391, 0.000686, 0.000686, 0.00021, 0.001315, -0.000129, -0.000129, 0.00021, 0.00021, 0.000743, 0.00039, 0.000743, 0.001315, -0.000604, 0.002336, -8.1e-05, 0.000605, 0.002336, -8.1e-05, -8e-06, -0.000604, 0.001315, 0.000743, 0.000743, 0.001315, -0.000604, -8.1e-05, 0.000169, 0.001352, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 0.000169, 0.001326, 0.001326, 0.000605, 0.00032, -8e-06, -8e-06, -8e-06, -0.000268, 0.00032, 0.002336, 0.002336, 0.002336, 0.00032, 0.002336, 0.001326, 8.8e-05, 0.000717, 0.000708, 0.000708, -0.000304, 0.000708, -0.000304, 0.001744, 0.001352, 0.001337, -8.1e-05, 0.000669, 0.001352, 0.000717, -0.000304, -0.000304, -0.000304, 0.000717, 8.8e-05, 0.001326, -8.1e-05, -0.000604, 0.000807, 0.001315, 0.000807, -0.000604, -0.000268, 0.002336, 0.002336, 0.00032, -0.000268, 0.000901, 0.000389, 0.000389, 0.000764, 0.000389, 0.000389, 0.000764, 0.00213, -8e-06, -0.000268, 0.00032, 0.00032, 0.00032, -8e-06, -0.000604, 0.00032, 0.001326, 8.8e-05, 0.001838, -0.000304, -0.000304, -0.000304, 0.000717, 0.001838, 0.000169, 0.000605, 0.000605, 0.002336, -8e-06, -8e-06, -8e-06, -0.000268, 0.002336, 0.000605, -0.000268, -0.000604, -0.000604, 0.000764, 0.000389, 0.000389, 0.000389, -8e-06, -8.1e-05, -8.1e-05, 0.002336, -8.1e-05, -8.1e-05, -8.1e-05, 0.002336, 0.00213, 0.000389, 0.000901, 0.000389, 0.000389, 0.000901, 0.00213, -0.000268, 0.000605, 0.001337, 0.001337, 0.000605, -0.000268, -8e-06, -0.000268, -0.000779, 0.001352, 8.8e-05, 0.000717, 0.001134, 0.00074, 0.00074, 0.001001, 0.001001, 0.001134, 0.000708, 0.001134, 0.001001, 0.00074, 0.00074, 0.00074, 0.00074, 0.001001, 0.00074, 0.001001, 0.001134, 0.000708, -0.000304, 0.000717, 0.001838, 0.001838, -0.000304, 0.000708, 0.001134, 0.001001, 0.001001, 0.001001, 0.001001, 0.001134, 0.001134, 0.001134, 0.001001, 0.001001, 0.001001, 0.001134, 0.001134, 0.001134, 0.001001, 0.001134, 0.000708, 0.000717, 0.001838, 0.000605, 0.00032, -0.000604, 0.000901, -0.000604, -0.000268, -0.000268, 0.001337, 8.8e-05, 8.8e-05, 8.8e-05, 0.001352, 0.001352, 8.8e-05, 0.000717, 0.000708, 0.000708, 0.000708, -0.000304, -0.000304, 0.000717, 0.001352, 0.002336, 0.000807, 0.00021, 0.001315, 0.000389, 0.00032, -0.000779, 0.001352, -0.000304, -0.000304, 0.000708, -0.000304, 0.000717, 0.001838, 0.000717, 0.000708, 0.001134, 0.001134, 0.001134, 0.001134, 0.001134, 0.001134, 0.001134, 0.000708, 0.000708, 0.000717, 0.001326, 0.001337, 0.002336, 0.000901, 0.000807, 0.000807, 0.000764, 0.000389, -0.000604, 0.000389, 0.000764, -8e-06, -0.000268, -0.000268, 0.002336, -0.000779, 0.000169, 8.8e-05, 0.001838, 8.8e-05, 0.001326, 0.002336, 0.00213, 0.000807, 0.000764, 0.00032, 0.000169, 0.000708, 0.001001, 0.00074, 0.00074, 0.00074, 0.001001, 0.000708, 0.000717, 0.000708, 0.001134, 0.001134, 0.001001, 0.001001, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.001001, 0.001134, 0.000708, 0.000708, 0.001134, 0.000708, 0.000717, 8.8e-05, 0.001326, 0.001337, 0.00032, -0.000604, 0.000807, 0.000807, -0.000604, 0.00213, -0.000604, 0.000389, 0.000764, 0.000389, -0.000604, -0.000604, -0.000604, -0.000604, -0.000604, 0.000764, 0.000764, 0.00213, -0.000268, -0.000268, 0.002336, 0.001337, 0.001352, 0.001352, 0.001326, 0.000605, -8e-06, 0.000389, 0.000389, 0.000901, 0.000901, 0.00213, 0.00032, 0.002336, 0.001337, 0.001337, 0.00032, 0.00213, -0.000604, -0.000604, 0.00213, -8e-06, 0.002336, 0.000605, 0.001326, -0.000779, 0.002336, 0.00032, 0.00213, -0.000604, 0.000774, 0.000389, 0.000764, 0.000389, 0.000389, 0.000389, -0.000604, 0.00032, -0.000779, -0.000779, 0.001326, -0.000779, -8.1e-05, -8.1e-05, -0.000779, 0.000169, 0.001838, 0.000708, 0.000708, 0.000708, -0.000304, 0.000708, -0.000304, 0.000717, 0.001352, 0.001352, 0.001326, 0.000605, 0.000605, 0.001337, 0.001337, -0.000779, 0.001326, -8.1e-05, 0.00032, 0.000901, -0.000129, 0.000686, 0.000686, 0.00039, 0.000743, 0.000743, 0.001315, -0.000129, -0.000129, -0.000129, -0.000129, 0.00021, 0.000743, 0.000743, 0.00021, 0.001315, 0.000807, 0.000389, -0.000268, -0.000779, 0.001326, 0.001352, 0.001352, 0.000169, 0.000169, 0.001326, 0.000605, -0.000268, 0.00032, 0.001337, 0.001337, -0.000779, -0.000779, -0.000779, 0.001326, -0.000779, 0.000605, -0.000268, 0.00213, -8.1e-05, 0.001326, -0.000779, 0.000605, 0.001337, 0.001337, 0.001326, -0.000779, 0.002336, -0.000604, 0.000743, 0.000686, 0.00039, 0.001315, 0.000764, -0.000604, 0.002336, 0.001326, 0.001352, 8.8e-05, 0.000717, -0.000304, 0.000717, 0.000708, -0.000304, 0.000717, -0.000304, 0.000708, 0.000708, 0.000717, -0.000304, -0.000304, 0.001352, 0.000901, 0.00021, 0.00039, 0.00039, 0.001315, -0.000268, -0.000779, 0.001838, 0.001134, 0.001001, 0.001134, 0.000708, 8.8e-05, 0.001326, -0.000779, -8.1e-05, -0.000604, 0.000807, -0.000129, 0.000807, 0.000901, 0.00213, -0.000604, 0.000389, 0.000807, 0.00021, 0.00039, 0.000743, 0.000389, 0.000901, -0.000604, -0.000604, -8e-06, 0.002336, 0.00032, 0.00032, -8e-06, -0.000604, 0.000901, 0.000431, 0.000901, 0.00213, 0.00032, 0.001326, -0.000779, -0.000779, 0.000169, 0.001326, 0.000605, 0.000389, 0.00021, 0.000686, 0.00039, 0.00039, 0.000743, 0.000743, 0.00021, 0.001315, 0.00021, 0.00039, 0.000686, 0.000391, 0.00039, 0.00021, 0.001315, 0.000807, 0.000764, -0.000604, -8e-06, 0.000901, 0.000807, -0.000129, 0.001315, -0.000129, 0.001315, 0.000764, 0.00032, 0.001326, 0.001838, 0.000717, -0.000304, -0.000304, 0.000717, 0.001838, 8.8e-05, 8.8e-05, 0.000169, 0.001352, 0.001838, -0.000304, 0.000717, 0.000717, -0.000304, 0.001134, 0.000708, 0.000717, -0.000779, 0.00032, -0.000604, -0.000604, -8e-06, 0.002336, 0.002336, 0.002336, -8.1e-05, 0.000605, -8.1e-05, -0.000604, 0.000764, 0.000807, -0.000129, 0.000764, -0.000604, 0.00213, -0.000268, -8e-06, -8e-06, -0.000268, -0.000268, -8e-06, -0.000604, -0.000129, 0.00021, -0.000129, 0.000764, 0.000901, -8e-06, 0.00213, -8e-06, -0.000268, -0.000268, 0.00032, -8e-06, -8e-06, -0.000268, 0.001337, 0.001352, 0.000717, 0.000708, 0.001001, 0.00074, 0.001001, 0.001134, 0.001134, 0.000708, -0.000304, 0.000708, 0.000708, 0.001001, 0.00074, 0.000996, 0.001001, 0.001001, 0.001134, -0.000304, 0.000717, 8.8e-05, 0.001352, 0.001326, 0.001326, 0.000717, 0.001134, 0.001001, 0.00074, 0.00074, 0.00074, 0.00074, 0.001134, -0.000304, -0.000304, 0.000708, 0.001001, 0.001001, 0.000996, 0.000996, 0.000996, 0.000806, 0.000806, 0.000996, 0.000996, 0.00074, 0.00074, 0.001001, 0.000708, 8.8e-05, 0.000169, 0.001838, 0.000717, 0.001838, 0.000169, 0.000169, 8.8e-05, 8.8e-05, 0.000717, 0.001134, 0.001001, 0.00074, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.001001, 0.001838, -0.000779, 0.001337, -8.1e-05, -8e-06, -0.000217, -0.000779, 0.001352, 8.8e-05, -0.000304, 0.000708, 0.001134, 0.000708, -0.000304, -0.000304, -0.000304, -0.000304, 0.000708, 0.001134, 0.001001, 0.001134, 0.000708, -0.000304, -0.000304, 8.8e-05, 0.001352, 8.8e-05, -0.000304, -0.000304, -0.000304, 0.000708, 0.000717, -0.000304, -0.000304, 0.000708, 0.000708, 0.000169, 0.00213, 0.00021, 0.00039, 0.001315, 0.000807, 0.000901, 0.00213, 0.00032, -0.000779, 8.8e-05, 8.8e-05, 0.000169, -0.000779, -8.1e-05, -8.1e-05, 0.000605, -0.000779, 0.000605, 0.002336, 0.00032, -0.000604, 0.000764, 0.001315, 0.00039, 0.000686, 0.00039, -0.000129, 0.00213, 0.001337, 0.001352, 0.001134, 0.00074, 0.000996, 0.00074, 0.001001, 0.001134, 8.8e-05, -0.000268, 0.000901, 0.000807, 0.000807, 0.000764, 0.000764, 0.000764, 0.000764, -0.000129, 0.001315, 0.000389, 0.00032, 0.000169, 0.000717, -0.000304, 0.001001, 0.001001, 0.00066, 0.001144, 0.001144, 0.001144, 0.001078, 0.001151, 0.001078, 0.000441, -0.000461, 0.00041, -1.9e-05, -0.000254, 0.000552, 0.000794, 0.000794, -0.000186, 0.000552, -0.000194, 0.001618, 0.001036, 0.000441, 0.000351, 0.000564, 0.001151, 0.00066, 0.001144, 0.001144, 0.001144, 0.00066, 0.00066, 0.001144, 0.001144, 0.001144, 0.001144, 0.000564, 0.000564, 0.001078, 0.001078, 0.001151, 0.001078, 0.001151, 0.000564, 0.001078, 0.001078, 0.00066, 0.00066, 0.001144, 0.001144, 0.001018, 0.001018, 0.001018, 0.001018, 0.001144, 0.001144, 0.00066, 0.00066, 0.00066, 0.00066, 0.00066, 0.00066, 0.00066, 0.000351, 0.000459, 0.001618, 0.00221, -1.9e-05, 0.001666, -0.000254, 0.000642, 0.000642, -0.000254, 0.001666, -1.9e-05, -1.9e-05, 0.000369, -0.000254, 0.000552, 0.00076, -0.000186, 0.000642, -3.5e-05, 0.001399, 0.001036, 0.000459, 0.000441, 0.001036, -0.000194, -1.9e-05, 0.000642, 0.000552, 0.000794, 0.001533, -0.000186, -0.000254, 0.001618, 0.000564, 0.001078, 0.001078, 0.000564, 0.000351, 0.000441, 0.001036, 0.001399, -3.5e-05, -3.5e-05, -0.000194, 0.00041, -0.000194, 0.00243, -0.000194, 0.001036, 0.000459, 6.9e-05, 0.00243, 0.00076, 0.000117, 0.000117, 0.001533, -0.000186, 0.000794, 0.000794, 0.000552, -0.000254, 0.000642, 0.00076, 0.000794, 0.000794, 0.000552, 0.001666, -1.9e-05, -0.000194, -0.000461, 6.9e-05, 0.001399, -3.5e-05, -0.000254, 0.000552, 0.000552, 0.00076, 0.001666, 0.001618, 0.000441, 0.001151, 0.001078, 0.00066, 0.00066, 0.001144, 0.00066, 0.000351, 0.001036, 0.00243, 0.001666, 0.000642, 0.000642, 0.000552, 0.000552, 0.000642, 0.000642, 0.000642, -1.9e-05, 0.001399, -0.000461, 6.9e-05, 0.001036, 0.000564, 0.001151, 0.001078, 0.00066, 0.001144, 0.001144, 0.001137, 0.001144, 0.001144, 0.001144, 0.001018, 0.001144, 0.001144, 0.001144, 0.001018, 0.001018, 0.001018, 0.001018, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.00066, 0.00066, 0.00066, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.00066, 0.001078, 0.000351, 0.000459, 6.9e-05, 0.001399, -1.9e-05, 0.001666, 0.001666, 0.000552, 0.000794, -0.000186, 0.00076, -0.000186, 0.001533, 0.001533, 0.00076, -0.000254, -1.9e-05, -0.000194, 0.00243, -0.000461, -0.000461, -0.000461, 0.00041, 0.00243, 0.00243, -0.000461, 0.001618, 0.000459, 0.000459, 0.001305, 6.9e-05, 0.00041, 0.00243, -1.9e-05, 0.000642, -0.000254, 0.000642, 0.000369, -0.000194, 0.001399, -0.000461, 0.001399, 0.001399, 0.00041, 0.000369, 0.00076, -0.000186, 0.000117, 0.000117, 0.000117, 0.000117, 0.001533, 0.000552, 0.000642, -0.000254, 0.00076, 0.001533, 0.000765, 0.000454, 0.000559, 0.000559, 0.000454, 0.000117, -0.000186, -0.000254, -1.9e-05, -0.000194, -0.000194, 0.001399, 0.00041, -1.9e-05, -1.9e-05, -0.000194, -0.000461, -0.000461, -0.000461, 0.001399, 0.00041, 0.001399, -0.000461, 6.9e-05, 0.001618, 0.001618, 0.001399, 0.00041, -0.000461, 6.9e-05, 0.000564, 0.001078, 0.001078, 0.001078, 0.001078, 0.001078, 0.001151, 0.000351, 0.000351, 0.000441, 0.000351, 0.000351, 0.000351, 0.000351, 0.00053, 0.00041, -1.9e-05, -1.9e-05, 0.00243, 0.00243, 0.001666, -0.000254, 0.00243, 6.9e-05, 0.000459, 0.000351, 0.001305, 0.000459, 0.000459, 0.00041, 0.000369, -0.000254, 0.001666, 0.001666, 0.000552, 0.000642, 0.001666, -0.000254, 0.000552, -0.000254, -0.000254, -1.9e-05, -0.000194, 0.001618, 0.001618, -1.9e-05, 0.001666, 0.001618, 0.001305, 0.001305, 0.000459, 0.001399, -0.000194, 0.00243, -3.5e-05, -3.5e-05, -3.5e-05, 0.000369, 0.001666, -1.9e-05, 0.00243, 0.00041, 6.9e-05, 0.001305, 0.000459, -0.000194, 0.00041, 0.001399, -0.000194, 0.001399, 0.001305, 0.001151, 0.00066, 0.001078, 0.00066, 0.00066, 0.001144, 0.00066, 0.00066, 0.00066, 0.001151, 0.000564, 0.000351, 0.000441, 0.000459, 0.000459, 0.000459, 0.000459, 0.000459, 0.001036, 0.000459, 0.001305, 0.001036, 0.001618, 0.001399, -0.000461, -0.000461, 0.001036, 0.000459, 0.001305, 0.001305, 6.9e-05, 0.00243, 0.00243, 0.001666, -0.000254, 0.001666, -1.9e-05, 0.00041, 0.00041, 0.00243, 0.001399, 0.001618, 6.9e-05, 0.001618, -0.000194, 0.000369, -0.000254, -0.000254, 0.000369, -3.5e-05, -0.000194, 0.00041, 0.00243, -0.000461, 0.001618, -0.000461, 0.001618, 0.00041, -0.000194, 0.001399, 0.00041, 0.00041, 0.001399, 0.001618, 0.00041, 0.001399, 0.001399, 6.9e-05, 0.000431, 6.9e-05, 0.00041, 0.001618, 0.000459, 0.001618, -0.000461, 0.001036, 0.000441, 0.000441, 0.001036, 0.001618, 0.001399, 0.00243, 0.00243, 0.00041, 0.001488, 0.001618, -0.000461, 0.001618, 0.001618, 0.001618, -3.5e-05, 0.000369, 0.000369, 0.00243, 0.001399, 6.9e-05, 0.001305, 0.000441, 0.000351, 0.000564, 0.000564, 0.001151, 0.000564, 0.000564, 0.000564, 0.000564, 0.000351, 0.000351, 0.000564, 0.001151, 0.001151, 0.001151, 0.000564, 0.000351, 0.000351, 0.000351, 0.001151, 0.001078, 0.001078, 0.001151, 0.00066, 0.00066, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001078, 0.001078, 0.001151, 0.001078, 0.001043, 0.00066, 0.001078, 0.001078, 0.000441, 0.000351, 0.000564, 0.000564, 0.00066, 0.001144, 0.001144, 0.001144, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001018, 0.001144, 0.001144, 0.001144, 0.00066, 0.000351, 0.001078, 0.00066, 0.001144, 0.001018, 0.001018, 0.001144, 0.001144, 0.001018, 0.001018, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.001144, 0.00066, 0.001078, 0.001151, 0.001151, 0.001078, 0.001078, 0.001151, 0.000564, 0.000441, 0.001036, 0.001242, -0.000194, -3.5e-05, 0.00243, 0.00243, -0.000194, 0.001399, 0.001399, 0.00041, -0.000194, -0.000194, 0.00243, -0.000194, -0.000194, 0.00041, -0.000194, 0.001399, -0.000461, -0.000194, 0.00041, 0.001305, 0.001151, 0.001151, 0.001078, 0.001151, 0.000564, 0.000564, 0.000351, 0.000564, 0.001151, 0.000564, 0.000351, 0.001305, 0.001399, -1.9e-05, 0.000552, -0.000186, 0.000117, 0.000117, 0.000117, 0.000794, 0.001666, 0.001618, 0.000351, 0.001078, 0.001151, 0.001151, 0.001151, 0.001078, 0.001151, 0.001151, 0.000351, 0.000459, 0.001305, 0.000351, 0.000441, 0.000351, 0.000351, 0.001151, 0.000351, 0.000441, -0.000461, -0.000194, 0.001399, -0.000461, 0.001305, 0.001151, 0.00066, 0.00066, 0.00066, 0.00066, 0.00066, 0.001078, 0.001078, 0.001078, 0.001078, 0.00066, 0.001151, 0.000441, 0.001618, 0.00041, -3.5e-05, -0.000254, 0.000552, 0.000794, 0.00076, 0.000794, 0.00076, -1.9e-05, 0.000459, 0.000351, 0.000351, 0.001151, 0.001151, 0.000564, 0.000564, 0.000564, 0.000351, 0.000351, 0.001305, 0.000441, 0.000441, 0.000564, 0.000459, -0.000461, 0.001618, 6.9e-05, -0.000461, 0.00041, 0.001399, 0.001036, 0.001305, 0.000441, 0.000351, 0.001151, 0.001151, 0.001078, 0.00066, 0.00066, 0.00066, 0.001078, 0.001078, 0.001078, 0.000564, 0.000441, 0.000459, 0.001036, 0.001305, 0.001036, 0.000459, 0.001305, 0.001618, 0.00243, 0.001399, -0.000461, -0.000461, 0.001618, 0.001618, -0.000461, 0.001618, 0.000459, 0.000459, 0.001305, 6.9e-05, 0.001399, 0.001399, 6.9e-05, 0.001036, 6.9e-05, 6.9e-05, 6.9e-05, 0.00041, -0.000194, 0.00041, 6.9e-05, 6.9e-05, 0.001399, 0.001399, -1.9e-05, 0.000552, -0.000186, 0.000794, 0.000552, 0.000642, 0.000369, -1.9e-05, -3.5e-05, -3.5e-05, -3.5e-05, 0.001666, 0.001666, 0.000552, 0.000794, -0.000186, 0.000794, 0.001533, 0.001533, 0.000765, 0.000765, 0.000454, 0.000559, 0.000454, 0.000454, 0.000559, 0.000559, 0.000454, 0.001533, 0.000794, 0.000642, 0.001666, -1.9e-05, 0.000369, -0.000254, 0.000642, 0.000642, 0.00076, -0.000186, 0.000117, 0.000765, 0.000765, 0.000765, 0.000454, 0.000559, 0.000559, 0.000454, 0.000454, 0.000454, 0.000454, 0.000454, 0.000595, 0.000559, 0.001533, 0.00076, 0.000552, 0.000642, 0.000642, 0.00076, 0.000794, 0.000794, 0.001533, 0.001533, 0.000765, 0.000765, 0.000454, 0.000454, 0.000559, 0.000559, 0.000567, 0.000595, -4e-05, -4e-05, 0.000314, 0.000314, -4e-05, 0.000567, 0.001533, -0.000254, -3.5e-05, 0.001399, 0.001036, 0.000459, 0.001618, -0.000461, 0.00041, 0.001666, 0.000794, 0.000117, 0.000454, 0.000567, 0.000595, 0.000595, 0.000314, 0.000314, 8.2e-05, 8.2e-05, 0.000314, 0.000595, 0.000454, 0.000642, 0.00243, 6.9e-05, 0.001305, 0.001305, 0.001305, 0.000459, 0.00041, 0.001666, 0.000552, -0.000186, 0.000117, 0.000765, 0.000559, 0.000595, 0.000595, -4e-05, 0.000314, 8.2e-05, 8.2e-05, 0.000314, -4e-05, 0.000559, 0.00076, 0.00243, 0.001618, 0.000459, 0.000441, 0.000351, 0.001305, 6.9e-05, 0.00041, 0.00041, -0.000194, -1.9e-05, 0.000642, 0.00076, -0.000186, 0.000117, 0.000765, 0.000559, 0.000567, 0.000567, 0.000567, 0.000454, 0.000794, -0.000254, -0.000194, 6.9e-05, 0.001618, 0.000459, 0.001305, 0.000441, 0.000564, 0.000351, 0.000351, 0.000351, 0.000441, 0.001618, -3.5e-05, -0.000254, 0.00076, 0.000765, 0.000567, 0.000595, 0.000595, 0.000567, 0.000559, 0.001533, 0.000552, -0.000254, 0.000369, -0.000194, 0.00041, 0.00041, 6.9e-05, 0.001036, 6.9e-05, 0.00041, -1.9e-05, 0.001666, 0.000642, 0.000552, 0.000794, 0.000794, 0.00076, 0.00076, 0.001533, 0.000765, 0.000595, -4e-05, -4e-05, 0.000567, 0.000454, 0.000794, 0.000642, -3.5e-05, 0.001399, 0.000459, 0.000441, 0.000441, 0.000441, 0.000441, 0.001305, 0.001036, 6.9e-05, 0.001399, -0.000194, -0.000461, -3.5e-05, 0.000369, 0.000552, 0.000642, 0.000642, 0.000794, -0.000186, -0.000186, -0.000186, 0.000794, -0.000186, -0.000254, 0.00243, 0.001036, 0.001305, 0.000441, 0.000351, 0.001036, -0.000461, 0.00041, -1.9e-05, 0.000552, 0.000765, 0.000567, 0.000595, -4e-05, -4e-05, -4e-05, 0.000314, 8.2e-05, 8.2e-05, 0.000314, 0.000314, 0.000567, 0.000454, -0.000254, -0.000461, 0.001305, 0.000351, 0.000351, 0.000351, 0.000441, 0.000459, 0.000492, -3.5e-05, 0.000642, -0.000186, 0.000117, 0.000117, 0.000117, 0.000559, 0.000559, 0.000595, 0.000567, 0.000567, 0.000567, 0.000567, 0.000454, 0.000117, 0.000552, -1.9e-05, 0.001399, 0.001618, 0.001618, 6.9e-05, 0.001036, 0.000459, 6.9e-05, 6.9e-05, 6.9e-05, 0.000459, 0.001036, 6.9e-05, 0.001399, -3.5e-05, 0.00076, 0.000765, 0.000567, 0.000595, 0.000595, 0.000595, 0.000595, 0.000567, 0.000765, -0.000186, 0.000642, -0.000194, -0.000461, 0.001618, 6.9e-05, 0.001618, 0.001618, 6.9e-05, 0.001618, 0.001399, 0.00041, -0.000194, -1.9e-05, 0.000369, -1.9e-05, 0.000369, -0.000254, 0.00076, 0.001533, 0.000117, 0.000117, 0.000765, 0.000791, 0.000369, -0.000194, 0.001399, -0.000461, 0.001399, 0.001399, 0.001399, 0.001399, 0.00243, -3.5e-05, 0.000642, -0.000186, 0.001533, 0.001533, 0.000454, 0.000595, -4e-05, 0.000314, 0.000314, 0.000314, -4e-05, 0.000567, 0.000559, 0.001533, -0.000254, 0.00041, 0.001618, 0.001618, 6.9e-05, 0.001618, -0.000461, -3.5e-05, 0.000552, 0.000765, 0.000567, 0.000595, 0.000595, -4e-05, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000182, 0.000182, 8.2e-05, 0.000314, 0.000567, 0.001533, -0.000254, -3.5e-05, 0.001399, 0.001399, 0.001399, 0.001399, 0.001399, -3.5e-05, 0.00076, 0.000559, 0.000595, 0.000567, 0.000454, 0.000559, 0.000595, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 8.2e-05, 0.000314, 0.000595, 0.000765, 0.00076, 0.001666, -3.5e-05, 0.00243, 0.00243, 0.00243, 0.001666, 0.00076, 0.000454, 0.000595, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 8.2e-05, 0.000314, -4e-05, 0.000454, 0.000794, -0.000254, -1.9e-05, 0.00243, -0.000194, -1.9e-05, 0.00076, 0.001533, 0.000559, 0.000314, 0.000314, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 8.2e-05, 0.000314, -4e-05, 0.000595, 0.000454, 0.000765, 0.001533, 0.00076, 0.000552, 0.001666, 0.000369, 0.000369, 0.000369, 0.000369, 0.000552, -0.000186, 0.000454, 0.000595, 0.000314, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000182, 0.000182, 0.000182, 0.000182, 0.000314, -4e-05, 0.000454, 0.001533, 0.000642, 0.000642, 0.00076, 0.000794, 0.00076, -0.000254, 0.00076, 0.000794, -0.000186, 0.000567, 0.000314, 0.000314, 0.000314, 0.000567, 0.000567, -4e-05, 0.000595, 0.000567, 0.000765, 0.000454, -0.000186, 0.000369, -0.000461, 0.001618, 6.9e-05, 0.000459, 0.000441, 0.000441, 0.000441, 0.001305, 0.000459, 0.000459, 0.000459, 0.001618, 0.00243, 0.000552, 0.000117, 0.000559, 0.000454, 0.000794, 0.000552, -0.000254, -0.000254, -3.5e-05, 0.00041, 0.001618, 6.9e-05, 0.001036, 0.000459, 0.000459, 0.001618, 0.001666, 0.000794, 0.000117, 0.000454, 0.000559, 0.000567, 0.000567, 0.000567, 0.000567, 0.000595, 0.000595, 0.000595, -4e-05, 0.000314, -4e-05, 0.000595, 0.000117, 0.00243, 0.000459, 0.000459, 0.001305, 0.000441, 0.000351, 0.000351, 0.000351, 0.000441, 0.000459, -0.000461, 0.001666, 0.000552, 0.000117, 0.000567, -4e-05, 0.000314, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, -4e-05, 0.000454, 0.000794, -3.5e-05, -0.000461, 6.9e-05, 0.00041, -3.5e-05, -3.5e-05, 0.001666, -0.000254, 0.000794, 0.000454, 0.000595, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, 0.000314, 0.000567, 0.00076, -1.9e-05, 0.00243, 0.00041, 0.001399, 0.00041, -0.000194, 0.001666, 0.000794, 0.001533, 0.000765, 0.000567, 0.000595, 0.000595, 0.000595, -4e-05, 0.000595, 0.000595, 0.000567, 0.000567, 0.000567, 0.000559, 0.000117, 0.000552, 0.000642, 0.001666, -3.5e-05, -3.5e-05, 0.000552, 0.001533, 0.000117, 0.000117, 0.000765, 0.000559, 0.000595, -4e-05, 0.000314, 8.2e-05, 0.000314, -4e-05, 0.000559, 0.001533, 0.00076, 0.000552, 0.000552, 0.000642, 0.001666, -3.5e-05, 0.00243, -0.000194, 0.00041, 6.9e-05, 6.9e-05, 6.9e-05, 0.001036, 0.001036, 0.001036, 0.001036, 0.001036, 0.001036, 6.9e-05, 0.001399, -3.5e-05, 0.001666, 0.00076, -0.000186, -0.000186, -0.000186, 0.000117, -0.000186, 0.000642, -2e-05, -0.000194, 0.00041, -0.000194, 0.00041, 0.001399, -0.000461, -0.000461, 0.00243, -1.9e-05, 0.001666, 0.000642, 0.00076, 0.000117, 0.000765, 0.000559, 0.000454, 0.000454, 0.000559, 0.000567, 0.000567, 0.000595, 0.000595, 0.000559, 0.000117, 0.00076, 0.000642, 0.000642, -0.000254, -0.000254, 0.000552, 0.000794, 0.000765, 0.000559, 0.000567, 0.000765, 0.000454, 0.000595, 0.000595, 0.000314, -4e-05, 0.000314, 0.000314, 0.000314, 0.000314, 8.2e-05, 0.000314, 0.000595, 0.000454, 0.000117, 0.001533, 0.001533, 0.000117, 0.000765, 0.000559, 0.000567, 0.000595, 0.000567, 0.000595, 0.000595, -4e-05, -4e-05, 0.000314, 0.000314, 0.000314, 0.000314, 0.000314, -4e-05, 0.000567, 0.000559, 0.000559, 0.000117, 0.000794, 0.00076, 0.000552, 0.000642, -0.000254, -0.000254, 0.000794, 0.000117, 0.000454, 0.000454, 0.000117, 0.000794, 0.000794, -0.000186, 0.001533, 0.000765, 0.000595, 0.000314, 8.2e-05, 8.2e-05, 0.000314, 0.000314, 0.000595, 0.000454, 0.001533, 0.00076, -0.000186, -0.000186, 0.000794, -0.000186, 0.000454, 0.000567, 0.000567, 0.000567, 0.000567, 0.000559, 0.000559, 0.000595, -4e-05, -4e-05, -4e-05, 0.000595, 0.000595, 0.000567, 0.000559, 0.000549, 0.000454, 0.000559, 0.000454, -0.000186, 0.000552, 0.000642, -0.000254, -0.000254, 0.000642, 0.000552, 0.000794, 0.00076, -0.000186, 0.001533, 0.000765, 0.000454, 0.000559, 0.000595, -4e-05, -4e-05, -4e-05, -4e-05, 0.000567, 0.000559, 0.000765, 0.000794, -0.000254, -1.9e-05, 0.00243, 0.001399, -0.000461, -0.000461, -0.000461, -0.000194, 0.00243, -1.9e-05, 0.000642, 0.000794, 0.001533, 0.000559, -4e-05, 8.2e-05, 8.2e-05, 8.2e-05, 0.000314, 0.000314, 8.2e-05, 0.000314, -4e-05, 0.000559, 0.000117, 0.000642, 0.000369, -1.9e-05, 0.000369, -0.000254, 0.00076, 0.000794, 0.00076, 0.000117, 0.000567, 0.000595, 0.000314, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, 0.000314, 0.000314, 0.000314, 0.000595, 0.000559, 0.000765, 0.000794, 0.000369, 0.000642, 0.000794, 0.000117, 0.000454, 0.000454, 0.000454, 0.000559, 0.000595, -4e-05, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000474, 0.000474, 0.000182, 0.000182, 0.000314, -4e-05, 0.000559, 0.001533, 0.000642, 0.000369, -0.000254, 0.000642, 0.000794, -0.000186, -0.000186, 0.000117, -0.000186, 0.000117, 0.000559, -4e-05, 0.000595, -4e-05, 8.2e-05, 0.000314, 0.000314, 0.000314, 0.000314, 8.2e-05, 0.000182, 8.2e-05, -4e-05, 0.000567, 0.000454, 0.000765, 0.001533, 0.000117, 0.000454, 0.000567, 0.000595, 0.000595, -4e-05, 0.000283, 8.2e-05, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 0.000182, 0.000314, 0.000567, 0.001533, 0.000552, 0.001557, -1.9e-05, 0.000173, -0.000194, 0.00243, -0.000194, 0.00243, 0.00243, 0.001666, 0.000794, 0.000559, 0.000314, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 8.2e-05, 8.2e-05, 0.000314, -4e-05, 0.000595, 0.000559, 0.001533, 0.00076, 0.001666, -1.9e-05, 0.000369, 0.001666, 0.000642, 0.000794, 0.000765, -4e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 8.2e-05, 0.000314, -4e-05, 0.000567, 0.000117, 0.000552, 0.000642, 0.000552, 0.000642, 0.001666, 0.001666, -3.5e-05, 0.00243, -3.5e-05, -3.5e-05, -0.000254, -0.000186, 0.000117, 0.000559, 0.000595, 0.000595, -4e-05, -4e-05, 0.000314, 8.2e-05, 8.2e-05, 8.2e-05, 0.000314, 0.000314, 0.000595, 0.000567, 0.000559, 0.000559, 0.000454, 0.000765, 0.000765, 0.000765, 0.000454, 0.000559, 0.000595, -4e-05, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 8.2e-05, 2e-05, 0.000765, 0.000794, 0.000642, -0.000254, -0.000254, -0.000254, -0.000254, -0.000254, 0.000642, -0.000186, 0.000567, -4e-05, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 0.000314, 0.000567, 0.000117, 0.000642, 0.000369, -3.5e-05, 0.000552, 0.000794, 0.000765, 0.000454, 0.000454, 0.000454, 0.000454, 0.000454, 0.000567, 0.000567, 0.000567, -4e-05, 8.2e-05, 0.000182, 0.000182, 8.2e-05, 8.2e-05, 0.000314, 0.000595, 0.000595, 0.000559, 0.000454, 0.000552, -3.5e-05, 0.00243, 0.00243, -0.000194, 0.00243, -1.9e-05, 0.000642, 0.000794, 0.001533, 0.000454, 0.000559, 0.000559, 0.000567, 0.000567, -4e-05, 0.000314, 0.000314, -4e-05, 0.000567, 0.000454, 0.000454, 0.000454, 0.000765, 0.001533, -0.000186, 0.000794, 0.000794, 0.000794, -0.000186, 0.000765, 0.000454, 0.000567, 0.000567, 0.000595, -4e-05, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, -4e-05, 0.000559, -0.000186, 0.000642, 0.001666, 0.001666, 0.001666, 0.001666, 0.000552, -0.000186, 0.001533, 0.000454, 0.000567, 0.000595, -4e-05, -4e-05, 0.000314, 0.000182, 0.000182, 8.2e-05, 0.000283, 0.000314, 8.2e-05, 0.000314, 0.000595, 0.000765, 0.000552, -1.9e-05, -3.5e-05, 0.00243, -0.000194, 0.00041, 0.00243, -0.000254, 0.000794, 0.001533, 0.000454, 0.000595, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, 0.000314, -4e-05, 0.000567, 0.000559, 0.000567, 0.000765, 0.000454, 0.000559, 0.000559, 0.000567, 0.000559, 0.000454, 0.000559, 0.000567, -4e-05, 0.000314, 8.2e-05, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 0.000182, 0.000314, -4e-05, 0.000595, 0.000567, 0.000454, 0.000559, 0.000567, 0.000595, 0.000595, 0.000595, -4e-05, 0.000314, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 4.5e-05, 4.5e-05, 4.5e-05, 0.000474, 8.2e-05, -4e-05, 0.000454, -0.000186, 0.000552, 0.001666, 0.001666, 0.001666, -0.000254, 0.000794, 0.001533, 0.000117, 0.000567, 0.000567, 0.000595, -4e-05, -4e-05, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000314, 0.000595, 0.000559, 0.000117, 0.001533, 0.00076, 0.001666, 0.000369, -3.5e-05, 0.00243, 0.00243, 0.000369, 0.00076, 0.000559, -4e-05, 8.2e-05, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000182, 0.000182, 8.2e-05, 0.000314, -4e-05, 0.000559, 0.000117, 0.001533, 0.001533, 0.000794, -0.000186, -0.000186, -0.000186, 0.000765, 0.000567, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000474, 4.5e-05, 4.5e-05, 0.000474, 0.000474, 0.000474, 0.000182, 8.2e-05, -4e-05, 0.000559, 0.000765, 0.000765, 0.001533, 0.001533, 0.000117, 0.000117, 0.000117, 0.000765, 0.000559, 0.000595, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 8.2e-05, 0.000314, -4e-05, 0.000595, 0.000567, 0.000567, 0.000559, 0.000117, 0.001533, 0.001533, 0.001533, -0.000186, 0.000794, 0.000552, 0.00076, -0.000186, 0.001533, 0.001533, 0.000117, 0.000567, -4e-05, -4e-05, 0.000314, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, 0.000314, 0.000595, 0.000567, 0.000559, 0.000559, 0.000454, 0.000454, 0.000454, 0.000454, 0.000454, 0.000454, 0.000559, 0.000567, -4e-05, 0.000314, -4e-05, 0.000595, -4e-05, 0.000314, -4e-05, -4e-05, 0.000567, -4e-05, 0.000595, 0.000595, 0.000567, 0.000765, 0.000117, 0.000765, 0.000117, 0.001533, -0.000186, 0.001533, 0.000117, 0.000559, 0.000595, 0.000595, -4e-05, 8.2e-05, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000182, 0.000182, 8.2e-05, -4e-05, 0.000117, 0.00076, 0.000642, 0.001666, 0.001666, 0.000552, -0.000186, 0.000765, 0.000454, 0.000559, 0.000559, 0.000454, 0.000454, 0.000567, 0.000314, 8.2e-05, 8.2e-05, 8.2e-05, 0.000182, 0.000182, 8.2e-05, 8.2e-05, 8.2e-05, 0.000595, 0.001533, 0.000552, -0.000254, 0.001666, -1.9e-05, 0.001666, 0.00076, 0.000765, 0.000765, 0.000117, 0.000559, 0.000567, -4e-05, -4e-05, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, 0.000314, 0.000567, 0.000765, 0.00076, -0.000254, 0.001666, 0.001666, 0.000642, 0.000794, -0.000186, 0.000117, 0.000454, 0.000559, 0.000559, 0.000595, 8.2e-05, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, 8.2e-05, -4e-05, 0.000559, 0.001533, -0.000186, 0.000552, -0.000254, 0.000642, -0.000254, 0.000642, -0.000186, 0.000117, 0.000765, 0.000567, 0.000595, 0.000567, -4e-05, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, -4e-05, 0.000454, 0.000552, -0.000194, 0.00041, 0.001399, -0.000461, 0.001618, 0.001036, 0.001036, 0.001036, 0.001036, 6.9e-05, -0.000461, 0.001399, -3.5e-05, 0.000369, 0.000552, 0.000794, 0.000117, 0.000117, 0.000765, 0.000765, 0.000765, 0.000765, 0.000559, 0.000765, 0.000117, -0.000186, 0.00076, -0.000254, 0.001666, 0.000369, 0.000369, -0.000254, 0.00076, -0.000186, -0.000186, 0.000117, 0.000454, 0.000559, 0.000559, 0.000567, -4e-05, 0.000314, 0.000314, 8.2e-05, 8.2e-05, 0.000314, 0.000595, 0.000117, 0.001666, -0.000194, -0.000461, 0.001399, -0.000194, 0.00243, -1.9e-05, -0.000254, 0.00076, 0.001533, 0.000765, 0.000559, 0.000595, -4e-05, 0.000314, 0.000182, 0.000182, 0.000474, 0.000182, 0.000182, 0.000314, 0.000559, 0.000117, 0.000642, 0.001666, -3.5e-05, 0.00243, 0.00041, 0.001399, 0.00243, 0.000642, 0.001533, 0.000454, 0.000567, 0.000595, 0.000595, 0.000595, 0.000314, 0.000314, 8.2e-05, 8.2e-05, 0.000314, 0.000595, 0.000567, 0.000567, 0.000595, 0.000567, 0.000765, 0.00076, 0.001666, -3.5e-05, 0.00243, -3.5e-05, -3.5e-05, -3.5e-05, 0.001666, 0.000552, -0.000186, 0.000117, 0.000765, 0.000559, 0.000595, -4e-05, -4e-05, 0.000314, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, -4e-05, 0.000595, 0.000765, -0.000186, 0.000552, 0.00076, 0.000794, 0.000794, 0.000794, 0.000117, 0.000117, 0.000454, 0.000559, 0.000595, -4e-05, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000182, 0.000314, 0.000454, 0.000794, -0.000254, 0.00243, 0.001618, 6.9e-05, 0.001036, 0.001036, 0.001036, 6.9e-05, 6.9e-05, 0.00041, 0.00076, 0.000559, -4e-05, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, 0.000314, 0.000567, 0.000559, 0.000559, 0.000117, 0.000552, -3.5e-05, 0.001618, 6.9e-05, 6.9e-05, 6.9e-05, 0.001399, -0.000194, 0.00041, 0.00041, -3.5e-05, 0.000369, -3.5e-05, -2e-05, -1.9e-05, -0.000254, -0.000186, 0.000794, 0.00076, 0.000552, 0.000552, -0.000186, 0.000117, 0.000765, 0.000765, -0.000186, 0.00076, 0.000552, -0.000254, 0.000369, -3.5e-05, -0.000194, -0.000194, -0.000461, 0.001399, 0.000369, 0.000642, 0.000117, 0.000567, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000474, 0.000474, 0.000182, -4e-05, 0.000559, 0.001533, -0.000254, -3.5e-05, 0.00243, -0.000194, 0.00041, 0.00041, 0.000369, 0.000642, 0.000552, 0.000794, 0.000567, -4e-05, 0.000314, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000182, 0.000182, 0.000182, 0.000314, -4e-05, 0.000595, 0.000117, 0.000552, -3.5e-05, -3.5e-05, 0.000369, -1.9e-05, -3.5e-05, 0.001666, 0.001533, 0.000559, 0.000595, -4e-05, 0.000314, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 0.000182, 0.000182, 0.000182, -4e-05, 0.000559, -0.000186, 0.001666, -1.9e-05, -3.5e-05, -1.9e-05, 0.000552, 0.000794, 0.00076, 0.000552, 0.00076, 0.000765, 0.000595, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 0.000314, 0.000567, -0.000186, -0.000186, 0.00076, 0.000642, 0.001666, 0.000552, 0.000794, 0.000794, -0.000186, 0.00076, 0.000369, 0.001666, 0.00076, 0.000765, 0.000567, 0.000314, 0.000314, 8.2e-05, 8.2e-05, 0.000182, 8.2e-05, 0.000182, 0.000314, 0.000595, 0.000567, 0.000559, 0.001533, 0.00076, 0.00076, -0.000105, -0.000186, 0.001533, 0.000765, 0.000117, 0.000454, 0.000559, 0.000567, 0.000595, -4e-05, 0.000314, 0.000314, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, 0.000314, 0.000567, 0.000765, 0.00076, 0.000369, 0.00243, -0.000194, -0.000144, 0.00041, 0.001399, -0.000461, -3.5e-05, -3.5e-05, -3.5e-05, -1.9e-05, 0.000369, 0.000552, 0.000794, -0.000186, 0.000559, -4e-05, -4e-05, 0.000314, 0.000595, 0.000567, 0.000765, 0.001533, 0.000642, -3.5e-05, -0.000194, 0.001399, 6.9e-05, 6.9e-05, 6.9e-05, 0.001618, 6.9e-05, 0.001618, 0.00243, 0.001666, 0.001533, 0.000595, -4e-05, 0.000314, 0.000182, 0.000182, 0.000182, 8.2e-05, 0.000314, -4e-05, 0.000559, 0.000765, 0.001533, -0.000186, 0.00076, -0.000254, -1.9e-05, -1.9e-05, -1.9e-05, 0.000369, 0.000552, 0.00076, 0.00076, 0.000117, 0.000567, -4e-05, 8.2e-05, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, -4e-05, 0.000454, 0.000642, -1.9e-05, -3.5e-05, -0.000194, 0.00041, -0.000194, -3.5e-05, 0.000552, -0.000186, 0.001533, 0.000117, 0.000559, 0.000567, 0.000595, 0.000595, -4e-05, 8.2e-05, 0.000314, 0.000314, -4e-05, 0.000559, 0.000117, -0.000186, 0.000552, 0.00243, 0.001618, 0.001036, 0.000459, 0.000459, 0.000459, 0.00099, 6.9e-05, -3.5e-05, -1.9e-05, 0.000642, 0.000794, 0.000794, 0.000794, -0.000186, 0.000765, 0.000454, 0.000559, 0.000567, 0.000559, 0.000454, 0.001533, 0.000794, 0.000642, 0.00243, 0.001618, 0.001036, 0.001305, 0.001305, 0.001036, 6.9e-05, 0.001399, 0.000369, 0.001666, 0.000552, 0.000552, 0.001533, 0.000454, 0.000454, 0.000567, 0.000567, 0.000765, -0.000186, 0.000794, 0.000794, 0.000791, 0.000552, 0.000369, 0.00041, 0.001618, 0.001036, -0.000461, 0.00243, -0.000461, -0.000461, 0.001618, 6.9e-05, 0.000459, 0.001036, 0.001036, 0.001036, 0.001618, 0.00041, 0.000369, 0.000642, 0.000794, 0.001533, 0.000117, 0.000794, -0.000254, 0.001666, -3.5e-05, 0.00041, -0.000461, -0.000461, 0.001399, -0.000194, -1.9e-05, -3.5e-05, 0.001666, 0.000642, -0.000254, 0.000369, 0.00041, 0.00041, 0.001399, -0.000461, -0.000461, 0.001618, -0.000461, 0.00041, -0.000194, 0.00243, 0.00243, 0.00041, 0.001399, -0.000461, 6.9e-05, 6.9e-05, 0.001618, 0.001618, 6.9e-05, 0.001036, 0.000459, 0.000459, 0.001036, 6.9e-05, 0.001618, 0.001399, 0.000369, 0.00076, 0.000117, 0.000765, 0.000567, 0.000283, 8.2e-05, 0.000182, 8.2e-05, 0.000595, 0.000454, 0.001533, 0.000552, 0.000642, 0.000642, 0.000552, 0.000552, 0.000642, 0.000642, 0.00076, 0.00076, -0.000186, 0.000454, 0.000567, 0.000314, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, 0.000314, 0.000595, 0.000559, 0.000117, 0.000552, 0.000642, 0.000642, 0.000369, 0.001666, 0.000642, 0.000552, 0.000794, 0.000765, 0.000595, 0.000314, 0.000182, 0.000182, 0.000474, 0.000474, 4.5e-05, 4.5e-05, 4.5e-05, 0.000474, 0.000182, 0.000314, 0.000765, 0.000552, 0.000369, -1.9e-05, -2e-05, -1.9e-05, 0.000369, -0.000254, -0.000254, -0.000254, 0.000552, -0.000186, 0.000117, 0.000559, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, -4e-05, 0.000117, 0.000642, -1.9e-05, 0.00243, -3.5e-05, 0.00243, 0.00243, 0.001557, 0.000642, -0.000186, 0.000559, -4e-05, 0.000595, 0.000595, -4e-05, 0.000314, 0.000314, 0.000314, 8.2e-05, 0.000314, 8.2e-05, 8.2e-05, -4e-05, 0.000454, -0.000186, 0.000642, 0.000369, -1.9e-05, -3.5e-05, -3.5e-05, 0.00243, 0.000369, -0.000254, -0.000254, 0.001666, 0.000552, 0.000765, 0.000567, 0.000314, 0.000314, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, -4e-05, -4e-05, 0.000559, 0.001389, 0.000552, 0.000369, -3.5e-05, -0.000194, -0.000194, -0.000194, -0.000194, 0.00041, -0.000194, 0.001399, 0.001399, 0.00243, 0.000552, 0.001533, 0.000559, 0.000595, 0.000314, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, 0.000314, 0.000567, 0.000794, -1.9e-05, 0.00243, -0.000194, 0.00041, 0.00041, 0.00041, 0.00041, -0.000194, 0.00243, -0.000194, -3.5e-05, 0.001666, 0.000552, -0.000186, 0.000117, 0.000765, 0.000454, 0.000567, 0.000595, -4e-05, -4e-05, 0.000595, 0.000559, 0.000765, 0.001533, -0.000186, 0.00076, -0.000254, 0.000369, -1.9e-05, 0.001666, 0.000552, 0.000794, 0.000794, -0.000186, 0.001533, 0.000765, 0.000765, 0.000595, 8.2e-05, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000182, 8.2e-05, 0.000595, 0.001533, 0.000642, 0.000369, -1.9e-05, -1.9e-05, 0.00243, -1.9e-05, -0.000254, 0.000642, 0.00076, 0.000233, 0.000559, 0.000595, 0.000314, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 8.2e-05, -4e-05, 0.000559, 0.000794, 0.001666, 0.00243, 0.00041, 0.001399, 0.00041, -0.000194, 0.00041, 0.00041, -0.000254, 0.00076, 0.000765, 0.000567, 0.000559, 0.001533, 0.001533, 0.000765, 0.000454, 0.000765, 0.000117, 0.000117, 0.001533, -0.000186, 0.00076, 0.001666, -1.9e-05, 0.00243, 0.000642, -0.000254, -0.000254, -0.000254, -0.000254, 0.000642, 0.000794, 0.000794, -0.000105, 0.000794, -0.000186, 0.000765, 0.000567, 0.000314, 8.2e-05, 8.2e-05, 0.000182, 0.000182, 0.000182, 8.2e-05, 8.2e-05, 0.000314, 0.000567, 0.000454, 0.000117, 0.001533, 0.000117, 0.000117, 0.000117, 0.000454, 0.000567, 0.000567, 0.000567, 0.000567, 0.000567, 0.000595, -4e-05, -4e-05, 0.000595, 0.000567, 0.000567, 0.000567, 0.000559, 0.000765, 0.000765, 0.000567, 0.000559, 0.000559, 0.000454, 0.000765, 0.000117, -0.000186, 0.000794, 0.00076, 0.00076, 0.000552, 0.00076, -0.000186, 0.000454, 0.000559, 0.000567, 0.000595, -4e-05, 0.000314, 0.000314, 0.000314, 0.000314, -4e-05, 0.000559, 0.001533, -0.000254, -0.000194, 0.001399, 6.9e-05, 0.001305, 0.000459, 6.9e-05, 0.001618, 0.001618, 0.001618, -0.000461, 0.001666, 0.00076, 0.000117, 0.000559, 0.000595, -4e-05, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 8.2e-05, 0.000314, 0.000559, 0.001533, 0.000642, -3.5e-05, 0.001399, 0.001618, 0.001618, 0.001399, 0.00041, 0.00041, -0.000194, -0.000254, -0.000186, 0.000454, 0.000595, 0.000314, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 0.000182, 0.000314, 0.000595, 0.000454, 0.001533, -0.000186, 0.00076, -0.000254, -0.000194, -0.000461, 0.00041, -0.000194, 0.00041, -0.000194, -1.9e-05, 0.000642, 0.000117, 0.000595, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000182, 8.2e-05, 0.000314, 0.000567, 0.001533, 0.001666, 0.00243, -0.000461, 0.001399, 0.00041, 0.00041, -0.000194, 0.00243, 0.000369, -0.000254, 0.000642, -0.000186, 0.000567, 0.000314, 8.2e-05, 0.000182, 0.000474, 0.000474, 0.000474, 0.000182, 8.2e-05, 2e-05, 0.000117, -0.000186, 0.000794, 0.000794, 0.00076, 0.00076, 0.000794, 0.000117, 0.000559, 0.000559, 0.000454, 0.000559, 0.000595, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 0.000474, 0.000474, 0.000474, 0.000474, 0.000182, -4e-05, 0.000567, 0.000454, 0.000117, -0.000186, -0.000186, 0.001533, 0.001533, 0.000765, 0.000559, 0.000567, 0.000559, 0.000559, 0.000567, 0.000567, 0.000595, -4e-05, 0.000314, 8.2e-05, 0.000182, 0.000182, 0.000182, 8.2e-05, -4e-05, 0.000454, 0.000552, -3.5e-05, 0.001618, 0.001036, 0.001305, 0.000459, 6.9e-05, 6.9e-05, -0.000461, -0.000461, -0.000461, 0.001399, 0.000369, 0.000794, 0.000765, -4e-05, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, 8.2e-05, 0.000314, 0.000567, 0.000765, 0.000794, -0.000194, 6.9e-05, 0.001399, -1.9e-05, 0.00243, -3.5e-05, -1.9e-05, -1.9e-05, -3.5e-05, 0.001666, -0.000254, 0.000794, 0.000454, -4e-05, 0.000314, 0.000314, 0.000314, -4e-05, -4e-05, -4e-05, -4e-05, 0.000595, 0.000567, 0.000765, -0.000254, -0.000194, 0.001399, 0.00041, 0.00041, 0.00041, -0.000194, -0.000194, -0.000194, -0.000194, -3.5e-05, 0.000369, 0.001666, 0.000369, 0.000369, -0.000186, 0.000567, 0.000314, 8.2e-05, 8.2e-05, 0.000314, 0.000567, 0.000765, -0.000105, 0.001666, -0.000194, 0.001399, -0.000461, -0.000461, -0.000461, -0.000194, -1.9e-05, 0.00076, -0.000186, -0.000186, 0.001533, 0.000559, 0.000567, 0.000567, 0.000595, 0.000595, 0.000595, 0.000567, 0.000559, 0.000765, -0.000186, 0.000369, -0.000461, 0.001036, 0.00099, 0.000459, 0.001036, 0.001036, 6.9e-05, 0.001618, -0.000194, 0.001399, -0.000461, 0.001399, 0.001399, -0.000194, -1.9e-05, 0.001666, 0.000552, 0.001533, 0.000559, 0.000595, -4e-05, 0.000567, 0.000117, 0.000642, -0.000194, 6.9e-05, 0.000459, 0.000441, 0.000351, 0.000351, 0.000351, 6.9e-05, 0.00243, 0.001666, -0.000254, 0.000552, -0.000186, 0.001533, 0.001533, 0.000117, 0.000454, 0.000559, 0.000765, 0.000765, 0.000117, -0.000186, -0.000254, 0.000369, -0.000194, 0.000459, 0.000351, 0.000351, 0.000441, 0.000351, 0.000351, 0.000351, 0.001305, 6.9e-05, 0.001618, 0.001036, 0.000459, 0.000459, 0.001618, 0.00243, 0.001666, 0.00076, 0.001533, 0.001533, 0.000765, 0.000117, -0.000186, 0.000552, -3.5e-05, -0.000461, 6.9e-05, 0.000459, 0.000459, 0.001305, 0.001305, 0.001305, 0.001305, 0.000441, 0.000351, 6.9e-05, 0.00041, -3.5e-05, 0.000369, 0.00243, 0.001399, 6.9e-05, -0.000194, -0.000254, 0.000642, 0.001666, -0.000194, -0.000461, 0.001618, 0.001618, 0.001036, 0.001305, 0.001305, 0.001305, 0.000459, 0.000459, 0.001305, 0.000459, 0.001618, 0.001399, -1.9e-05, 0.001666, -0.000254, 0.000794, -0.000186, 0.000117, 0.000454, 0.000559, 0.000595, 0.000595, 0.000567, 0.000454, 0.000642, 0.001618, 0.000431, 0.000564, 0.001151, 0.001078, 0.001078, 0.001078, 0.001151, 0.000564, 0.000564, 0.001078, 0.001078, 0.001078, 0.001078, 0.001078, 0.00066, 0.001078, 0.001078, 0.00066, 0.000441, 0.001036, 0.00243, -0.000194, 0.001305, 0.001151, 0.001151, 0.000564, 0.000564, 0.000564, 0.000351, 0.000441, 0.000459, 0.001036, 6.9e-05, 0.001399, 0.00041, 0.00041, -0.000194, -1.9e-05, 0.001666, 0.00076, 0.001533, 0.000559, 0.000595, 0.000595, 0.000595, 0.000765, 0.000552, 0.00243, 6.9e-05, 0.001305, 0.000441, 0.000441, 0.000441, 0.000441, 0.000459, -0.000461, 0.00041, 0.00243, 0.001666, 0.001533, 0.000765, 0.000454, 0.000559, 0.000567, 0.000595, -4e-05, -4e-05, 0.000595, 0.000454, 0.001533, -0.000254, -0.000194, 0.001618, 0.001399, 0.001618, -0.000461, 0.001399, -3.5e-05, 0.000552, 0.000552, 0.000369, -1.9e-05, -3.5e-05, -3.5e-05, 0.000552, 0.001533, 0.000117, 0.000765, 0.000559, 0.000562, 0.000567, 0.000765, 0.000794, 0.000794, -0.000186, -0.000186, 0.001666, -0.000194, 0.00243, 0.00243, -0.000461, 0.001036, 6.9e-05, 6.9e-05, 0.001036, 0.000459, 0.000459, -0.000194, 0.001666, 0.000794, 0.000117, 0.000765, 0.000454, 0.000559, 0.000454, 0.001533, 0.000369, 0.001618, 0.000459, 0.000564, 0.001151, 0.001078, 0.001151, 0.001151, 0.001151, 0.000564, 0.000564, 0.000564, 0.001151, 0.000564, 6.9e-05, 0.00243, -1.9e-05, -0.000254, 0.00076, -0.000186, 0.000765, 0.000454, 0.000454, 0.000765, 0.00076, 0.001666, 0.00041, 0.001036, 0.001036, 0.001036, 0.001305, 0.000351, 0.000351, 0.000351, 0.000351, 0.000564, 0.001151, 0.000351, 0.001305, 0.001399, 0.000642, 0.000765, 0.000559, -4e-05, 0.000314, 8.2e-05, 0.000314, -4e-05, 0.000595, 0.000595, 0.000454, -0.000186, 0.000642, 0.001666, 0.001666, -0.000254, 0.000552, 0.00076, 0.001533, 0.001533, 0.000794, 0.000117, 0.000117, 0.000117, 0.000117, 0.000117, 0.000454, 0.000559, 0.000567, 0.000567, 0.000567, 0.000559, -0.000186, -3.5e-05, 6.9e-05, 0.001036, 0.000441, 0.001151, 0.000351, 0.001036, 6.9e-05, 0.00041, -3.5e-05, 0.000369, 0.001666, -3.5e-05, -0.000461, 0.001036, 0.000441, 0.000459, -0.000461, -3.5e-05, 0.000369, -0.000254, -3.5e-05, -0.000194, -1.9e-05, 0.00243, 6.9e-05, 0.000441, 0.001151, 0.000564, 0.000441, 0.000564, 0.001151, 0.001151, 0.001305, 6.9e-05, 0.001618, 0.001036, 0.000459, 0.001305, 0.000459, 0.000459, 0.000459, 0.001305, 0.001305, 0.001305, 0.001305, 0.001305, 0.000441, 0.000564, 0.000564, 0.000564, 0.001151, 0.000564, 0.000564, 0.000564, 0.001151, 0.001151, 0.001232, 0.000459, 0.001305, 0.001305, 0.000441, 0.000459, 0.001036, 6.9e-05, 0.00041, 0.00243, 0.000369, 0.00076, 0.000454, 0.000567, 0.000559, 0.000765, -0.000186, 0.000552, 0.000642, 0.000901, 0.000389, 0.000764, 0.000807, -0.000129, 0.00021, 0.00039, 0.00039, 0.000743, 0.000743, 0.000743, 0.000743, 0.000743, 0.000743, 0.000743, 0.000686, 0.000686, 0.00039, 0.00039, 0.000743, 0.00021, -0.000129, 0.000764, 0.00213, -8e-06, 0.00032, 0.00032, 0.00032, 0.002336, -8.1e-05, 0.000605, 0.000169, -0.000779, 0.001326, 0.000169, 0.001326, 0.001337, 0.002336, -8e-06, 0.00213, 0.001315, 0.000743, 0.00039, 0.000743, 0.00021, -0.000129, 0.000807, 0.000389, -0.000604, -8e-06, -0.000268, -0.000268, 0.00032, -0.000268, 0.00032, -8.1e-05, -8.1e-05, -0.000268, -8e-06, 0.00213, 0.000901, 0.000901, 0.000389, 0.000807, 0.00039, 0.000686, 0.000686, 0.000743, 0.000807, 0.00213, -8.1e-05, 0.001326, 0.001352, 8.8e-05, 8.8e-05, 0.000169, 0.000605, 0.002336, 0.002336, 0.002336, -8e-06, 0.000764, -0.000129, 0.001315, 0.000743, 0.00039, 0.000686, 0.000391, 0.000391, 0.000686, 0.000764, 0.000605, 0.001352, 0.000717, 0.001134, 0.001001, 0.00074, 0.00074, 0.001001, 0.000708, 0.000169, -8.1e-05, 0.00213, -8e-06, 0.00213, 0.000901, 0.000389, 0.000901, -0.000604, -0.000604, -8e-06, 0.002336, 0.002336, 0.000605, 0.001838, 0.001134, 0.00074, 0.000996, 0.000996, 0.000996, 0.000806, 0.000806, 0.000996, 0.000996, 0.00074, -0.000304, 8.8e-05, 0.000169, -0.000779, 0.001337, -0.000779, 8.8e-05, 0.001352, 8.8e-05, 0.001838, 0.001352, 0.000169, 0.001337, 0.000169, 0.000708, 0.001001, 0.00074, 0.00074, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.00074, 0.001001, -0.000304, 0.001838, 8.8e-05, 8.8e-05, 0.000169, 0.002336, 0.000764, 0.001315, 0.00021, 0.00039, 0.000391, 0.000391, 0.000686, 0.00021, -0.000129, 0.000389, -0.000604, 0.000605, 0.001352, 0.001838, 0.001838, 0.000169, -0.000268, 0.001315, 0.00021, 0.001315, 0.001315, -0.000129, -0.000129, 0.001315, 0.001195, 0.000807, 0.000901, -0.000268, -0.000268, -0.000268, 0.002336, -0.000779, 0.001838, 0.000708, 0.001134, 0.001001, 0.00074, 0.00074, 0.001001, 0.001001, 0.001001, 0.00074, 0.001001, 0.001001, 0.001001, 0.001001, 0.00074, 0.00074, 0.000996, 0.00074, 0.001001, 0.001134, 0.000708, 0.001134, 0.001001, 0.001001, 0.001001, 0.00074, 0.00074, 0.00074, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.000996, 0.00074, 0.00074, 0.001134, 8.8e-05, -8.1e-05, 0.000901, 0.000764, 0.000389, 0.00032, -0.000779, 0.000717, 0.000708, 0.000708, 0.001134, 0.000708, 0.001352, 0.00032, 0.000901, 0.000764, 0.000901, 0.000901, 0.000764, -8e-06, -0.000779, 0.000717, 0.000708, 0.000708, -0.000304, 8.8e-05, 0.000169, 0.000717, 0.001134, 0.00074, 0.00074, 0.000996, 0.000996, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000996, 0.001001, 0.00074, 0.000996, 0.001001, 0.000996, 0.000996, 0.001001, 0.000708, 0.001838, 0.001838, -0.000304, -0.000304, 0.001838, 0.000708, 0.001001, 0.00074, 0.000996, 0.000996, 0.000806, 0.000806, 0.000996, 0.000996, 0.00074, 8.8e-05, -0.000779, 8.8e-05, -0.000304, 0.001134, 0.001134, 0.001134, 0.00074, 0.00074, 0.00074, 0.00074, 0.001001, 0.001134, 0.001134, 0.001134, 0.001001, 0.001001, 0.001134, 0.000717, 0.000717, 0.000717, 0.000169, 0.00032, 0.00213, 0.001315, 0.000743, 0.000743, -0.000129, 0.00213, 0.002336, 0.002336, 0.00032, -8e-06, 0.00213, 0.000764, 0.000764, -0.000129, 0.001315, 0.000807, 0.000389, 0.000901, -8e-06, -8.1e-05, 0.001326, 0.001352, 0.001838, 0.001838, 0.000708, 0.001134, 0.000708, -0.000304, 0.000708, 0.001134, 0.001001, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.000717, -8e-06, 0.000901, 0.000389, 0.000764, -0.000604, 0.00032, 0.001326, 0.000717, 0.001134, 0.000708, -0.000304, 0.000717, 0.001337, 0.00032, 0.00032, -0.000268, -8e-06, -8e-06, -8e-06, 0.002336, -8.1e-05, 0.002336, -8e-06, 0.000764, -0.000129, 0.000764, 0.00213, -0.000268, 0.000605, 8.8e-05, 0.000708, 0.001134, 0.001134, 0.001134, 0.000708, 0.001838, 0.001337, 0.002336, 0.000605, 0.000605, 0.001326, -0.000304, 0.001134, 0.00074, 0.001001, 0.00074, 0.00074, 0.000708, 0.001838, 0.001134, 0.001001, 0.00074, 0.00074, 0.000996, 0.000806, 0.000996, 0.00074, 0.000708, -0.000304, 0.001134, 0.000717, -0.000779, 0.002336, -0.000268, 0.00032, 0.002336, 0.00032, 0.00032, 0.00032, 0.00032, 0.000605, 0.002336, 0.00032, 0.001326, 0.000717, 0.001134, 0.001001, 0.00074, 0.00074, 0.000996, 0.00074, 0.001001, 0.001001, 0.001001, 0.001134, 0.001001, 0.001001, 0.001001, 0.001134, 0.001134, 0.001134, 0.001001, 0.00074, 0.00074, 0.00074, 0.001001, 0.001134, 0.001134, 0.001123, 0.001001, 0.001001, 0.001001, 0.001134, 0.001001, 0.001001, 0.001134, 0.001134, 0.001134, -0.000304, 0.001352, 0.000169, 0.001838, 0.001838, 0.001838, 0.000717, 0.000717, 8.8e-05, 0.001352, 0.00032, -0.000129, 0.000743, 0.00021, 0.001315, -0.000129, 0.000389, 0.000901, -8e-06, -0.000779, 8.8e-05, 0.000717, 0.001838, -0.000779, 0.000901, 0.000807, 0.000764, 0.000807, -0.000129, -0.000129, 0.000764, 0.000389, 0.000389, 0.000389, 0.000764, 0.00021, 0.00039, 0.000743, 0.001315, 0.000764, -0.000268, -0.000779, 0.001352, 0.001838, 0.000717, 0.001352, -8.1e-05, -0.000604, -8e-06, -8e-06, -0.000268, 0.00032, 0.00032, -0.000268, -0.000604, 0.000901, 0.000389, 0.000764, 0.000807, -0.000129, 0.001195, 0.000807, -0.000268, 0.001326, 0.000717, 0.001001, 0.00074, 0.001134, 0.001134, 0.001001, 0.000717, 0.000169, -0.000779, 0.000605, -8e-06, 0.000764, -0.000129, 0.000764, 0.000389, 0.000389, -0.000604, -0.000268, -8.1e-05, -0.000268, 0.00213, -0.000268, 0.00213, -0.000268, -0.000779, -0.000304, 0.001134, 0.000708, 0.000708, 0.001134, 0.001134, 0.001134, 0.000708, 0.000708, 0.000717, 0.000708, 0.001001, 0.00074, 0.00074, 0.00074, 0.001001, 0.001134, 0.001352, -8e-06, 0.000807, 0.000901, -0.000779, 0.001838, 0.001134, 0.00074, 0.00074, 0.000996, 0.000996, 0.000996, 0.00074, 0.001134, 0.000708, -0.000304, -0.000304, -0.000218, 0.000708, 0.001134, 0.001001, 0.001001, 0.001001, 0.001001, 0.00074, 0.00074, 0.001001, 0.000996, 0.000996, 0.00074, 0.000996, 0.000996, 0.000806, 0.000806, 0.000806, 0.000806, 0.000996, 0.000996, 0.00074, 0.001001, 0.001001, 0.00074, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.00074, 0.00074, 0.00074, 0.000996, 0.000996, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000996, 0.000996, 0.000996, 0.000806, 0.000771, 0.000771, 0.000771, 0.000771, 0.000771, 0.000771, 0.000806, 0.000996, 0.001001, 0.001001, 0.000996, 0.000996, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000996, 0.000996, 0.000996, 0.000806, 0.000806, 0.000771, 0.000771, 0.000806, 0.000771, 0.000771, 0.000771, 0.000806, 0.00074, 0.000708, 0.000717, 0.001838, 0.000717, 0.001134, 0.001134, -0.000304, -0.000304, 0.000708, -0.000304, 0.000169, 0.002336, -0.000604, 0.000901, 0.000901, 0.00213, -8e-06, -8e-06, -0.000268, -8e-06, -8e-06, 0.000901, 0.000389, 0.00213, 0.000169, 0.001134, 0.00074, 0.000996, 0.000996, 0.000996, 0.001001, 0.00074, 0.00074, 0.00074, 0.00074, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000806, 0.000996, 0.000996, 0.001838, 0.000169, 0.000717, 0.001134, 0.001134, -0.000304, -0.000304, -0.000304, 0.000717, 0.001838, 8.8e-05, -0.000779, -8.1e-05, 0.00213, -0.000604, 0.000901, 0.000764, 0.000389, 0.000901, 0.000901, -0.000604, 0.00213, -0.000268, 0.00032, -0.000268, -0.000604, 0.00213, 0.00213, 0.000605, 0.001352, 0.000717, -0.000304, 0.000708, 0.000708, -0.000304, 0.000717, 0.001352, 0.00032, 0.000901, 0.000901, 0.000901, -0.000604, 0.00213, 0.000901, -0.000129, 0.001315, 0.001315, 0.00021, 0.000743, 0.00039, 0.000743, 0.00021, 0.001315, -0.000129, -0.000129, 0.000901, -0.000268, 0.002336, 0.002336, -8.1e-05, 0.002336, 0.000901, -0.000129, 0.001315, -0.000129, 0.000764, -0.000604, 0.00213, 0.00213, 0.000764, 0.001315, 0.000743, 0.000686, 0.000686, 0.000743, 0.00021, 0.001315, 0.000807, 0.000764, 0.000901, 0.000901, -0.000604, 0.00213, -0.000604, -0.000604, 0.000901, 0.000764, -0.000604, -8e-06, -8e-06, -8e-06, -0.000604, 0.000901, 0.000389, 0.000389, -0.000129, 0.000743, 0.000686, 0.000686, 0.00039, 0.00021, 0.000764, -8e-06, 0.002336, 0.001337, 0.000169, -0.000779, 0.000605, -8e-06, -0.000129, 0.00021, -0.000129, 0.000389, 0.00032, 0.000605, 0.000605, -8.1e-05, 0.00032, 0.00213, 0.000764, -0.000129, 0.000764, -0.000268, -0.000779, 8.8e-05, 0.000747, 0.000996, 0.000806, 0.000806, 0.000806, 0.000996, 0.00074, 0.001001, 0.001838, 8.8e-05, 0.000717, 0.001134, -0.000304, 0.000708, 0.000717, 0.001838, 0.000717, 0.000717, 0.000169, -8e-06, -0.000268, 0.001337, 0.001352, 0.001838, 0.001838, 0.000717, 0.000717, 8.8e-05, 0.000169, 0.001337, 0.000605, 0.002336, -8e-06, 0.00213, 0.00032, -8.1e-05, 0.001352, 0.000717, 0.000708, -0.000304, 0.000708, 0.000708, -0.000304, 0.000169, 0.002336, 0.001337, 0.000717, 0.001001, 0.00074, 0.00076, 0.00074, 0.000996, 0.000996, 0.000996, 0.000996, 0.00074, 0.001001, 0.001001, 0.001134, -0.000304, 0.000717, 0.001352, -0.000779, -0.000779, 0.000169, 8.8e-05, 0.001352, -8.1e-05, 0.002336, 0.001352, 0.000717, 0.000708, 0.000708, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.001001, -0.000304, 0.000717, 0.000717, 0.000717, 0.000717, 0.001838, 0.000169, 0.000605, 0.00032, 0.000764, 0.00039, 0.000686, 0.00039, 0.001315, -8e-06, -0.000268, -8.1e-05, 0.000605, 0.000605, -0.000779, 0.000169, 0.000169, 0.002336, 0.000389, 0.001315, 0.000807, 0.000901, -0.000604, 0.00213, 0.00032, 0.000605, 0.001352, 0.000717, 0.000708, 0.000708, 0.000717, 0.000708, 0.00074, 0.000996, 0.000996, 0.000806, 0.000806, 0.000996, 0.00074, 0.000996, 0.000996, 0.000806, 0.000806, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.001352, 0.001326, 0.001838, 0.001838, 8.8e-05, -0.000304, 0.001001, 0.000996, 0.000806, 0.000806, 0.000806, 0.000996, 0.000708, 0.001352, 8.8e-05, 0.001352, 0.001838, -0.000304, 0.001134, 0.00074, 0.00074, 0.00074, 0.000708, 0.000169, 0.002336, -8.1e-05, 8.8e-05, 0.00074, 0.000996, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000996, 0.000996, 0.00074, 0.000996, 0.000996, 0.000806, 0.000806, 0.000996, 0.000996, 0.00074, 8.8e-05, 0.000764, 0.000743, 0.000743, 0.001315, 0.000807, -0.000268, 0.001352, 0.001838, 0.000717, 0.000708, 0.001001, 0.000996, 0.00074, 0.001001, 0.001134, 0.001134, 0.001134, 0.001134, 0.001001, 0.00074, 0.00074, 0.000996, 0.000996, 0.001001, -0.000779, -8.1e-05, 0.001337, 8.8e-05, -0.000304, 0.00074, 0.00074, 0.00074, 0.000996, 0.00074, 0.000708, 0.001337, 0.002336, -8.1e-05, 0.001352, 0.001134, 0.001001, 0.000708, 0.000708, 0.000708, 0.001134, 0.001001, 0.001134, -0.000304, 8.8e-05, -0.000779, 8.8e-05, -0.000304, 0.001001, 0.00074, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.00074, 0.001134, 0.001744, 0.001352, 8.8e-05, 0.000717, 0.000717, 0.000169, 0.001326, 0.001326, 0.001337, -8e-06, -0.000129, 0.000743, 0.001315, 0.000389, 0.000605, 0.000708, 0.00074, 0.000996, 0.000806, 0.000806, 0.000806, 0.000806, 0.000806, 0.000996, 0.000717, 8.8e-05, 0.001838, 0.000708, 0.001001, 0.001134, 0.000708, 0.000717, 0.001352, 0.001838, 0.001352, -8.1e-05, 0.001337, 0.001838, 0.001001, 0.001001, 0.00074, 0.000996, 0.000996, 0.000996, 0.000806, 0.000996, 0.00074, 0.001134, -0.000304, 8.8e-05, 0.000717, 0.001134, 0.00074, 0.00074, 0.001001, 0.001001, 0.001001, 0.000169, 0.000807, 0.000686, 0.000686, 0.000686, 0.00039, 0.00021, 0.000807, 0.00213, 0.002336, 0.001326, 0.001838, 0.000717, 0.000169, -0.000779, -0.000268, 0.00032, 0.001337, 0.001326, 0.001838, 0.001134, 0.00074, 0.001001, 0.001001, 0.001001, 0.001134, 8.8e-05, 0.000169, 0.001352, 8.8e-05, 0.001838, 0.001838, -0.000304, 0.000708, -0.000304, 0.001838, 8.8e-05, -0.000779, 0.000605, -8e-06, 0.000901, -0.000604, 0.000901, 0.000901, -8e-06, 0.002336, 0.002336, 0.000605, -8.1e-05, 0.00032, 0.002336, 0.001326, 0.000169, 0.001326, 0.001337, 0.002336, -8.1e-05, 0.001337, 0.000605, 0.000169, 8.8e-05, 0.001838, 0.001838, 0.000717, -0.000304, 0.000708, 0.000708, 0.000708, -0.000304, 8.8e-05, 0.000169, -0.000268, 0.000764, 0.000807, 0.000764, 0.000901, -0.000268, 0.00032, -8e-06, -8e-06, 0.00032, -0.000779, -0.000304, 0.001134, 0.001001, 0.00074, 0.00074, 0.001001, 0.001001, -0.000304, 0.000169, -0.000779, -8.1e-05, -8.1e-05, -0.000779, 0.001326, -0.000779, 0.00032, -8e-06, -0.000268, 0.000605, 0.000605, 0.001337, -0.000779, 0.000169, 0.000717, 0.000996, 0.000996, 0.00074, 0.000708, 0.001838, 0.000605, 0.002336, 0.001337, -0.000779, -0.000779, 8.8e-05, 8.8e-05, 0.001326, 0.000605, -0.000268, 0.000389, 0.00213, 0.00032, 0.000605, 0.001838, 0.001134, 0.001001, 0.00074, 0.00074, 0.001001, -0.000304, 0.000717, 0.001838, 0.001326, -8.1e-05, 0.000605, 0.001352, -0.000779, -8.1e-05, 0.000605, 0.002336, -8e-06, -0.000604, -8e-06, 0.00213, 0.000901, -0.000268, 0.00032, -0.000268, -8.1e-05, 0.000169, 8.8e-05, 0.000708, 0.00074, 0.001001, 0.000996, 0.000996, 0.000996, 0.00074, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.00074, -0.000304, 0.000717, 0.001352, 0.000605, 0.000605, 0.000169, 0.000169, 0.001326, 8.8e-05, 0.000717, 0.000717, -0.000304, 0.001838, -0.000779, 0.001337, 0.001352, 8.8e-05, 0.001326, 0.000605, 0.001337, -0.000779, 0.000169, 0.000169, 0.001337, 0.001352, 0.000717, 0.000708, 0.000708, 0.000708, 0.001134, 0.001001, 0.001134, -0.000304, 0.001838, 8.8e-05, 0.001838, 8.8e-05, 0.001326, 0.001326, 0.000717, 0.000717, 0.001838, 0.000717, 0.001838, 8.8e-05, 8.8e-05, -8.1e-05, 0.000901, 0.000764, -8e-06, -8.1e-05, 0.001337, 8.8e-05, 0.001838, 0.001134, 0.00074, 0.00074, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.00074, 0.00074, 0.00074, 0.000996, 0.000996, 0.00074, 0.000708, 0.001352, 0.00032, 0.001315, 0.00039, 0.000743, 0.00021, -0.000129, -0.000129, 0.000389, -8e-06, 0.001326, 0.001838, 0.000708, 0.001134, 0.001134, -0.000304, 8.8e-05, -0.000779, 0.000169, 0.001352, 0.001838, 0.000717, 0.001838, 0.001838, 8.8e-05, -8e-06, 0.00021, 0.00039, 0.001315, -8e-06, -0.000779, -0.000304, 0.001001, 0.00074, 0.00074, 0.00074, 0.00074, 0.00074, 0.000708, 0.000169, -0.000604, 0.000389, 0.001337, 0.000169, 0.000169, 0.001326, 0.001326, 0.001158, 0.002336, 0.000389, 0.000743, 0.000686, 0.000686, 0.000743, 0.001315, 0.000807, -0.000604, -8e-06, 0.00213, 0.00032, -0.000779, 0.001352, 0.001838, 0.000717, 0.000717, 0.001326, 0.000605, 0.002336, -8e-06, -8e-06, -8e-06, 0.002336, 0.00032, 0.000605, 0.000605, 0.00032, 0.001337, 0.000717, -0.000304, 0.001134, 0.001001, 0.000708, 0.000717, 8.8e-05, 0.001337, -0.000268, -0.000268, -8e-06, 0.00213, -0.000268, -8.1e-05, 0.002336, 0.000605, -0.000779, 8.8e-05, -0.000779, -8.1e-05, -0.000604, 0.000807, -0.000129, 0.000764, 0.000389, 0.000901, -0.000268, 0.001337, 0.001352, 0.001352, -0.000779, 0.001337, -0.000779, -0.000779, 0.00032, 0.000764, -0.000129, 0.000901, 0.00213, 0.00213, 0.00032, -8.1e-05, 0.001326, 0.001326, 0.00032, 0.000807, 0.000807, 0.000901, -0.000268, 0.001337, 0.001326, 8.8e-05, -0.000304, 0.000708, 0.001001, 0.00074, 0.00074, 0.001001, 0.001134, -0.000304, 0.000169, 0.000605, 0.000605, 0.00032, 0.000389, 0.000764, 0.000389, 0.000901, 0.000764, 0.00021, 0.001315, 0.000807, 0.000901, -8e-06, 0.001337, -0.000304, 0.001134, 0.001001, 0.00074, 0.00074, 0.00074, 0.001001, 0.000708, 0.000717, 0.001838, 0.000717, 8.8e-05, 8.8e-05, -0.000304, -0.000304, 0.000708, -0.000304, -0.000304, -0.000304, 0.000717, 0.000717, -0.000304, 0.000708, 0.001134, 0.000708, 0.001001, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.000996, 0.00074, 0.001134, 0.001001, 0.00074, 0.000996, 0.000996, 0.000996, 0.00074, -0.000304, 8.8e-05, 0.001352, 0.001838, 0.000717, -0.000304, 0.000717, 0.001838, 0.001838, 0.001352, -0.000268, 0.000807, 0.000686, 0.000686, 0.000686, 0.000743, 0.000764, 0.00213, -8.1e-05, 0.001326, 0.001352, 0.001838, 0.001352, -8.1e-05, 0.000764, -0.000604, 0.00213, -0.000604, -8e-06, -8e-06, -0.000268, 0.00032, 0.000605, 0.001337, 0.001326, -0.000268, 0.000901, 0.000764, 0.001315, 0.000686, 0.000686, 0.00039, 0.00021, 0.001315, 0.000764, 0.000389, 0.000764, 0.001315, 0.00021, 0.001315, 0.000901, 0.000901, -8e-06, 0.00032, 0.002336, 0.002336, -0.000604, 0.000901, 0.000389, -0.000129, 0.000807, -0.000129, -0.000129, 0.002336, 0.001337, 0.002336, 0.000605, 0.001326, 0.001352, 0.001352, 0.002336, 0.000389, 0.00021, 0.000807, -0.000268, 0.001352, 0.001838, -0.000304, 0.000708, -0.000304, -0.000304, 0.001838, 0.000717, 0.001838, 0.001326, 0.000389, 0.00039, 0.00039, 0.000686, 0.00039, 0.00021, 0.001315, 0.000764, -0.000604, -0.000604, -0.000604, 0.00213, 0.00032, -8.1e-05, 0.001337, 0.001352, 0.001838, 0.000717, 0.000717, 0.001352, 0.000605, -0.000268, -8e-06, 0.00032, 0.00032, -0.000268, -8e-06, -8e-06, 0.00032, -8.1e-05, 0.001337, -0.000779, -0.000779, 0.001326, -0.000779, 0.00032, -0.000268, -8.1e-05, 0.001337, -0.000779, 0.001326, 0.001352, 0.001352, 0.001352, -0.000779, -8.1e-05, -8.1e-05, 0.000605, 0.000431, -0.000129, 0.000389, 0.000901, 0.000389, -8e-06, 0.002336, -0.000779, 0.001326, -8.1e-05, -0.000268, 0.00213, -0.000604, 0.000389, -0.000604, 0.000901, -8e-06, 0.00032, -8e-06, 0.00032, -8e-06, 0.00213, -8e-06, -0.000604, 0.000764, 0.000389, 0.000901, 0.000901, -0.000268, 0.000605, 0.001337, 0.000605, -0.000268, -0.000604, 0.000699, 0.000391, 0.000391, 0.000391, 0.000391, 0.000686, 0.00021, -0.000129, 0.000389, -8e-06, -8.1e-05, 0.000605, 0.002336, -0.000268, -0.000604, 0.000389, -8e-06, -8e-06, -8e-06, -8e-06, 0.000901, 0.000389, 0.000389, 0.001315, 0.00039, 0.000391, 0.000743, 0.00021, 0.000743, 0.00021, 0.000764, 0.000389, 0.000901, -0.000604, 0.000901, 0.000389, 0.00213, -0.000604, -0.000129, 0.00039, 0.000686, 0.00039, 0.001315, 0.000901, -8e-06, 0.000605, -0.000779, 0.001326, 0.002336, -0.000604, 0.00213, -8e-06, 0.00032, 0.001337, 0.001838, -0.000304, 0.000708, 0.000708, 0.001134, 0.001001, 0.001134, 0.001134, 0.000708, 8.8e-05, 0.001352, -0.000779, -0.000779, 0.000605, 0.00032, -0.000779, 8.8e-05, 0.001838, 8.8e-05, 0.000605, -0.000268, 0.000901, -8e-06, -0.000604, -0.000268, 0.001337, -0.000779, 0.001352, -0.000779, 0.001326, 0.002336, 0.000389, -0.000129, 0.000807, -8e-06, 0.000605, 0.001326, 8.8e-05, 0.000717, -0.000304, 0.001134, 0.000708, 0.001326, 0.00032, 0.00032, -0.000268, -0.000268, 0.00213, 0.002336, -0.000779, 0.001352, 0.001838, -0.000304, -0.000218, 0.001352, 0.001326, 0.000605, 0.002336, -0.000268, 0.002336, 0.000605, 0.001326, 0.000169, 0.001352, 0.001352, 0.002336, 0.000807, -0.000129, 0.000764, 0.00213, -0.000268, -0.000604, 0.00213, -8.1e-05, 0.001326, 0.000169, 0.001352, 0.001337, -8e-06, 0.000389, 0.000764, 0.001315, 0.001315, 0.001315, 0.001315, -0.000129, 0.00021, 0.001315, 0.001315, 0.00021, 0.000743, 0.00021, 0.000389, -8e-06, 0.002336, 0.002336, 0.00032, 0.002336, -0.000268, 0.00213, -0.000604, -0.000604, -0.000268, -8e-06, 0.000901, 0.000389, 0.00213, -8e-06, 0.00213, -0.000268, 0.001337, 0.001352, 0.001352, -8.1e-05, 0.000807, 0.001315, 0.00021, 0.001315, 0.001315, 0.000807, 0.000389, 0.000901, 0.000901, 0.000389, 0.000389, 0.000389, 0.000807, 0.00039, 0.000391, 0.000391, 0.000686, 0.000743, 0.000686, 0.00039, 0.000743, 0.00021, -0.000129, 0.000807, 0.001315, 0.000764, -0.000268, -8.1e-05, 0.001337, 0.000169, 8.8e-05, 0.000717, 8.8e-05, 0.001838, 0.000717, 0.000708, -0.000304, 0.000169, 0.002336, -8e-06, 0.000389, 0.000389, 0.000389, -0.000604, 0.000901, -0.000604, -8e-06, -0.000604, 0.000764, 0.000686, 0.000686, 0.000686, 0.00039, 0.001315, 0.000389, -8e-06, 0.001337, 0.001337, -8e-06, -0.000268, -8.1e-05, -8.1e-05, 0.002336, 0.00032, -0.000268, -8e-06, 0.000901, 0.00213, -8e-06, -0.000604, -0.000604, -0.000604, 0.000389, 0.000764, -0.000604, 0.00032, 0.002336, 0.000605, 0.000605, 0.000669, 0.001337, -0.000779, 0.000605, 0.001337, 0.002336, 0.001315, 0.00021, 0.000686, 0.000743, -5e-05, 0.000389, 0.000901, 0.00213, -0.000268, 0.002336, -0.000268, -0.000604, -0.000268, -8.1e-05, 0.001326, 0.001352, 0.001352, 0.001352, 8.8e-05, -0.000304, 0.000708, 0.001134, 0.001134, 0.001134, 0.001134, 0.001134, 0.000708, -0.000304, -0.000304, 0.001838, 0.001337, 0.00213, 0.000807, 0.000901, 0.000389, -8e-06, 0.00032, -0.000604, 0.00213, -8e-06, -8e-06, -0.000779, 0.001838, -0.000304, 0.001134, 0.001134, 0.001134, 0.000708, 0.000717, 0.000717, 0.000717, 8.8e-05, 8.8e-05, 0.001838, 0.000708, 0.000708, 0.000708, 0.000169, -8.1e-05, 0.000605, -0.000779, 0.001352, -0.000304, -0.000304, -0.000218, 0.000708, 0.001134, 0.001134, 0.001134, 0.001001, 0.001001, 0.001001, 0.001001, 0.001134, 0.000708, 0.000708, 0.001134, 0.001134, 0.001001, 0.001001, 0.001001, 0.001001, 0.00074, 0.001001, 0.001134, 0.000708, -0.000304, 0.001838, 0.001326, 0.000717, -0.000304, 0.000708, -0.000304, 0.000717, 0.000169, 0.000605, -0.000268, 0.000389, 0.001315, 0.000807, -8e-06, 0.001326, 0.001838, 0.000717, 0.000717, 0.000708, -0.000304, 0.001838, 0.000605, 0.000605, 0.000605, 0.00032, 0.000605, 0.001326, 0.001838, -0.000304, 0.000717, -0.000304, -0.000304, 0.000708, -0.000304, 8.8e-05, 0.001352, 0.000169, 0.001352, 0.001352, -8.1e-05, 0.00032, 0.002336, -0.000217, 0.000389, 0.00021, 0.001315, 0.000764, 0.00213, 0.002336, -0.000779, 0.001352, 0.001352, 0.000169, 0.001326, 0.001326, -0.000779, 0.000605, -8e-06, 0.000807, 0.000391, 0.000686, 0.00039, 0.00039, 0.00021, 0.00039, 0.000686, 0.000686, 0.000391, 7e-05, 0.000362, 0.000362, 7e-05, 0.000391, 0.00021, 0.000389, -8e-06, -8.1e-05, 0.000605, -0.000779, 0.001326, 0.000169, 0.000169, -0.000779, 0.000605, -0.000779, -8.1e-05, 0.00032, -0.000217, -8e-06, 0.002336, 8.8e-05, 0.000169, 0.00213, -0.000129, 0.000807, -0.000604, 0.000389, -0.000604, 0.002336, -8.1e-05, -0.000779, 0.001352, 8.8e-05, 0.001352, 0.001352, 0.001838, 0.000717, 0.001838, 0.001352, 0.001337, 0.00032, -0.000604, 0.000764, 0.000389, 0.00213, -0.000268, 0.000389, 0.00021, 0.00021, 0.001315, 0.000807, 0.000764, 0.000389, 0.000389], "emissions_factor_series_lb_PM25_per_kwh": [1e-06, 4.9e-05, 6.7e-05, 6.7e-05, 6.7e-05, 4.9e-05, 9.3e-05, 9.3e-05, 1e-06, 8e-06, 0.000102, 3.1e-05, 5.7e-05, 5.7e-05, 6.8e-05, 3.5e-05, 4.1e-05, 4.4e-05, 4.4e-05, 5.5e-05, 5.5e-05, 5.5e-05, 4.8e-05, 3.5e-05, 6.5e-05, 5.7e-05, 0.000102, 3e-05, 6.3e-05, 2.4e-05, 4.4e-05, 3.5e-05, 6.1e-05, 6.1e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 6.1e-05, 4.1e-05, 4.1e-05, 3.5e-05, 4.8e-05, 6.3e-05, 8e-06, 6.4e-05, 3.7e-05, 3.7e-05, 3.7e-05, 6.7e-05, 6.7e-05, 3.7e-05, 0.000105, 6.3e-05, 5.9e-05, 5.9e-05, 4.8e-05, 4.8e-05, 5.9e-05, 5.9e-05, 5.9e-05, 5.9e-05, 5.9e-05, 4.8e-05, 4.1e-05, 3.5e-05, 5.9e-05, 8e-06, 6.4e-05, 3.7e-05, 6.7e-05, 7.1e-05, 7.1e-05, 5.3e-05, 5e-05, 5.3e-05, 5e-05, 9.3e-05, 5.7e-05, 6.8e-05, 2.4e-05, 4.8e-05, 2.4e-05, 3e-05, 0.000105, 5.9e-05, 6.4e-05, 6.3e-05, 5.9e-05, 3e-05, 1e-06, 3.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 7.1e-05, 3.7e-05, 3.7e-05, 6.7e-05, 4.9e-05, 9.3e-05, 9.3e-05, 6.4e-05, 9.3e-05, 6.7e-05, 4.9e-05, 4.9e-05, 6.7e-05, 5e-05, 5e-05, 5.3e-05, 5.3e-05, 7.1e-05, 3.7e-05, 3.7e-05, 5e-05, 5.3e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.3e-05, 5.3e-05, 3.7e-05, 6.7e-05, 6.7e-05, 7.1e-05, 7.1e-05, 7.1e-05, 3.7e-05, 5e-05, 5e-05, 7.1e-05, 3e-05, 4.8e-05, 6.1e-05, 6.1e-05, 3.5e-05, 3.5e-05, 4.1e-05, 4.1e-05, 6.1e-05, 3.5e-05, 3.5e-05, 3.5e-05, 4.1e-05, 4.8e-05, 3.6e-05, 5.5e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.5e-05, 5.5e-05, 4.1e-05, 4.1e-05, 3.6e-05, 4.1e-05, 4.1e-05, 4.8e-05, 4.8e-05, 6.3e-05, 3.5e-05, 4.8e-05, 4.4e-05, 4.4e-05, 6.1e-05, 2.4e-05, 6.3e-05, 3e-05, 6.3e-05, 2.4e-05, 4.4e-05, 3.5e-05, 6.1e-05, 2.4e-05, 6.8e-05, 5.7e-05, 6.8e-05, 5.9e-05, 3.5e-05, 4.8e-05, 5.5e-05, 5.5e-05, 5.5e-05, 3.6e-05, 3.6e-05, 4.1e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.6e-05, 3.6e-05, 3.6e-05, 5.5e-05, 5.5e-05, 5.5e-05, 5.5e-05, 5.5e-05, 5.5e-05, 5.5e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.5e-05, 3.6e-05, 3.6e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.6e-05, 3.6e-05, 5.5e-05, 3.6e-05, 3.6e-05, 4.1e-05, 6.3e-05, 4.1e-05, 4.1e-05, 6.3e-05, 4.8e-05, 4.1e-05, 4.8e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.4e-05, 2.4e-05, 2.4e-05, 5.9e-05, 6.8e-05, 6.3e-05, 6.8e-05, 6.1e-05, 4.1e-05, 6.3e-05, 4.1e-05, 3.5e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 5.5e-05, 4.1e-05, 4.8e-05, 6.3e-05, 4.1e-05, 4.8e-05, 4.8e-05, 5.9e-05, 5.9e-05, 5.9e-05, 6.5e-05, 2.4e-05, 4.8e-05, 4.1e-05, 6.3e-05, 4.1e-05, 3.5e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.5e-05, 3.5e-05, 6.1e-05, 6.1e-05, 6.1e-05, 6.5e-05, 5.7e-05, 8e-06, 6.4e-05, 3.7e-05, 7.1e-05, 3.7e-05, 3.7e-05, 5e-05, 5.3e-05, 5.3e-05, 3.7e-05, 4.9e-05, 3.7e-05, 6.7e-05, 4.9e-05, 4.9e-05, 4.9e-05, 1e-06, 0.000102, 0.000102, 6.4e-05, 9.3e-05, 1e-06, 0.000105, 1e-06, 3.7e-05, 9.3e-05, 4.9e-05, 6.7e-05, 6.7e-05, 6.7e-05, 4.9e-05, 4.9e-05, 3.7e-05, 3.7e-05, 1e-06, 6.4e-05, 1e-06, 9.3e-05, 3.7e-05, 3.7e-05, 3.7e-05, 3.7e-05, 6.7e-05, 6.7e-05, 4.9e-05, 1e-06, 3e-05, 3.1e-05, 0.000102, 0.000105, 6.4e-05, 6.4e-05, 6.4e-05, 6.4e-05, 0.000101, 8e-06, 3e-05, 5.7e-05, 3e-05, 6.8e-05, 5.7e-05, 5.7e-05, 6.5e-05, 5.7e-05, 0.000105, 3.7e-05, 4.9e-05, 6.7e-05, 4.9e-05, 0.000105, 6.8e-05, 6.1e-05, 3.5e-05, 5.9e-05, 3.1e-05, 6.4e-05, 9.3e-05, 9.3e-05, 4.9e-05, 4.9e-05, 6.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 7.1e-05, 3.7e-05, 5e-05, 5.3e-05, 5.3e-05, 4.4e-05, 4.4e-05, 5e-05, 3.7e-05, 6.4e-05, 6.4e-05, 9.3e-05, 4.9e-05, 6.7e-05, 7.1e-05, 7.1e-05, 3.7e-05, 5e-05, 3.7e-05, 6.7e-05, 7.1e-05, 6.7e-05, 6.4e-05, 3e-05, 6.8e-05, 6.3e-05, 5.7e-05, 3e-05, 3.1e-05, 6.3e-05, 5.9e-05, 5.9e-05, 4.4e-05, 4.8e-05, 2.4e-05, 2.4e-05, 6.5e-05, 3.1e-05, 6.4e-05, 4.9e-05, 6.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 4.9e-05, 1e-06, 8e-06, 6.4e-05, 9.3e-05, 4.9e-05, 4.9e-05, 6.7e-05, 4.9e-05, 3.7e-05, 8e-06, 5.9e-05, 4.1e-05, 4.1e-05, 4.4e-05, 5.9e-05, 6.5e-05, 6.3e-05, 3.1e-05, 0.000105, 3.7e-05, 3.7e-05, 6.4e-05, 1e-06, 0.000105, 3.1e-05, 6.8e-05, 5.9e-05, 5.9e-05, 5.9e-05, 3.5e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4.1e-05, 2.4e-05, 6.8e-05, 0.000102, 1e-06, 1e-06, 9.3e-05, 9.3e-05, 9.3e-05, 1e-06, 0.000105, 3.1e-05, 0.000105, 1e-06, 9.3e-05, 3.7e-05, 3.7e-05, 9.3e-05, 6.4e-05, 1e-06, 3.7e-05, 1e-06, 8e-06, 3e-05, 6.5e-05, 6.3e-05, 2.4e-05, 4.8e-05, 2.4e-05, 6.3e-05, 3.1e-05, 3.1e-05, 6.3e-05, 6.8e-05, 6.5e-05, 4.4e-05, 4.1e-05, 4.1e-05, 4.4e-05, 3e-05, 3e-05, 3e-05, 5.7e-05, 6.5e-05, 4.4e-05, 4.1e-05, 4.8e-05, 6.3e-05, 4.4e-05, 6.5e-05, 8e-06, 9.3e-05, 3.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 4.9e-05, 1e-06, 8e-06, 3.1e-05, 0.000105, 6.4e-05, 8e-06, 8e-06, 0.000105, 8e-06, 8e-06, 0.000105, 3.1e-05, 0.000102, 6.4e-05, 9.3e-05, 3.7e-05, 4.9e-05, 3.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 4.9e-05, 9.3e-05, 3e-05, 6.5e-05, 4.8e-05, 3.5e-05, 4.1e-05, 3.5e-05, 6.1e-05, 4.4e-05, 4.8e-05, 5.7e-05, 5.7e-05, 3.1e-05, 8e-06, 0.000102, 0.000105, 6.4e-05, 0.000105, 0.000102, 0.000102, 3.1e-05, 6.5e-05, 6.1e-05, 3.5e-05, 3.5e-05, 6.3e-05, 6.3e-05, 6.3e-05, 4.1e-05, 4.4e-05, 2.4e-05, 3e-05, 0.000102, 8e-06, 0.000102, 5.9e-05, 4.1e-05, 6.3e-05, 4.1e-05, 4.1e-05, 6.3e-05, 4.1e-05, 3.5e-05, 6.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.5e-05, 4.1e-05, 6.3e-05, 4.1e-05, 4.1e-05, 4.8e-05, 3.5e-05, 6.5e-05, 6.3e-05, 3e-05, 6.3e-05, 5.9e-05, 3.5e-05, 4.8e-05, 4.1e-05, 4.8e-05, 4.8e-05, 6.3e-05, 4.1e-05, 4.1e-05, 6.3e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4.1e-05, 5.5e-05, 4.4e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.4e-05, 4.4e-05, 3.6e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.6e-05, 5.5e-05, 4.4e-05, 4.4e-05, 5.5e-05, 4.1e-05, 6.3e-05, 6.1e-05, 4.4e-05, 2.4e-05, 6.8e-05, 5.7e-05, 6.3e-05, 4.4e-05, 5.9e-05, 6.5e-05, 6.5e-05, 6.3e-05, 6.3e-05, 5.7e-05, 5.7e-05, 6.8e-05, 6.3e-05, 6.3e-05, 6.8e-05, 4.5e-05, 6.3e-05, 4.1e-05, 4.1e-05, 4.1e-05, 6.3e-05, 6.3e-05, 4.1e-05, 4.1e-05, 4.1e-05, 6.1e-05, 6.1e-05, 4.1e-05, 3.5e-05, 4.8e-05, 4.8e-05, 5.9e-05, 6.3e-05, 3e-05, 0.000102, 0.000105, 0.000105, 0.000105, 0.000102, 6.3e-05, 4.8e-05, 4.8e-05, 5.9e-05, 6.5e-05, 5.9e-05, 4.8e-05, 4.8e-05, 2.4e-05, 5.7e-05, 8e-06, 8e-06, 8e-06, 3.1e-05, 3.1e-05, 3.1e-05, 3e-05, 0.000102, 0.000105, 3.7e-05, 6.7e-05, 6.7e-05, 7.1e-05, 6.7e-05, 6.7e-05, 3.7e-05, 7.1e-05, 3.7e-05, 3.7e-05, 3.7e-05, 3.7e-05, 3.7e-05, 5e-05, 5e-05, 5e-05, 3.7e-05, 7.1e-05, 7.1e-05, 6.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 7.1e-05, 3.7e-05, 7.1e-05, 3.7e-05, 7.1e-05, 3.7e-05, 7.1e-05, 7.1e-05, 6.7e-05, 6.7e-05, 6.7e-05, 7.1e-05, 6.7e-05, 9.3e-05, 0.000105, 5.7e-05, 5.9e-05, 6.3e-05, 4.1e-05, 4.8e-05, 6.3e-05, 4.1e-05, 4.8e-05, 6.8e-05, 0.000102, 1e-06, 9.3e-05, 1e-06, 3e-05, 2.4e-05, 3.5e-05, 6.3e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.6e-05, 3.6e-05, 3.6e-05, 3.6e-05, 4.1e-05, 3.6e-05, 5.5e-05, 3.6e-05, 3.6e-05, 3.6e-05, 4.8e-05, 6.3e-05, 4.1e-05, 6.1e-05, 6.1e-05, 5.9e-05, 6.3e-05, 6.8e-05, 4.8e-05, 6.1e-05, 3.5e-05, 4.1e-05, 4.1e-05, 4.1e-05, 6.1e-05, 4.8e-05, 5.9e-05, 5.9e-05, 4.4e-05, 4.1e-05, 6.3e-05, 4.1e-05, 4.1e-05, 4.8e-05, 6.3e-05, 0.000105, 1e-06, 9.3e-05, 9.3e-05, 4.9e-05, 4.9e-05, 6.4e-05, 5.7e-05, 4.8e-05, 3.5e-05, 4.4e-05, 4.4e-05, 4.4e-05, 6.3e-05, 0.000105, 0.000105, 1e-06, 1e-06, 6.4e-05, 6.4e-05, 1e-06, 1e-06, 4.9e-05, 6.7e-05, 3.7e-05, 3.7e-05, 3.7e-05, 3.7e-05, 3.7e-05, 3.7e-05, 3.7e-05, 6.7e-05, 1e-06, 3.1e-05, 3.1e-05, 6.4e-05, 4.9e-05, 6.7e-05, 6.7e-05, 7.1e-05, 7.1e-05, 6.7e-05, 9.3e-05, 5.9e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.5e-05, 4.8e-05, 6.3e-05, 0.000102, 0.000105, 0.000105, 0.000105, 3e-05, 2.4e-05, 3.5e-05, 4.8e-05, 6.3e-05, 4.1e-05, 6.1e-05, 4.8e-05, 6.1e-05, 6.1e-05, 3.5e-05, 4.4e-05, 6.1e-05, 4.1e-05, 4.1e-05, 6.1e-05, 4.8e-05, 2.4e-05, 6.8e-05, 6.5e-05, 3e-05, 3e-05, 5.7e-05, 3.1e-05, 0.000102, 0.000102, 0.000102, 3e-05, 6.8e-05, 6.8e-05, 5.9e-05, 4.8e-05, 4.4e-05, 2.4e-05, 3.1e-05, 8e-06, 3.1e-05, 4.4e-05, 4.1e-05, 4.8e-05, 2.4e-05, 6.8e-05, 5.7e-05, 3.1e-05, 3e-05, 6.3e-05, 3e-05, 3e-05, 6.3e-05, 4.8e-05, 3.5e-05, 6.3e-05, 3.5e-05, 4.8e-05, 6.3e-05, 0.000102, 0.000102, 0.000105, 0.000105, 8e-06, 0.000102, 5.7e-05, 6.1e-05, 4.1e-05, 4.8e-05, 4.8e-05, 4.1e-05, 4.8e-05, 6.3e-05, 6.3e-05, 4.1e-05, 4.1e-05, 3.5e-05, 4.1e-05, 4.1e-05, 3.6e-05, 4.1e-05, 4.8e-05, 4.1e-05, 6.3e-05, 4.8e-05, 4.8e-05, 6.3e-05, 4.8e-05, 3.6e-05, 4.4e-05, 4.1e-05, 4.4e-05, 4.4e-05, 5.5e-05, 3.6e-05, 3.6e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.6e-05, 5.5e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.5e-05, 5.5e-05, 3.6e-05, 4.1e-05, 4.8e-05, 4.8e-05, 3.6e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.5e-05, 5.5e-05, 3.6e-05, 3.6e-05, 3.6e-05, 3.6e-05, 3.6e-05, 3.6e-05, 5.5e-05, 4.4e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.4e-05, 4.4e-05, 5.5e-05, 4.1e-05, 4.8e-05, 4.1e-05, 6.3e-05, 4.1e-05, 3.6e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.8e-05, 6.3e-05, 6.3e-05, 4.8e-05, 4.1e-05, 4.1e-05, 4.1e-05, 5.5e-05, 4.4e-05, 4.4e-05, 4.4e-05, 3.6e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.6e-05, 3.6e-05, 3.6e-05, 3.6e-05, 5.5e-05, 4.4e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.4e-05, 5.5e-05, 3.6e-05, 3.6e-05, 3.6e-05, 5.5e-05, 5.5e-05, 4.4e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.4e-05, 5.5e-05, 3.6e-05, 4.1e-05, 3.6e-05, 3.6e-05, 3.6e-05, 5.5e-05, 5.5e-05, 5.5e-05, 5.5e-05, 3.6e-05, 5.5e-05, 5.5e-05, 5.5e-05, 3.6e-05, 3.6e-05, 4.1e-05, 3.6e-05, 5.5e-05, 5.5e-05, 5.5e-05, 4.4e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.1e-05, 4.1e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.5e-05, 3.6e-05, 3.6e-05, 3.6e-05, 3.6e-05, 3.6e-05, 3.6e-05, 5.5e-05, 5.5e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.5e-05, 4.4e-05, 5.5e-05, 3.6e-05, 3.6e-05, 3.6e-05, 5.5e-05, 4.4e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.4e-05, 5.5e-05, 5.5e-05, 5.5e-05, 3.6e-05, 3.6e-05, 5.5e-05, 5.5e-05, 5.5e-05, 4.4e-05, 5.5e-05, 4.4e-05, 4.4e-05, 5.5e-05, 4.1e-05, 6.3e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.8e-05, 4.1e-05, 4.8e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.5e-05, 3.5e-05, 6.1e-05, 6.1e-05, 4.1e-05, 4.1e-05, 4.8e-05, 4.8e-05, 4.1e-05, 4.8e-05, 4.8e-05, 4.1e-05, 4.8e-05, 6.3e-05, 4.1e-05, 6.3e-05, 4.8e-05, 3.6e-05, 5.5e-05, 4.4e-05, 5.5e-05, 5.5e-05, 5.5e-05, 3.6e-05, 3.6e-05, 3.6e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.6e-05, 5.5e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.5e-05, 3.6e-05, 3.6e-05, 3.6e-05, 3.6e-05, 3.6e-05, 3.6e-05, 5.5e-05, 4.4e-05, 4.1e-05, 4.1e-05, 4.4e-05, 4.4e-05, 5.5e-05, 3.6e-05, 4.1e-05, 4.8e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.6e-05, 5.5e-05, 4.4e-05, 5.5e-05, 3.6e-05, 4.1e-05, 4.8e-05, 4.8e-05, 6.3e-05, 4.1e-05, 4.1e-05, 6.3e-05, 3.6e-05, 5.5e-05, 5.5e-05, 5.5e-05, 4.1e-05, 4.1e-05, 2.4e-05, 5.7e-05, 3e-05, 0.000102, 3e-05, 6.8e-05, 5.9e-05, 4.4e-05, 6.1e-05, 5.9e-05, 4.8e-05, 6.1e-05, 4.4e-05, 6.5e-05, 6.4e-05, 3.7e-05, 4.9e-05, 3.7e-05, 6.3e-05, 3.5e-05, 3.5e-05, 4.1e-05, 3.5e-05, 4.4e-05, 4.8e-05, 6.5e-05, 3e-05, 8e-06, 6.4e-05, 6.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 3.7e-05, 3.7e-05, 3.7e-05, 7.1e-05, 6.7e-05, 7.1e-05, 7.1e-05, 7.1e-05, 4.9e-05, 0.000102, 6.8e-05, 3e-05, 6.4e-05, 3.7e-05, 3.7e-05, 3.7e-05, 3.7e-05, 4.9e-05, 6.7e-05, 6.7e-05, 6.7e-05, 3.7e-05, 3.7e-05, 3.7e-05, 6.7e-05, 6.7e-05, 7.1e-05, 7.1e-05, 3.7e-05, 3.7e-05, 3.7e-05, 3.7e-05, 3.7e-05, 6.5e-05, 6.1e-05, 4.4e-05, 2.4e-05, 3.1e-05, 8e-06, 9.3e-05, 4.9e-05, 4.9e-05, 4.9e-05, 3.7e-05, 3.7e-05, 3.7e-05, 9.3e-05, 1e-06, 3.7e-05, 4.9e-05, 6.7e-05, 6.7e-05, 6.7e-05, 7.1e-05, 7.1e-05, 6.7e-05, 9.3e-05, 6.8e-05, 4.8e-05, 4.8e-05, 2.4e-05, 6.8e-05, 5.7e-05, 3.1e-05, 8e-06, 4.9e-05, 9.3e-05, 0.000105, 0.000102, 3.1e-05, 6.5e-05, 6.5e-05, 3e-05, 8e-06, 8e-06, 9.3e-05, 4.9e-05, 6.7e-05, 3.7e-05, 5.3e-05, 5e-05, 7.1e-05, 6.7e-05, 6.7e-05, 7.1e-05, 6.7e-05, 7.1e-05, 7.1e-05, 3.7e-05, 3.7e-05, 3.7e-05, 6.7e-05, 8e-06, 6.3e-05, 4.8e-05, 4.4e-05, 4.4e-05, 5.9e-05, 2.4e-05, 5.9e-05, 6.5e-05, 2.4e-05, 2.4e-05, 4.8e-05, 4.1e-05, 6.3e-05, 4.1e-05, 4.8e-05, 6.3e-05, 4.1e-05, 3.5e-05, 6.1e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.1e-05, 4.8e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.8e-05, 3.5e-05, 4.8e-05, 6.8e-05, 3e-05, 0.000101, 0.000105, 0.000102, 6.8e-05, 6.5e-05, 5.7e-05, 3.1e-05, 8e-06, 0.000105, 1e-06, 3.7e-05, 4.9e-05, 0.000105, 3.1e-05, 6.3e-05, 6.3e-05, 3e-05, 0.000105, 3.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 3.7e-05, 4.9e-05, 6.7e-05, 4.9e-05, 6.4e-05, 5.7e-05, 4.8e-05, 6.3e-05, 5.7e-05, 0.000102, 9.3e-05, 3.7e-05, 6.7e-05, 4.9e-05, 4.9e-05, 4.9e-05, 9.3e-05, 6.8e-05, 4.4e-05, 6.1e-05, 5.9e-05, 2.4e-05, 3.1e-05, 3.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 7.1e-05, 7.1e-05, 6.7e-05, 9.3e-05, 6.4e-05, 6.4e-05, 1e-06, 9.3e-05, 4.9e-05, 4.9e-05, 6.7e-05, 6.7e-05, 6.7e-05, 4.9e-05, 9.3e-05, 1e-06, 6.4e-05, 6.4e-05, 9.3e-05, 3.7e-05, 3.7e-05, 6.4e-05, 0.000105, 0.000102, 3e-05, 6.5e-05, 4.1e-05, 6.3e-05, 4.1e-05, 6.1e-05, 2.4e-05, 6.3e-05, 5.7e-05, 5.7e-05, 8e-06, 6.4e-05, 6.4e-05, 8e-06, 5.7e-05, 2.4e-05, 4.4e-05, 4.4e-05, 6.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 6.1e-05, 4.8e-05, 5.6e-05, 4.8e-05, 4.1e-05, 4.1e-05, 4.8e-05, 3e-05, 6.4e-05, 9.3e-05, 4.9e-05, 6.7e-05, 6.7e-05, 6.7e-05, 3.7e-05, 1e-06, 0.000102, 6.8e-05, 6.3e-05, 3e-05, 8e-06, 6.4e-05, 1e-06, 0.000105, 0.000105, 0.000105, 0.000105, 0.000105, 6.3e-05, 5.9e-05, 5.9e-05, 6.8e-05, 8e-06, 9.3e-05, 9.3e-05, 6.4e-05, 3e-05, 6.3e-05, 6.8e-05, 5.9e-05, 4.4e-05, 4.1e-05, 6.3e-05, 4.1e-05, 3.5e-05, 6.1e-05, 4.4e-05, 4.8e-05, 4.8e-05, 5.9e-05, 5.9e-05, 4.4e-05, 3.5e-05, 6.1e-05, 6.5e-05, 3.1e-05, 0.000105, 1e-06, 9.3e-05, 4.9e-05, 6.7e-05, 4.9e-05, 9.3e-05, 1e-06, 6.4e-05, 0.000102, 0.000102, 3e-05, 3.1e-05, 8e-06, 5.7e-05, 5.7e-05, 6.5e-05, 5.7e-05, 5.7e-05, 6.5e-05, 6.5e-05, 4.8e-05, 4.8e-05, 6.3e-05, 8e-06, 6.4e-05, 6.4e-05, 1e-06, 3.7e-05, 4.9e-05, 3.7e-05, 6.4e-05, 6.4e-05, 8e-06, 0.000102, 3e-05, 4.8e-05, 5.9e-05, 5.9e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4.4e-05, 4.1e-05, 6.3e-05, 6.3e-05, 6.3e-05, 4.4e-05, 5.7e-05, 1e-06, 4.9e-05, 6.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 5e-05, 3.7e-05, 6.7e-05, 4.9e-05, 6.7e-05, 7.1e-05, 5e-05, 5e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5e-05, 6.7e-05, 6.7e-05, 7.1e-05, 5e-05, 5.3e-05, 5.3e-05, 4.4e-05, 5.3e-05, 5.3e-05, 5.3e-05, 3.7e-05, 9.3e-05, 9.3e-05, 4.9e-05, 9.3e-05, 1e-06, 1e-06, 1e-06, 9.3e-05, 3.7e-05, 4.9e-05, 1e-06, 0.000102, 0.000102, 9.3e-05, 6.7e-05, 6.7e-05, 7.1e-05, 3.7e-05, 5e-05, 4.4e-05, 5.3e-05, 5e-05, 3.7e-05, 3e-05, 4.4e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.5e-05, 2.4e-05, 3.1e-05, 9.3e-05, 6.7e-05, 6.7e-05, 9.3e-05, 0.000102, 0.000105, 1e-06, 1e-06, 6.7e-05, 6.7e-05, 7.1e-05, 4.9e-05, 4.9e-05, 4.9e-05, 0.000105, 6.8e-05, 4.8e-05, 6.5e-05, 6.3e-05, 3e-05, 8e-06, 3.1e-05, 3.1e-05, 6.4e-05, 6.4e-05, 9.3e-05, 9.3e-05, 1e-06, 0.000102, 6.4e-05, 6.7e-05, 7.1e-05, 5e-05, 5e-05, 3.7e-05, 5e-05, 5e-05, 5e-05, 3.7e-05, 3.7e-05, 0.000102, 6.8e-05, 6.5e-05, 3e-05, 0.000105, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 1e-06, 8e-06, 2.4e-05, 4.4e-05, 6.1e-05, 4.1e-05, 4.1e-05, 4.8e-05, 4.4e-05, 4.8e-05, 5.9e-05, 4.8e-05, 6.1e-05, 3.5e-05, 4.1e-05, 4.8e-05, 4.8e-05, 6.3e-05, 3.5e-05, 6.5e-05, 6.3e-05, 6.3e-05, 6.3e-05, 5.7e-05, 3.1e-05, 3e-05, 5.7e-05, 6.3e-05, 6.3e-05, 5.7e-05, 3.1e-05, 0.000102, 8e-06, 6.4e-05, 1e-06, 1e-06, 6.4e-05, 3e-05, 4.8e-05, 4.1e-05, 4.8e-05, 4.1e-05, 4.1e-05, 4.4e-05, 5.9e-05, 6.5e-05, 6.5e-05, 6.8e-05, 6.3e-05, 6.3e-05, 2.4e-05, 3.5e-05, 4.1e-05, 4.1e-05, 6.3e-05, 6.3e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 6.3e-05, 6.3e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.5e-05, 6.1e-05, 4.4e-05, 5.9e-05, 6.3e-05, 5.7e-05, 3.1e-05, 8e-06, 8e-06, 0.000105, 0.000105, 0.000105, 0.000105, 8e-06, 8e-06, 8e-06, 0.000105, 6.4e-05, 1e-06, 1e-06, 6.4e-05, 8e-06, 3.1e-05, 3e-05, 5.7e-05, 0.000102, 0.000105, 1e-06, 9e-06, 1e-06, 9.3e-05, 9.3e-05, 9.3e-05, 6.4e-05, 3.1e-05, 2.4e-05, 3.5e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.5e-05, 4.4e-05, 2.4e-05, 6.3e-05, 5.9e-05, 6.1e-05, 4.1e-05, 4.1e-05, 6.1e-05, 5.9e-05, 6.3e-05, 5.5e-05, 6.8e-05, 5.9e-05, 2.4e-05, 2.4e-05, 4.4e-05, 4.1e-05, 4.1e-05, 4.1e-05, 6.1e-05, 4.8e-05, 5.9e-05, 5.9e-05, 4.4e-05, 4.4e-05, 4.8e-05, 4.8e-05, 5.9e-05, 6.1e-05, 6.1e-05, 4.8e-05, 6.8e-05, 5.7e-05, 8e-06, 6.4e-05, 9.3e-05, 9.3e-05, 1e-06, 0.000105, 0.000102, 6.3e-05, 6.8e-05, 6.3e-05, 3.1e-05, 0.000105, 1e-06, 4.9e-05, 3.7e-05, 4.9e-05, 4.9e-05, 4.9e-05, 3.7e-05, 1e-06, 8e-06, 3.1e-05, 3e-05, 3.1e-05, 8e-06, 0.000105, 8e-06, 5.7e-05, 5.9e-05, 4.1e-05, 4.1e-05, 3.6e-05, 4.1e-05, 4.8e-05, 4.1e-05, 4.1e-05, 6.1e-05, 6.1e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.8e-05, 6.8e-05, 8e-06, 0.000105, 0.000105, 6.4e-05, 6.4e-05, 8e-06, 0.000102, 3.1e-05, 6.3e-05, 6.5e-05, 6.5e-05, 6.5e-05, 6.5e-05, 6.3e-05, 3.1e-05, 8e-06, 8e-06, 0.000102, 0.000102, 6.4e-05, 9.3e-05, 6.7e-05, 6.7e-05, 3.7e-05, 5e-05, 5e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5e-05, 3.7e-05, 7.1e-05, 4.9e-05, 3.7e-05, 3.7e-05, 6.7e-05, 7.1e-05, 5.3e-05, 4.4e-05, 4.4e-05, 5.8e-05, 4.4e-05, 5.3e-05, 5e-05, 7.1e-05, 6.7e-05, 6.7e-05, 7.1e-05, 3.7e-05, 4.4e-05, 4.4e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.4e-05, 4.4e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.4e-05, 4.4e-05, 3.7e-05, 4.9e-05, 1e-06, 0.000102, 3e-05, 3.1e-05, 8e-06, 0.000105, 1e-06, 1e-06, 9.3e-05, 1e-06, 3.1e-05, 2.4e-05, 3.7e-05, 4.1e-05, 4.1e-05, 6.1e-05, 5.9e-05, 2.4e-05, 2.4e-05, 5.7e-05, 0.000102, 0.000105, 8e-06, 6.3e-05, 2.4e-05, 6.1e-05, 6.1e-05, 4.4e-05, 5.9e-05, 6.8e-05, 8e-06, 3.7e-05, 3.7e-05, 7.1e-05, 7.1e-05, 6.7e-05, 4.9e-05, 3.7e-05, 4.9e-05, 6.7e-05, 7.1e-05, 5e-05, 5e-05, 3.7e-05, 3.7e-05, 5e-05, 7.1e-05, 7.1e-05, 4.9e-05, 9.3e-05, 4.9e-05, 6.7e-05, 7.1e-05, 3.7e-05, 5e-05, 5.3e-05, 5.3e-05, 3.7e-05, 6.7e-05, 3.7e-05, 8e-06, 5.7e-05, 6.5e-05, 6.5e-05, 4.4e-05, 3.5e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.5e-05, 3.5e-05, 4.1e-05, 4.1e-05, 3.5e-05, 5.7e-05, 1e-06, 9.3e-05, 9.3e-05, 6.4e-05, 0.000105, 3.1e-05, 6.8e-05, 5.9e-05, 4.1e-05, 4.1e-05, 4.8e-05, 4.1e-05, 3.5e-05, 6.8e-05, 5.7e-05, 5.7e-05, 5.9e-05, 4.4e-05, 4.4e-05, 4.4e-05, 6.1e-05, 5.9e-05, 6.8e-05, 8e-06, 6.4e-05, 9.3e-05, 6.7e-05, 6.7e-05, 9.3e-05, 3.1e-05, 3e-05, 6.5e-05, 3.5e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.4e-05, 5.9e-05, 2.4e-05, 6.5e-05, 6.3e-05, 3e-05, 5.7e-05, 6.5e-05, 6.1e-05, 4.1e-05, 4.1e-05, 6.1e-05, 4.8e-05, 6.8e-05, 3.1e-05, 0.000105, 9.3e-05, 3.7e-05, 3.7e-05, 3.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 7.1e-05, 5.3e-05, 4.4e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.4e-05, 5.3e-05, 6.7e-05, 6.3e-05, 6.1e-05, 4.1e-05, 4.1e-05, 6.1e-05, 4.8e-05, 6.5e-05, 0.000105, 4.9e-05, 3.7e-05, 3.7e-05, 4.9e-05, 4.9e-05, 3.7e-05, 6.7e-05, 5.3e-05, 5.8e-05, 4.3e-05, 4.3e-05, 4.3e-05, 5.8e-05, 5.3e-05, 6.4e-05, 2.4e-05, 4.4e-05, 4.8e-05, 5.7e-05, 3.7e-05, 5.3e-05, 4.4e-05, 4.4e-05, 5.8e-05, 5.8e-05, 4.4e-05, 5e-05, 3.7e-05, 5e-05, 5.3e-05, 5.3e-05, 4.4e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.3e-05, 3.7e-05, 5e-05, 4.4e-05, 5.8e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 3.7e-05, 3.1e-05, 4.8e-05, 4.1e-05, 4.8e-05, 4.1e-05, 4.4e-05, 6.8e-05, 6.5e-05, 5.7e-05, 6.3e-05, 6.3e-05, 6.5e-05, 2.4e-05, 3.5e-05, 4.8e-05, 4.1e-05, 4.8e-05, 6.3e-05, 6.3e-05, 3.5e-05, 6.1e-05, 4.4e-05, 4.4e-05, 3.5e-05, 3.5e-05, 4.1e-05, 4.1e-05, 4.1e-05, 6.1e-05, 6.8e-05, 0.000102, 8e-06, 0.000105, 0.000102, 8e-06, 5.7e-05, 6.8e-05, 6.1e-05, 4.1e-05, 4.1e-05, 6.1e-05, 6.8e-05, 8e-06, 3.7e-05, 4.9e-05, 6.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 3.7e-05, 9.3e-05, 9.3e-05, 0.000105, 3.1e-05, 5.7e-05, 5.7e-05, 5.7e-05, 3e-05, 3.1e-05, 0.000102, 0.000102, 0.000102, 3.1e-05, 0.000102, 9.3e-05, 6.7e-05, 7.1e-05, 5e-05, 5e-05, 3.7e-05, 5e-05, 3.7e-05, 6.7e-05, 4.9e-05, 6.4e-05, 8e-06, 0.000101, 4.9e-05, 7.1e-05, 3.7e-05, 3.7e-05, 3.7e-05, 7.1e-05, 6.7e-05, 9.3e-05, 8e-06, 6.8e-05, 4.8e-05, 6.1e-05, 4.8e-05, 6.8e-05, 3e-05, 0.000102, 0.000102, 3.1e-05, 3e-05, 6.5e-05, 2.4e-05, 2.4e-05, 5.9e-05, 2.4e-05, 2.4e-05, 5.9e-05, 6.3e-05, 5.7e-05, 3e-05, 3.1e-05, 3.1e-05, 3.1e-05, 5.7e-05, 6.8e-05, 3.1e-05, 9.3e-05, 6.7e-05, 6.7e-05, 3.7e-05, 3.7e-05, 3.7e-05, 7.1e-05, 6.7e-05, 3.7e-05, 0.000105, 0.000105, 0.000102, 5.7e-05, 5.7e-05, 5.7e-05, 3e-05, 0.000102, 0.000105, 3e-05, 6.8e-05, 6.8e-05, 5.9e-05, 2.4e-05, 2.4e-05, 2.4e-05, 5.7e-05, 8e-06, 8e-06, 0.000102, 8e-06, 8e-06, 8e-06, 0.000102, 6.3e-05, 2.4e-05, 6.5e-05, 2.4e-05, 2.4e-05, 6.5e-05, 6.3e-05, 3e-05, 0.000105, 6.4e-05, 6.4e-05, 0.000105, 3e-05, 5.7e-05, 3e-05, 1e-06, 4.9e-05, 6.7e-05, 7.1e-05, 5.3e-05, 5.8e-05, 5.8e-05, 4.4e-05, 4.4e-05, 5.3e-05, 5e-05, 5.3e-05, 4.4e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.4e-05, 5.8e-05, 4.4e-05, 5.3e-05, 5e-05, 3.7e-05, 7.1e-05, 6.7e-05, 6.7e-05, 3.7e-05, 5e-05, 5.3e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.3e-05, 5.3e-05, 5.3e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.3e-05, 5.3e-05, 5.3e-05, 4.4e-05, 5.3e-05, 5e-05, 7.1e-05, 6.7e-05, 0.000105, 3.1e-05, 6.8e-05, 6.5e-05, 6.8e-05, 3e-05, 3e-05, 6.4e-05, 6.7e-05, 6.7e-05, 6.7e-05, 4.9e-05, 4.9e-05, 6.7e-05, 7.1e-05, 5e-05, 5e-05, 5e-05, 3.7e-05, 3.7e-05, 7.1e-05, 4.9e-05, 0.000102, 4.8e-05, 3.5e-05, 6.1e-05, 2.4e-05, 3.1e-05, 1e-06, 4.9e-05, 3.7e-05, 3.7e-05, 5e-05, 3.7e-05, 7.1e-05, 6.7e-05, 7.1e-05, 5e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5e-05, 5e-05, 7.1e-05, 9.3e-05, 6.4e-05, 0.000102, 6.5e-05, 4.8e-05, 4.8e-05, 5.9e-05, 2.4e-05, 6.8e-05, 2.4e-05, 5.9e-05, 5.7e-05, 3e-05, 3e-05, 0.000102, 1e-06, 3.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 9.3e-05, 0.000102, 6.3e-05, 4.8e-05, 5.9e-05, 3.1e-05, 3.7e-05, 5e-05, 4.4e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.4e-05, 5e-05, 7.1e-05, 5e-05, 5.3e-05, 5.3e-05, 4.4e-05, 4.4e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.4e-05, 5.3e-05, 5e-05, 5e-05, 5.3e-05, 5e-05, 7.1e-05, 6.7e-05, 9.3e-05, 6.4e-05, 3.1e-05, 6.8e-05, 4.8e-05, 4.8e-05, 6.8e-05, 6.3e-05, 6.8e-05, 2.4e-05, 5.9e-05, 2.4e-05, 6.8e-05, 6.8e-05, 6.8e-05, 6.8e-05, 6.8e-05, 5.9e-05, 5.9e-05, 6.3e-05, 3e-05, 3e-05, 0.000102, 6.4e-05, 4.9e-05, 4.9e-05, 9.3e-05, 0.000105, 5.7e-05, 2.4e-05, 2.4e-05, 6.5e-05, 6.5e-05, 6.3e-05, 3.1e-05, 0.000102, 6.4e-05, 6.4e-05, 3.1e-05, 6.3e-05, 6.8e-05, 6.8e-05, 6.3e-05, 5.7e-05, 0.000102, 0.000105, 9.3e-05, 1e-06, 0.000102, 3.1e-05, 6.3e-05, 6.8e-05, 6.5e-05, 2.4e-05, 5.9e-05, 2.4e-05, 2.4e-05, 2.4e-05, 6.8e-05, 3.1e-05, 1e-06, 1e-06, 9.3e-05, 1e-06, 8e-06, 8e-06, 1e-06, 3.7e-05, 6.7e-05, 5e-05, 5e-05, 5e-05, 3.7e-05, 5e-05, 3.7e-05, 7.1e-05, 4.9e-05, 4.9e-05, 9.3e-05, 0.000105, 0.000105, 6.4e-05, 6.4e-05, 1e-06, 9.3e-05, 8e-06, 3.1e-05, 6.5e-05, 4.4e-05, 6.3e-05, 6.3e-05, 4.1e-05, 4.1e-05, 4.1e-05, 6.1e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 3.5e-05, 4.1e-05, 4.1e-05, 3.5e-05, 6.1e-05, 4.8e-05, 2.4e-05, 3e-05, 1e-06, 9.3e-05, 4.9e-05, 4.9e-05, 3.7e-05, 3.7e-05, 9.3e-05, 0.000105, 3e-05, 3.1e-05, 6.4e-05, 6.4e-05, 1e-06, 1e-06, 1e-06, 9.3e-05, 1e-06, 0.000105, 3e-05, 6.3e-05, 8e-06, 9.3e-05, 1e-06, 0.000105, 6.4e-05, 6.4e-05, 9.3e-05, 1e-06, 0.000102, 6.8e-05, 4.1e-05, 6.3e-05, 4.1e-05, 6.1e-05, 5.9e-05, 6.8e-05, 0.000102, 9.3e-05, 4.9e-05, 6.7e-05, 7.1e-05, 3.7e-05, 7.1e-05, 5e-05, 3.7e-05, 7.1e-05, 3.7e-05, 5e-05, 5e-05, 7.1e-05, 3.7e-05, 3.7e-05, 4.9e-05, 6.5e-05, 3.5e-05, 4.1e-05, 4.1e-05, 6.1e-05, 3e-05, 1e-06, 6.7e-05, 5.3e-05, 4.4e-05, 5.3e-05, 5e-05, 6.7e-05, 9.3e-05, 1e-06, 8e-06, 6.8e-05, 4.8e-05, 4.4e-05, 4.8e-05, 6.5e-05, 6.3e-05, 6.8e-05, 2.4e-05, 4.8e-05, 3.5e-05, 4.1e-05, 4.1e-05, 2.4e-05, 6.5e-05, 6.8e-05, 6.8e-05, 5.7e-05, 0.000102, 3.1e-05, 3.1e-05, 5.7e-05, 6.8e-05, 6.5e-05, 2.8e-05, 6.5e-05, 6.3e-05, 3.1e-05, 9.3e-05, 1e-06, 1e-06, 3.7e-05, 9.3e-05, 0.000105, 2.4e-05, 3.5e-05, 6.3e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.5e-05, 6.1e-05, 3.5e-05, 4.1e-05, 6.3e-05, 4.8e-05, 4.1e-05, 3.5e-05, 6.1e-05, 4.8e-05, 5.9e-05, 6.8e-05, 5.7e-05, 6.5e-05, 4.8e-05, 4.4e-05, 6.1e-05, 4.4e-05, 6.1e-05, 5.9e-05, 3.1e-05, 9.3e-05, 6.7e-05, 7.1e-05, 3.7e-05, 3.7e-05, 7.1e-05, 6.7e-05, 6.7e-05, 6.7e-05, 3.7e-05, 4.9e-05, 6.7e-05, 3.7e-05, 7.1e-05, 7.1e-05, 3.7e-05, 5.3e-05, 5e-05, 7.1e-05, 1e-06, 3.1e-05, 6.8e-05, 6.8e-05, 5.7e-05, 0.000102, 0.000102, 0.000102, 8e-06, 0.000105, 8e-06, 6.8e-05, 5.9e-05, 4.8e-05, 4.4e-05, 5.9e-05, 6.8e-05, 6.3e-05, 3e-05, 5.7e-05, 5.7e-05, 3e-05, 3e-05, 5.7e-05, 6.8e-05, 4.4e-05, 3.5e-05, 4.4e-05, 5.9e-05, 6.5e-05, 5.7e-05, 6.3e-05, 5.7e-05, 3e-05, 3e-05, 3.1e-05, 5.7e-05, 5.7e-05, 3e-05, 6.4e-05, 4.9e-05, 7.1e-05, 5e-05, 4.4e-05, 5.8e-05, 4.4e-05, 5.3e-05, 5.3e-05, 5e-05, 3.7e-05, 5e-05, 5e-05, 4.4e-05, 5.8e-05, 4.3e-05, 4.4e-05, 4.4e-05, 5.3e-05, 3.7e-05, 7.1e-05, 6.7e-05, 4.9e-05, 9.3e-05, 9.3e-05, 7.1e-05, 5.3e-05, 4.4e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.3e-05, 3.7e-05, 3.7e-05, 5e-05, 4.4e-05, 4.4e-05, 4.3e-05, 4.3e-05, 4.3e-05, 5.3e-05, 5.3e-05, 4.3e-05, 4.3e-05, 5.8e-05, 5.8e-05, 4.4e-05, 5e-05, 6.7e-05, 3.7e-05, 6.7e-05, 7.1e-05, 6.7e-05, 3.7e-05, 3.7e-05, 6.7e-05, 6.7e-05, 7.1e-05, 5.3e-05, 4.4e-05, 5.8e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.4e-05, 6.7e-05, 1e-06, 6.4e-05, 8e-06, 5.7e-05, 3e-05, 1e-06, 4.9e-05, 6.7e-05, 3.7e-05, 5e-05, 5.3e-05, 5e-05, 3.7e-05, 3.7e-05, 3.7e-05, 3.7e-05, 5e-05, 5.3e-05, 4.4e-05, 5.3e-05, 5e-05, 3.7e-05, 3.7e-05, 6.7e-05, 4.9e-05, 6.7e-05, 3.7e-05, 3.7e-05, 3.7e-05, 5e-05, 7.1e-05, 3.7e-05, 3.7e-05, 5e-05, 5e-05, 3.7e-05, 6.3e-05, 3.5e-05, 4.1e-05, 6.1e-05, 4.8e-05, 6.5e-05, 6.3e-05, 3.1e-05, 1e-06, 6.7e-05, 6.7e-05, 3.7e-05, 1e-06, 8e-06, 8e-06, 0.000105, 1e-06, 0.000105, 0.000102, 3.1e-05, 6.8e-05, 5.9e-05, 6.1e-05, 4.1e-05, 6.3e-05, 4.1e-05, 4.4e-05, 6.3e-05, 6.4e-05, 4.9e-05, 5.3e-05, 5.8e-05, 4.3e-05, 5.8e-05, 4.4e-05, 5.3e-05, 6.7e-05, 3e-05, 6.5e-05, 4.8e-05, 4.8e-05, 5.9e-05, 5.9e-05, 5.9e-05, 5.9e-05, 4.4e-05, 6.1e-05, 2.4e-05, 3.1e-05, 3.7e-05, 7.1e-05, 3.7e-05, 4.4e-05, 4.4e-05, 5.8e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.5e-05, 5.5e-05, 4.5e-05, 6.6e-05, 0.0, 9.8e-05, 3e-05, 6.4e-05, 3e-05, 4.8e-05, 4.8e-05, 4.7e-05, 3e-05, 7e-06, 9.6e-05, 5e-05, 6.6e-05, 4.1e-05, 4.9e-05, 5.5e-05, 5.8e-05, 4.2e-05, 4.2e-05, 4.2e-05, 5.8e-05, 5.8e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.5e-05, 5.5e-05, 4.5e-05, 5.5e-05, 4.9e-05, 4.5e-05, 4.5e-05, 5.8e-05, 5.8e-05, 4.2e-05, 4.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 4.2e-05, 4.2e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.1e-05, 6.9e-05, 9.6e-05, 9.6e-05, 3e-05, 6.6e-05, 6.4e-05, 6.3e-05, 6.3e-05, 6.4e-05, 6.6e-05, 3e-05, 3e-05, 5.7e-05, 6.4e-05, 3e-05, 5.5e-05, 4.7e-05, 6.3e-05, 3.4e-05, 6.7e-05, 5e-05, 6.9e-05, 6.6e-05, 5e-05, 7e-06, 3e-05, 6.3e-05, 3e-05, 4.8e-05, 5.7e-05, 4.7e-05, 6.4e-05, 9.6e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.9e-05, 4.1e-05, 6.6e-05, 5e-05, 6.7e-05, 3.4e-05, 3.4e-05, 7e-06, 9.8e-05, 7e-06, 0.000104, 7e-06, 5e-05, 6.9e-05, 3.5e-05, 0.000104, 5.5e-05, 3.6e-05, 3.6e-05, 5.7e-05, 4.7e-05, 4.8e-05, 4.8e-05, 3e-05, 6.4e-05, 6.3e-05, 5.5e-05, 4.8e-05, 4.8e-05, 3e-05, 6.6e-05, 3e-05, 7e-06, 0.0, 3.5e-05, 6.7e-05, 3.4e-05, 6.4e-05, 3e-05, 3e-05, 5.5e-05, 6.6e-05, 9.6e-05, 6.6e-05, 5.5e-05, 4.5e-05, 5.8e-05, 5.8e-05, 4.2e-05, 5.8e-05, 4.1e-05, 5e-05, 0.000104, 6.6e-05, 6.3e-05, 6.3e-05, 3e-05, 3e-05, 6.3e-05, 6.3e-05, 6.3e-05, 3e-05, 6.7e-05, 0.0, 3.5e-05, 5e-05, 4.9e-05, 5.5e-05, 4.5e-05, 5.8e-05, 4.2e-05, 4.2e-05, 4.3e-05, 4.2e-05, 4.2e-05, 4.2e-05, 5.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 5.8e-05, 4.5e-05, 4.1e-05, 6.9e-05, 3.5e-05, 6.7e-05, 3e-05, 6.6e-05, 6.6e-05, 3e-05, 4.8e-05, 4.7e-05, 5.5e-05, 4.7e-05, 5.7e-05, 5.7e-05, 5.5e-05, 6.4e-05, 3e-05, 7e-06, 0.000104, 0.0, 0.0, 0.0, 9.8e-05, 0.000104, 0.000104, 0.0, 9.6e-05, 6.9e-05, 6.9e-05, 6.8e-05, 3.5e-05, 9.8e-05, 0.000104, 3e-05, 6.3e-05, 6.4e-05, 6.3e-05, 5.7e-05, 7e-06, 6.7e-05, 0.0, 6.7e-05, 6.7e-05, 9.8e-05, 5.7e-05, 5.5e-05, 4.7e-05, 3.6e-05, 3.6e-05, 3.6e-05, 3.6e-05, 5.7e-05, 3e-05, 6.3e-05, 6.4e-05, 5.5e-05, 5.7e-05, 4e-05, 4e-05, 6.7e-05, 6.7e-05, 4e-05, 3.6e-05, 4.7e-05, 6.4e-05, 3e-05, 7e-06, 7e-06, 6.7e-05, 9.8e-05, 3e-05, 3e-05, 7e-06, 0.0, 0.0, 0.0, 6.7e-05, 9.8e-05, 6.7e-05, 0.0, 3.5e-05, 9.6e-05, 9.6e-05, 6.7e-05, 9.8e-05, 0.0, 3.5e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 5.5e-05, 4.1e-05, 4.1e-05, 6.6e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 6.9e-05, 9.8e-05, 3e-05, 3e-05, 0.000104, 0.000104, 6.6e-05, 6.4e-05, 0.000104, 3.5e-05, 6.9e-05, 4.1e-05, 6.8e-05, 6.9e-05, 6.9e-05, 9.8e-05, 5.7e-05, 6.4e-05, 6.6e-05, 6.6e-05, 3e-05, 6.3e-05, 6.6e-05, 6.4e-05, 3e-05, 6.4e-05, 6.4e-05, 3e-05, 7e-06, 9.6e-05, 9.6e-05, 3e-05, 6.6e-05, 9.6e-05, 6.8e-05, 6.8e-05, 6.9e-05, 6.7e-05, 7e-06, 0.000104, 3.4e-05, 3.4e-05, 3.4e-05, 5.7e-05, 6.6e-05, 3e-05, 0.000104, 9.8e-05, 3.5e-05, 6.8e-05, 6.9e-05, 7e-06, 9.8e-05, 6.7e-05, 7e-06, 6.7e-05, 6.8e-05, 5.5e-05, 5.8e-05, 4.5e-05, 5.8e-05, 5.8e-05, 4.2e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.5e-05, 4.9e-05, 4.1e-05, 6.6e-05, 6.9e-05, 6.9e-05, 6.9e-05, 6.9e-05, 6.9e-05, 5e-05, 6.9e-05, 6.8e-05, 5e-05, 9.6e-05, 6.7e-05, 0.0, 0.0, 5e-05, 6.9e-05, 6.8e-05, 6.8e-05, 3.5e-05, 0.000104, 0.000104, 6.6e-05, 6.4e-05, 6.6e-05, 3e-05, 9.8e-05, 9.8e-05, 0.000104, 6.7e-05, 9.6e-05, 3.5e-05, 9.6e-05, 7e-06, 5.7e-05, 6.4e-05, 6.4e-05, 5.7e-05, 3.4e-05, 7e-06, 9.8e-05, 0.000104, 0.0, 9.6e-05, 0.0, 9.6e-05, 9.8e-05, 7e-06, 6.7e-05, 9.8e-05, 9.8e-05, 6.7e-05, 9.6e-05, 9.8e-05, 6.7e-05, 6.7e-05, 3.5e-05, 6.4e-05, 3.5e-05, 9.8e-05, 9.6e-05, 6.9e-05, 9.6e-05, 0.0, 5e-05, 6.6e-05, 6.6e-05, 5e-05, 9.6e-05, 6.7e-05, 0.000104, 0.000104, 9.8e-05, 9.1e-05, 9.6e-05, 0.0, 9.6e-05, 9.6e-05, 9.6e-05, 3.4e-05, 5.7e-05, 5.7e-05, 0.000104, 6.7e-05, 3.5e-05, 6.8e-05, 6.6e-05, 4.1e-05, 4.9e-05, 4.9e-05, 5.5e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.1e-05, 4.1e-05, 4.9e-05, 5.5e-05, 5.5e-05, 5.5e-05, 4.9e-05, 4.1e-05, 4.1e-05, 4.1e-05, 5.5e-05, 4.5e-05, 4.5e-05, 5.5e-05, 5.8e-05, 5.8e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.5e-05, 4.5e-05, 5.5e-05, 4.5e-05, 4.6e-05, 5.8e-05, 4.5e-05, 4.5e-05, 6.6e-05, 4.1e-05, 4.9e-05, 4.9e-05, 5.8e-05, 4.2e-05, 4.2e-05, 4.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 5.8e-05, 4.1e-05, 4.5e-05, 5.8e-05, 4.2e-05, 5.2e-05, 5.2e-05, 4.2e-05, 4.2e-05, 5.2e-05, 5.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 5.8e-05, 4.5e-05, 5.5e-05, 5.5e-05, 4.5e-05, 4.5e-05, 5.5e-05, 4.9e-05, 6.6e-05, 5e-05, 6.1e-05, 7e-06, 3.4e-05, 0.000104, 0.000104, 7e-06, 6.7e-05, 6.7e-05, 9.8e-05, 7e-06, 7e-06, 0.000104, 7e-06, 7e-06, 9.8e-05, 7e-06, 6.7e-05, 0.0, 7e-06, 9.8e-05, 6.8e-05, 5.5e-05, 5.5e-05, 4.5e-05, 5.5e-05, 4.9e-05, 4.9e-05, 4.1e-05, 4.9e-05, 5.5e-05, 4.9e-05, 4.1e-05, 6.8e-05, 6.7e-05, 3e-05, 3e-05, 4.7e-05, 3.6e-05, 3.6e-05, 3.6e-05, 4.8e-05, 6.6e-05, 9.6e-05, 4.1e-05, 4.5e-05, 5.5e-05, 5.5e-05, 5.5e-05, 4.5e-05, 5.5e-05, 5.5e-05, 4.1e-05, 6.9e-05, 6.8e-05, 4.1e-05, 6.6e-05, 4.1e-05, 4.1e-05, 5.5e-05, 4.1e-05, 6.6e-05, 0.0, 7e-06, 6.7e-05, 0.0, 6.8e-05, 5.5e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 5.8e-05, 5.5e-05, 6.6e-05, 9.6e-05, 9.8e-05, 3.4e-05, 6.4e-05, 3e-05, 4.8e-05, 5.5e-05, 4.8e-05, 5.5e-05, 3e-05, 6.9e-05, 4.1e-05, 4.1e-05, 5.5e-05, 5.5e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.1e-05, 4.1e-05, 6.8e-05, 6.6e-05, 6.6e-05, 4.9e-05, 6.9e-05, 0.0, 9.6e-05, 3.5e-05, 0.0, 9.8e-05, 6.7e-05, 5e-05, 6.8e-05, 6.6e-05, 4.1e-05, 5.5e-05, 5.5e-05, 4.5e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 6.6e-05, 6.9e-05, 5e-05, 6.8e-05, 5e-05, 6.9e-05, 6.8e-05, 9.6e-05, 0.000104, 6.7e-05, 0.0, 0.0, 9.6e-05, 9.6e-05, 0.0, 9.6e-05, 6.9e-05, 6.9e-05, 6.8e-05, 3.5e-05, 6.7e-05, 6.7e-05, 3.5e-05, 5e-05, 3.5e-05, 3.5e-05, 3.5e-05, 9.8e-05, 7e-06, 9.8e-05, 3.5e-05, 3.5e-05, 6.7e-05, 6.7e-05, 3e-05, 3e-05, 4.7e-05, 4.8e-05, 3e-05, 6.3e-05, 5.7e-05, 3e-05, 3.4e-05, 3.4e-05, 3.4e-05, 6.6e-05, 6.6e-05, 3e-05, 4.8e-05, 4.7e-05, 4.8e-05, 5.7e-05, 5.7e-05, 4e-05, 4e-05, 4e-05, 6.7e-05, 4e-05, 4e-05, 6.7e-05, 6.7e-05, 4e-05, 5.7e-05, 4.8e-05, 6.3e-05, 6.6e-05, 3e-05, 5.7e-05, 6.4e-05, 6.3e-05, 6.3e-05, 5.5e-05, 4.7e-05, 3.6e-05, 4e-05, 4e-05, 4e-05, 4e-05, 6.7e-05, 6.7e-05, 4e-05, 4e-05, 4e-05, 4e-05, 4e-05, 3.7e-05, 6.7e-05, 5.7e-05, 5.5e-05, 3e-05, 6.3e-05, 6.3e-05, 5.5e-05, 4.8e-05, 4.8e-05, 5.7e-05, 5.7e-05, 4e-05, 4e-05, 4e-05, 4e-05, 6.7e-05, 6.7e-05, 4.8e-05, 3.7e-05, 3.1e-05, 3.1e-05, 5.9e-05, 5.9e-05, 3.1e-05, 4.8e-05, 5.7e-05, 6.4e-05, 3.4e-05, 6.7e-05, 5e-05, 6.9e-05, 9.6e-05, 0.0, 9.8e-05, 6.6e-05, 4.8e-05, 3.6e-05, 4e-05, 4.8e-05, 3.7e-05, 3.7e-05, 5.9e-05, 5.9e-05, 4.2e-05, 4.2e-05, 5.9e-05, 3.7e-05, 4e-05, 6.3e-05, 0.000104, 3.5e-05, 6.8e-05, 6.8e-05, 6.8e-05, 6.9e-05, 9.8e-05, 6.6e-05, 3e-05, 4.7e-05, 3.6e-05, 4e-05, 6.7e-05, 3.7e-05, 3.7e-05, 3.1e-05, 5.9e-05, 4.2e-05, 4.2e-05, 5.9e-05, 3.1e-05, 6.7e-05, 5.5e-05, 0.000104, 9.6e-05, 6.9e-05, 6.6e-05, 4.1e-05, 6.8e-05, 3.5e-05, 9.8e-05, 9.8e-05, 7e-06, 3e-05, 6.3e-05, 5.5e-05, 4.7e-05, 3.6e-05, 4e-05, 6.7e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4e-05, 4.8e-05, 6.4e-05, 7e-06, 3.5e-05, 9.6e-05, 6.9e-05, 6.8e-05, 6.6e-05, 4.9e-05, 4.1e-05, 4.1e-05, 4.1e-05, 6.6e-05, 9.6e-05, 3.4e-05, 6.4e-05, 5.5e-05, 4e-05, 4.8e-05, 3.7e-05, 3.7e-05, 4.8e-05, 6.7e-05, 5.7e-05, 3e-05, 6.4e-05, 5.7e-05, 7e-06, 9.8e-05, 9.8e-05, 3.5e-05, 5e-05, 3.5e-05, 9.8e-05, 3e-05, 6.6e-05, 6.3e-05, 3e-05, 4.8e-05, 4.8e-05, 5.5e-05, 5.5e-05, 5.7e-05, 4e-05, 3.7e-05, 3.1e-05, 3.1e-05, 4.8e-05, 4e-05, 4.8e-05, 6.3e-05, 3.4e-05, 6.7e-05, 6.9e-05, 6.6e-05, 6.6e-05, 6.6e-05, 6.6e-05, 6.8e-05, 5e-05, 3.5e-05, 6.7e-05, 7e-06, 0.0, 3.4e-05, 5.7e-05, 3e-05, 6.3e-05, 6.3e-05, 4.8e-05, 4.7e-05, 4.7e-05, 4.7e-05, 4.8e-05, 4.7e-05, 6.4e-05, 0.000104, 5e-05, 6.8e-05, 6.6e-05, 4.1e-05, 5e-05, 0.0, 9.8e-05, 3e-05, 3e-05, 4e-05, 4.8e-05, 3.7e-05, 3.1e-05, 3.1e-05, 3.1e-05, 5.9e-05, 4.2e-05, 4.2e-05, 5.9e-05, 5.9e-05, 4.8e-05, 4e-05, 6.4e-05, 0.0, 6.8e-05, 4.1e-05, 4.1e-05, 4.1e-05, 6.6e-05, 6.9e-05, 9.6e-05, 3.4e-05, 6.3e-05, 4.7e-05, 3.6e-05, 3.6e-05, 3.6e-05, 6.7e-05, 6.7e-05, 3.7e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4e-05, 3.6e-05, 3e-05, 3e-05, 6.7e-05, 9.6e-05, 9.6e-05, 3.5e-05, 5e-05, 6.9e-05, 3.5e-05, 3.5e-05, 3.5e-05, 6.9e-05, 5e-05, 3.5e-05, 6.7e-05, 3.4e-05, 5.5e-05, 4e-05, 4.8e-05, 3.7e-05, 3.7e-05, 3.7e-05, 3.7e-05, 4.8e-05, 4e-05, 4.7e-05, 6.3e-05, 7e-06, 0.0, 9.6e-05, 3.5e-05, 9.6e-05, 9.6e-05, 3.5e-05, 9.6e-05, 6.7e-05, 9.8e-05, 7e-06, 3e-05, 5.7e-05, 3e-05, 5.7e-05, 6.4e-05, 5.5e-05, 5.7e-05, 3.6e-05, 3.6e-05, 4e-05, 4.8e-05, 5.7e-05, 7e-06, 6.7e-05, 0.0, 6.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 0.000104, 3.4e-05, 6.3e-05, 4.7e-05, 5.7e-05, 5.7e-05, 4e-05, 3.7e-05, 3.1e-05, 5.9e-05, 5.9e-05, 5.9e-05, 3.1e-05, 4.8e-05, 6.7e-05, 5.7e-05, 6.4e-05, 9.8e-05, 9.6e-05, 9.6e-05, 3.5e-05, 9.6e-05, 0.0, 3.4e-05, 3e-05, 4e-05, 4.8e-05, 3.7e-05, 3.7e-05, 3.1e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.9e-05, 4.9e-05, 4.2e-05, 5.9e-05, 4.8e-05, 5.7e-05, 6.4e-05, 3.4e-05, 6.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 3.4e-05, 5.5e-05, 6.7e-05, 3.7e-05, 4.8e-05, 4e-05, 6.7e-05, 3.7e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.2e-05, 5.9e-05, 3.7e-05, 4e-05, 5.5e-05, 6.6e-05, 3.4e-05, 0.000104, 0.000104, 0.000104, 6.6e-05, 5.5e-05, 4e-05, 3.7e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 4.2e-05, 5.9e-05, 3.1e-05, 4e-05, 4.8e-05, 6.4e-05, 3e-05, 0.000104, 7e-06, 3e-05, 5.5e-05, 5.7e-05, 6.7e-05, 5.9e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 4.2e-05, 5.9e-05, 3.1e-05, 3.7e-05, 4e-05, 4e-05, 5.7e-05, 5.5e-05, 3e-05, 6.6e-05, 5.7e-05, 5.7e-05, 5.7e-05, 5.7e-05, 3e-05, 4.7e-05, 4e-05, 3.7e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 5.9e-05, 3.1e-05, 4e-05, 5.7e-05, 6.3e-05, 6.3e-05, 5.5e-05, 4.8e-05, 5.5e-05, 6.4e-05, 5.5e-05, 4.8e-05, 4.7e-05, 4.8e-05, 5.9e-05, 5.9e-05, 5.9e-05, 4.8e-05, 4.8e-05, 3.1e-05, 3.7e-05, 4.8e-05, 4e-05, 4e-05, 4.7e-05, 5.7e-05, 0.0, 9.6e-05, 3.5e-05, 6.9e-05, 6.6e-05, 6.6e-05, 6.6e-05, 6.8e-05, 6.9e-05, 6.9e-05, 6.9e-05, 9.6e-05, 0.000104, 3e-05, 3.6e-05, 6.7e-05, 4e-05, 4.8e-05, 3e-05, 6.4e-05, 6.4e-05, 3.4e-05, 9.8e-05, 9.6e-05, 3.5e-05, 5e-05, 6.9e-05, 6.9e-05, 9.6e-05, 6.6e-05, 4.8e-05, 3.6e-05, 4e-05, 6.7e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4.8e-05, 3.7e-05, 3.7e-05, 3.7e-05, 3.1e-05, 5.9e-05, 3.1e-05, 3.7e-05, 3.6e-05, 0.000104, 6.9e-05, 6.9e-05, 6.8e-05, 6.6e-05, 4.1e-05, 4.1e-05, 4.1e-05, 6.6e-05, 6.9e-05, 0.0, 6.6e-05, 3e-05, 3.6e-05, 4.8e-05, 3.1e-05, 5.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.2e-05, 3.1e-05, 4e-05, 4.8e-05, 3.4e-05, 0.0, 3.5e-05, 9.8e-05, 3.4e-05, 3.4e-05, 6.6e-05, 6.4e-05, 4.8e-05, 4e-05, 3.7e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.2e-05, 5.9e-05, 4.8e-05, 5.5e-05, 3e-05, 0.000104, 9.8e-05, 6.7e-05, 9.8e-05, 7e-06, 6.6e-05, 4.8e-05, 5.7e-05, 4e-05, 4.8e-05, 3.7e-05, 3.7e-05, 3.7e-05, 3.1e-05, 3.7e-05, 3.7e-05, 4.8e-05, 4.8e-05, 4.8e-05, 6.7e-05, 3.6e-05, 3e-05, 6.3e-05, 6.6e-05, 3.4e-05, 3.4e-05, 3e-05, 5.7e-05, 3.6e-05, 3.6e-05, 4e-05, 6.7e-05, 3.7e-05, 3.1e-05, 5.9e-05, 4.2e-05, 5.9e-05, 3.1e-05, 6.7e-05, 5.7e-05, 5.5e-05, 3e-05, 3e-05, 6.3e-05, 6.6e-05, 3.4e-05, 0.000104, 7e-06, 9.8e-05, 3.5e-05, 3.5e-05, 3.5e-05, 5e-05, 5e-05, 5e-05, 5e-05, 5e-05, 5e-05, 3.5e-05, 6.7e-05, 3.4e-05, 6.6e-05, 5.5e-05, 4.7e-05, 4.7e-05, 4.7e-05, 3.6e-05, 4.7e-05, 6.3e-05, 3e-05, 7e-06, 9.8e-05, 7e-06, 9.8e-05, 6.7e-05, 0.0, 0.0, 0.000104, 3e-05, 6.6e-05, 6.3e-05, 5.5e-05, 3.6e-05, 4e-05, 6.7e-05, 4e-05, 4e-05, 6.7e-05, 4.8e-05, 4.8e-05, 3.7e-05, 3.7e-05, 6.7e-05, 3.6e-05, 5.5e-05, 6.3e-05, 6.3e-05, 6.4e-05, 6.4e-05, 3e-05, 4.8e-05, 4e-05, 6.7e-05, 4.8e-05, 4e-05, 4e-05, 3.7e-05, 3.7e-05, 5.9e-05, 3.1e-05, 5.9e-05, 5.9e-05, 5.9e-05, 5.9e-05, 4.2e-05, 5.9e-05, 3.7e-05, 4e-05, 3.6e-05, 5.7e-05, 5.7e-05, 3.6e-05, 4e-05, 6.7e-05, 4.8e-05, 3.7e-05, 4.8e-05, 3.7e-05, 3.7e-05, 3.1e-05, 3.1e-05, 5.9e-05, 5.9e-05, 5.9e-05, 5.9e-05, 5.9e-05, 3.1e-05, 4.8e-05, 6.7e-05, 6.7e-05, 3.6e-05, 4.8e-05, 5.5e-05, 3e-05, 6.3e-05, 6.4e-05, 6.4e-05, 4.8e-05, 3.6e-05, 4e-05, 4e-05, 3.6e-05, 4.8e-05, 4.8e-05, 4.7e-05, 5.7e-05, 4e-05, 3.7e-05, 5.9e-05, 4.2e-05, 4.2e-05, 5.9e-05, 5.9e-05, 3.7e-05, 4e-05, 5.7e-05, 5.5e-05, 4.7e-05, 4.7e-05, 4.8e-05, 4.7e-05, 4e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4.8e-05, 6.7e-05, 6.7e-05, 3.7e-05, 3.1e-05, 3.1e-05, 3.1e-05, 3.7e-05, 3.7e-05, 4.8e-05, 6.7e-05, 6.5e-05, 4e-05, 6.7e-05, 4e-05, 4.7e-05, 3e-05, 6.3e-05, 6.4e-05, 6.4e-05, 6.3e-05, 3e-05, 4.8e-05, 5.5e-05, 4.7e-05, 5.7e-05, 4e-05, 4e-05, 6.7e-05, 3.7e-05, 3.1e-05, 3.1e-05, 3.1e-05, 3.1e-05, 4.8e-05, 6.7e-05, 4e-05, 4.8e-05, 6.4e-05, 3e-05, 0.000104, 6.7e-05, 0.0, 0.0, 0.0, 7e-06, 0.000104, 3e-05, 6.3e-05, 4.8e-05, 5.7e-05, 6.7e-05, 3.1e-05, 4.2e-05, 4.2e-05, 4.2e-05, 5.9e-05, 5.9e-05, 4.2e-05, 5.9e-05, 3.1e-05, 6.7e-05, 3.6e-05, 6.3e-05, 5.7e-05, 3e-05, 5.7e-05, 6.4e-05, 5.5e-05, 4.8e-05, 5.5e-05, 3.6e-05, 4.8e-05, 3.7e-05, 5.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.2e-05, 5.9e-05, 5.9e-05, 5.9e-05, 3.7e-05, 6.7e-05, 4e-05, 4.8e-05, 5.7e-05, 6.3e-05, 4.8e-05, 3.6e-05, 4e-05, 4e-05, 4e-05, 6.7e-05, 3.7e-05, 3.1e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.9e-05, 4.9e-05, 5.9e-05, 3.1e-05, 6.7e-05, 5.7e-05, 6.3e-05, 5.7e-05, 6.4e-05, 6.3e-05, 4.8e-05, 4.7e-05, 4.7e-05, 3.6e-05, 4.7e-05, 3.6e-05, 6.7e-05, 3.1e-05, 3.7e-05, 3.1e-05, 4.2e-05, 5.9e-05, 5.9e-05, 5.9e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.2e-05, 3.1e-05, 4.8e-05, 4e-05, 4e-05, 5.7e-05, 3.6e-05, 4e-05, 4.8e-05, 3.7e-05, 3.7e-05, 3.1e-05, 5.6e-05, 4.2e-05, 4.2e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 4.9e-05, 5.9e-05, 4.8e-05, 5.7e-05, 3e-05, 6.5e-05, 3e-05, 4e-05, 7e-06, 0.000104, 7e-06, 0.000104, 0.000104, 6.6e-05, 4.8e-05, 6.7e-05, 5.9e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 4.2e-05, 4.2e-05, 5.9e-05, 3.1e-05, 3.7e-05, 6.7e-05, 5.7e-05, 5.5e-05, 6.6e-05, 3e-05, 5.7e-05, 6.6e-05, 6.3e-05, 4.8e-05, 4e-05, 3.1e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 4.2e-05, 5.9e-05, 3.1e-05, 4.8e-05, 3.6e-05, 3e-05, 6.3e-05, 3e-05, 6.3e-05, 6.6e-05, 6.6e-05, 3.4e-05, 0.000104, 3.4e-05, 3.4e-05, 6.4e-05, 4.7e-05, 3.6e-05, 6.7e-05, 3.7e-05, 3.7e-05, 3.1e-05, 3.1e-05, 5.9e-05, 4.2e-05, 4.2e-05, 4.2e-05, 5.9e-05, 5.9e-05, 3.7e-05, 4.8e-05, 6.7e-05, 6.7e-05, 4e-05, 4e-05, 4e-05, 4e-05, 4e-05, 6.7e-05, 3.7e-05, 3.1e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.2e-05, 3.2e-05, 4e-05, 4.8e-05, 6.3e-05, 6.4e-05, 6.4e-05, 6.4e-05, 6.4e-05, 6.4e-05, 6.3e-05, 4.7e-05, 4.8e-05, 3.1e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 5.9e-05, 4.8e-05, 3.6e-05, 6.3e-05, 5.7e-05, 3.4e-05, 3e-05, 4.8e-05, 4e-05, 4e-05, 4e-05, 4e-05, 4e-05, 4e-05, 4.8e-05, 4.8e-05, 4.8e-05, 3.1e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.2e-05, 4.2e-05, 5.9e-05, 3.7e-05, 3.7e-05, 6.7e-05, 4e-05, 3e-05, 3.4e-05, 0.000104, 0.000104, 7e-06, 0.000104, 3e-05, 6.3e-05, 4.8e-05, 5.7e-05, 4e-05, 6.7e-05, 6.7e-05, 4.8e-05, 4.8e-05, 3.1e-05, 5.9e-05, 5.9e-05, 3.1e-05, 4.8e-05, 4e-05, 4e-05, 4e-05, 4e-05, 5.7e-05, 4.7e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4.7e-05, 4e-05, 4e-05, 4.8e-05, 4.8e-05, 3.7e-05, 3.1e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.2e-05, 3.1e-05, 6.7e-05, 4.7e-05, 6.3e-05, 6.6e-05, 6.6e-05, 6.6e-05, 6.6e-05, 3e-05, 4.7e-05, 5.7e-05, 4e-05, 4.8e-05, 3.7e-05, 3.1e-05, 3.1e-05, 5.9e-05, 4.9e-05, 4.9e-05, 4.2e-05, 5.6e-05, 5.9e-05, 4.2e-05, 5.9e-05, 3.7e-05, 4e-05, 3e-05, 3e-05, 3.4e-05, 0.000104, 7e-06, 9.8e-05, 0.000104, 6.4e-05, 4.8e-05, 5.7e-05, 4e-05, 3.7e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.2e-05, 5.9e-05, 3.1e-05, 4.8e-05, 6.7e-05, 4.8e-05, 4e-05, 4e-05, 6.7e-05, 6.7e-05, 4.8e-05, 6.7e-05, 4e-05, 6.7e-05, 4.8e-05, 3.1e-05, 5.9e-05, 4.2e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 4.9e-05, 5.9e-05, 3.1e-05, 3.7e-05, 4.8e-05, 4e-05, 6.7e-05, 4.8e-05, 3.7e-05, 3.7e-05, 3.7e-05, 3.1e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, -2.3e-05, -2.3e-05, -2.3e-05, 4.5e-05, 4.2e-05, 3.1e-05, 4e-05, 4.7e-05, 3e-05, 6.6e-05, 6.6e-05, 6.6e-05, 6.4e-05, 4.8e-05, 5.7e-05, 3.6e-05, 4.8e-05, 4.8e-05, 3.7e-05, 3.1e-05, 3.1e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 5.9e-05, 3.7e-05, 6.7e-05, 3.6e-05, 5.7e-05, 5.5e-05, 6.6e-05, 5.7e-05, 3.4e-05, 0.000104, 0.000104, 5.7e-05, 5.5e-05, 6.7e-05, 3.1e-05, 4.2e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 4.9e-05, 4.2e-05, 5.9e-05, 3.1e-05, 6.7e-05, 3.6e-05, 5.7e-05, 5.7e-05, 4.8e-05, 4.7e-05, 4.7e-05, 4.7e-05, 4e-05, 4.8e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.5e-05, -2.3e-05, -2.3e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 4.2e-05, 3.1e-05, 6.7e-05, 4e-05, 4e-05, 5.7e-05, 5.7e-05, 3.6e-05, 3.6e-05, 3.6e-05, 4e-05, 6.7e-05, 3.7e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 4.2e-05, 5.9e-05, 3.1e-05, 3.7e-05, 4.8e-05, 4.8e-05, 6.7e-05, 3.6e-05, 5.7e-05, 5.7e-05, 5.7e-05, 4.7e-05, 4.8e-05, 3e-05, 5.5e-05, 4.7e-05, 5.7e-05, 5.7e-05, 3.6e-05, 4.8e-05, 3.1e-05, 3.1e-05, 5.9e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 5.9e-05, 3.7e-05, 4.8e-05, 6.7e-05, 6.7e-05, 4e-05, 4e-05, 4e-05, 4e-05, 4e-05, 4e-05, 6.7e-05, 4.8e-05, 3.1e-05, 5.9e-05, 3.1e-05, 3.7e-05, 3.1e-05, 5.9e-05, 3.1e-05, 3.1e-05, 4.8e-05, 3.1e-05, 3.7e-05, 3.7e-05, 4.8e-05, 4e-05, 3.6e-05, 4e-05, 3.6e-05, 5.7e-05, 4.7e-05, 5.7e-05, 3.6e-05, 6.7e-05, 3.7e-05, 3.7e-05, 3.1e-05, 4.2e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 4.9e-05, 4.2e-05, 3.1e-05, 3.6e-05, 5.5e-05, 6.3e-05, 6.6e-05, 6.6e-05, 3e-05, 4.7e-05, 4e-05, 4e-05, 6.7e-05, 6.7e-05, 4e-05, 4e-05, 4.8e-05, 5.9e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.2e-05, 4.2e-05, 4.2e-05, 3.7e-05, 5.7e-05, 3e-05, 6.4e-05, 6.6e-05, 3e-05, 6.6e-05, 5.5e-05, 4e-05, 4e-05, 3.6e-05, 6.7e-05, 4.8e-05, 3.1e-05, 3.1e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.2e-05, 5.9e-05, 4.8e-05, 4e-05, 5.5e-05, 6.4e-05, 6.6e-05, 6.6e-05, 6.3e-05, 4.8e-05, 4.7e-05, 3.6e-05, 4e-05, 6.7e-05, 6.7e-05, 3.7e-05, 4.2e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.2e-05, 4.2e-05, 3.1e-05, 6.7e-05, 5.7e-05, 4.7e-05, 3e-05, 6.4e-05, 6.3e-05, 6.4e-05, 6.3e-05, 4.7e-05, 3.6e-05, 4e-05, 4.8e-05, 3.7e-05, 4.8e-05, 3.1e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.2e-05, 3.1e-05, 4e-05, 3e-05, 7e-06, 9.8e-05, 6.7e-05, 0.0, 9.6e-05, 5e-05, 5e-05, 5e-05, 5e-05, 3.5e-05, 0.0, 6.7e-05, 3.4e-05, 5.7e-05, 3e-05, 4.8e-05, 3.6e-05, 3.6e-05, 4e-05, 4e-05, 4e-05, 4e-05, 6.7e-05, 4e-05, 3.6e-05, 4.7e-05, 5.5e-05, 6.4e-05, 6.6e-05, 5.7e-05, 5.7e-05, 6.4e-05, 5.5e-05, 4.7e-05, 4.7e-05, 3.6e-05, 4e-05, 6.7e-05, 6.7e-05, 4.8e-05, 3.1e-05, 5.9e-05, 5.9e-05, 4.2e-05, 4.2e-05, 5.9e-05, 3.7e-05, 3.6e-05, 6.6e-05, 7e-06, 0.0, 6.7e-05, 7e-06, 0.000104, 3e-05, 6.4e-05, 5.5e-05, 5.7e-05, 4e-05, 6.7e-05, 3.7e-05, 3.1e-05, 5.9e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.9e-05, 4.9e-05, 5.9e-05, 6.7e-05, 3.6e-05, 6.3e-05, 6.6e-05, 3.4e-05, 0.000104, 9.8e-05, 6.7e-05, 0.000104, 6.3e-05, 5.7e-05, 4e-05, 4.8e-05, 3.7e-05, 3.7e-05, 3.7e-05, 5.9e-05, 5.9e-05, 4.2e-05, 4.2e-05, 5.9e-05, 3.7e-05, 4.8e-05, 4.8e-05, 3.7e-05, 4.8e-05, 4e-05, 5.5e-05, 6.6e-05, 3.4e-05, 0.000104, 3.4e-05, 3.4e-05, 3.4e-05, 6.6e-05, 3e-05, 4.7e-05, 3.6e-05, 4e-05, 6.7e-05, 3.7e-05, 3.1e-05, 3.1e-05, 5.9e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 3.1e-05, 3.7e-05, 4e-05, 4.7e-05, 3e-05, 5.5e-05, 4.8e-05, 4.8e-05, 4.8e-05, 3.6e-05, 3.6e-05, 4e-05, 6.7e-05, 3.7e-05, 3.1e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 5.9e-05, 4e-05, 4.8e-05, 6.4e-05, 0.000104, 9.6e-05, 3.5e-05, 5e-05, 5e-05, 5e-05, 3.5e-05, 3.5e-05, 9.8e-05, 5.5e-05, 6.7e-05, 3.1e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 5.9e-05, 4.8e-05, 6.7e-05, 6.7e-05, 3.6e-05, 3e-05, 3.4e-05, 9.6e-05, 3.5e-05, 3.5e-05, 3.5e-05, 6.7e-05, 7e-06, 9.8e-05, 9.8e-05, 3.4e-05, 5.7e-05, 3.4e-05, 3e-05, 3e-05, 6.4e-05, 4.7e-05, 4.8e-05, 5.5e-05, 3e-05, 3e-05, 4.7e-05, 3.6e-05, 4e-05, 4e-05, 4.7e-05, 5.5e-05, 3e-05, 6.4e-05, 5.7e-05, 3.4e-05, 7e-06, 7e-06, 0.0, 6.7e-05, 5.7e-05, 6.3e-05, 3.6e-05, 4.8e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.9e-05, 3.1e-05, 6.7e-05, 5.7e-05, 6.4e-05, 3.4e-05, 0.000104, 7e-06, 9.8e-05, 9.8e-05, 5.7e-05, 6.3e-05, 3e-05, 4.8e-05, 4.8e-05, 3.1e-05, 5.9e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 4.9e-05, 4.9e-05, 5.9e-05, 3.1e-05, 3.7e-05, 3.6e-05, 3e-05, 3.4e-05, 3.4e-05, 5.7e-05, 3e-05, 3.4e-05, 6.6e-05, 5.7e-05, 6.7e-05, 3.7e-05, 3.1e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 3.1e-05, 6.7e-05, 4.7e-05, 6.6e-05, 3e-05, 3.4e-05, 3e-05, 3e-05, 4.8e-05, 5.5e-05, 3e-05, 5.5e-05, 4e-05, 3.7e-05, 4.2e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 5.9e-05, 4.8e-05, 4.7e-05, 4.7e-05, 5.5e-05, 6.3e-05, 6.6e-05, 3e-05, 4.8e-05, 4.8e-05, 4.7e-05, 5.5e-05, 5.7e-05, 6.6e-05, 5.5e-05, 4e-05, 4.8e-05, 5.9e-05, 5.9e-05, 4.2e-05, 4.2e-05, 4.9e-05, 4.2e-05, 4.9e-05, 5.9e-05, 3.7e-05, 4.8e-05, 6.7e-05, 5.7e-05, 5.5e-05, 5.5e-05, 4.7e-05, 4.7e-05, 5.7e-05, 4e-05, 3.6e-05, 4e-05, 6.7e-05, 4.8e-05, 3.7e-05, 3.1e-05, 5.9e-05, 5.9e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 5.9e-05, 4.8e-05, 4e-05, 5.5e-05, 5.7e-05, 0.000104, 7e-06, 1.5e-05, 9.8e-05, 6.7e-05, 0.0, 3.4e-05, 3.4e-05, 3.4e-05, 3e-05, 5.7e-05, 3e-05, 4.8e-05, 4.7e-05, 6.7e-05, 3.1e-05, 3.1e-05, 5.9e-05, 3.7e-05, 4.8e-05, 4e-05, 5.7e-05, 6.3e-05, 3.4e-05, 7e-06, 6.7e-05, 3.5e-05, 3.5e-05, 3.5e-05, 9.6e-05, 3.5e-05, 9.6e-05, 0.000104, 6.6e-05, 5.7e-05, 3.7e-05, 3.1e-05, 5.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.2e-05, 5.9e-05, 3.1e-05, 6.7e-05, 4e-05, 5.7e-05, 4.7e-05, 5.5e-05, 6.4e-05, 3e-05, 3e-05, 3e-05, 5.7e-05, 3e-05, 5.5e-05, 5.5e-05, 3.6e-05, 4.8e-05, 3.1e-05, 4.2e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.2e-05, 3.1e-05, 4e-05, 6.3e-05, 3e-05, 3.4e-05, 7e-06, 9.8e-05, 7e-06, 3.4e-05, 3e-05, 4.7e-05, 5.7e-05, 3.6e-05, 6.7e-05, 4.8e-05, 3.7e-05, 3.7e-05, 3.1e-05, 4.2e-05, 5.9e-05, 5.9e-05, 3.1e-05, 6.7e-05, 3.6e-05, 4.7e-05, 3e-05, 0.000104, 9.6e-05, 5e-05, 6.9e-05, 6.9e-05, 6.9e-05, 5.2e-05, 3.5e-05, 3.4e-05, 3e-05, 6.3e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4.7e-05, 4e-05, 4e-05, 6.7e-05, 4.8e-05, 6.7e-05, 4e-05, 5.7e-05, 4.8e-05, 6.3e-05, 0.000104, 9.6e-05, 5e-05, 6.8e-05, 6.8e-05, 5e-05, 3.5e-05, 6.7e-05, 5.7e-05, 6.6e-05, 3e-05, 3e-05, 5.7e-05, 4e-05, 4e-05, 4.8e-05, 4.8e-05, 4e-05, 4.7e-05, 4.8e-05, 4.8e-05, 4.8e-05, 3e-05, 5.7e-05, 9.8e-05, 9.6e-05, 5e-05, 0.0, 0.000104, 0.0, 0.0, 9.6e-05, 3.5e-05, 6.9e-05, 5e-05, 5e-05, 5e-05, 9.6e-05, 9.8e-05, 5.7e-05, 6.3e-05, 4.8e-05, 5.7e-05, 3.6e-05, 4.8e-05, 6.4e-05, 6.6e-05, 3.4e-05, 9.8e-05, 0.0, 0.0, 6.7e-05, 7e-06, 3e-05, 3.4e-05, 6.6e-05, 6.3e-05, 6.4e-05, 5.7e-05, 9.8e-05, 9.8e-05, 6.7e-05, 0.0, 0.0, 9.6e-05, 0.0, 9.8e-05, 7e-06, 0.000104, 0.000104, 9.8e-05, 6.7e-05, 0.0, 3.5e-05, 3.5e-05, 9.6e-05, 9.6e-05, 3.5e-05, 5e-05, 6.9e-05, 6.9e-05, 5e-05, 3.5e-05, 9.6e-05, 6.7e-05, 5.7e-05, 5.5e-05, 3.6e-05, 4e-05, 4.8e-05, 5.6e-05, 4.2e-05, 4.9e-05, 4.2e-05, 3.7e-05, 4e-05, 5.7e-05, 3e-05, 6.3e-05, 6.3e-05, 3e-05, 3e-05, 6.3e-05, 6.3e-05, 5.5e-05, 5.5e-05, 4.7e-05, 4e-05, 4.8e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 5.9e-05, 3.7e-05, 6.7e-05, 3.6e-05, 3e-05, 6.3e-05, 6.3e-05, 5.7e-05, 6.6e-05, 6.3e-05, 3e-05, 4.8e-05, 4e-05, 3.7e-05, 5.9e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.5e-05, -2.3e-05, -2.3e-05, -2.3e-05, 4.5e-05, 4.9e-05, 5.9e-05, 4e-05, 3e-05, 5.7e-05, 3e-05, 3e-05, 3e-05, 5.7e-05, 6.4e-05, 6.4e-05, 6.4e-05, 3e-05, 4.7e-05, 3.6e-05, 6.7e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.2e-05, 3.1e-05, 3.6e-05, 6.3e-05, 3e-05, 0.000104, 3.4e-05, 0.000104, 0.000104, 6.5e-05, 6.3e-05, 4.7e-05, 6.7e-05, 3.1e-05, 3.7e-05, 3.7e-05, 3.1e-05, 5.9e-05, 5.9e-05, 5.9e-05, 4.2e-05, 5.9e-05, 4.2e-05, 4.2e-05, 3.1e-05, 4e-05, 4.7e-05, 6.3e-05, 5.7e-05, 3e-05, 3.4e-05, 3.4e-05, 0.000104, 5.7e-05, 6.4e-05, 6.4e-05, 6.6e-05, 3e-05, 4e-05, 4.8e-05, 5.9e-05, 5.9e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 3.1e-05, 3.1e-05, 6.7e-05, 5.6e-05, 3e-05, 5.7e-05, 3.4e-05, 7e-06, 7e-06, 7e-06, 7e-06, 9.8e-05, 7e-06, 6.7e-05, 6.7e-05, 0.000104, 3e-05, 5.7e-05, 6.7e-05, 3.7e-05, 5.9e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 5.9e-05, 4.8e-05, 4.8e-05, 3e-05, 0.000104, 7e-06, 9.8e-05, 9.8e-05, 9.8e-05, 9.8e-05, 7e-06, 0.000104, 7e-06, 3.4e-05, 6.6e-05, 3e-05, 4.7e-05, 3.6e-05, 4e-05, 4e-05, 4.8e-05, 3.7e-05, 3.1e-05, 3.1e-05, 3.7e-05, 6.7e-05, 4e-05, 5.7e-05, 4.7e-05, 5.5e-05, 6.4e-05, 5.7e-05, 3e-05, 6.6e-05, 3e-05, 4.8e-05, 4.8e-05, 4.7e-05, 5.7e-05, 4e-05, 4e-05, 3.7e-05, 4.2e-05, 4.2e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 4.2e-05, 3.7e-05, 5.7e-05, 6.3e-05, 5.7e-05, 3e-05, 3e-05, 0.000104, 3e-05, 6.4e-05, 6.3e-05, 5.5e-05, 3.8e-05, 6.7e-05, 3.7e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.2e-05, 3.1e-05, 6.7e-05, 4.8e-05, 6.6e-05, 0.000104, 9.8e-05, 6.7e-05, 9.8e-05, 7e-06, 9.8e-05, 9.8e-05, 6.4e-05, 5.5e-05, 4e-05, 4.8e-05, 6.7e-05, 5.7e-05, 5.7e-05, 4e-05, 4e-05, 4e-05, 3.6e-05, 3.6e-05, 5.7e-05, 4.7e-05, 5.5e-05, 6.6e-05, 3e-05, 0.000104, 6.3e-05, 6.4e-05, 6.4e-05, 6.4e-05, 6.4e-05, 6.3e-05, 4.8e-05, 4.8e-05, 4.7e-05, 4.8e-05, 4.7e-05, 4e-05, 4.8e-05, 5.9e-05, 4.2e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.2e-05, 4.2e-05, 5.9e-05, 4.8e-05, 4e-05, 3.6e-05, 5.7e-05, 3.6e-05, 3.6e-05, 3.6e-05, 4e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4.8e-05, 3.7e-05, 3.1e-05, 3.1e-05, 3.7e-05, 4.8e-05, 4.8e-05, 4.8e-05, 6.7e-05, 4e-05, 4e-05, 4.8e-05, 6.7e-05, 6.7e-05, 4e-05, 4e-05, 3.6e-05, 4.7e-05, 4.8e-05, 5.5e-05, 5.5e-05, 3e-05, 5.5e-05, 4.7e-05, 4e-05, 6.7e-05, 4.8e-05, 3.7e-05, 3.1e-05, 5.9e-05, 5.9e-05, 5.9e-05, 5.9e-05, 3.1e-05, 6.7e-05, 5.7e-05, 6.4e-05, 7e-06, 6.7e-05, 3.5e-05, 6.8e-05, 6.9e-05, 3.5e-05, 9.6e-05, 9.6e-05, 9.6e-05, 0.0, 6.6e-05, 5.5e-05, 3.6e-05, 6.7e-05, 3.7e-05, 3.1e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.2e-05, 5.9e-05, 6.7e-05, 5.7e-05, 6.3e-05, 3.4e-05, 6.7e-05, 9.6e-05, 9.6e-05, 6.7e-05, 9.8e-05, 9.8e-05, 7e-06, 6.4e-05, 4.7e-05, 4e-05, 3.7e-05, 5.9e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 5.9e-05, 3.7e-05, 4e-05, 5.7e-05, 4.7e-05, 5.5e-05, 6.4e-05, 7e-06, 0.0, 9.8e-05, 7e-06, 9.8e-05, 7e-06, 3e-05, 6.3e-05, 3.6e-05, 3.7e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.2e-05, 5.9e-05, 4.8e-05, 5.7e-05, 6.6e-05, 0.000104, 0.0, 6.7e-05, 9.8e-05, 9.8e-05, 7e-06, 0.000104, 5.7e-05, 6.4e-05, 6.3e-05, 4.7e-05, 4.8e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 4.2e-05, 3.2e-05, 3.6e-05, 4.7e-05, 4.8e-05, 4.8e-05, 5.5e-05, 5.5e-05, 4.8e-05, 3.6e-05, 6.7e-05, 6.7e-05, 4e-05, 6.7e-05, 3.7e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.9e-05, 3.1e-05, 4.8e-05, 4e-05, 3.6e-05, 4.7e-05, 4.7e-05, 5.7e-05, 5.7e-05, 4e-05, 6.7e-05, 4.8e-05, 6.7e-05, 6.7e-05, 4.8e-05, 4.8e-05, 3.7e-05, 3.1e-05, 5.9e-05, 4.2e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.2e-05, 3.1e-05, 4e-05, 3e-05, 3.4e-05, 9.6e-05, 5e-05, 6.8e-05, 6.9e-05, 3.5e-05, 3.5e-05, 0.0, 0.0, 0.0, 6.7e-05, 5.7e-05, 4.8e-05, 4e-05, 3.1e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 5.9e-05, 4.8e-05, 4e-05, 4.8e-05, 7e-06, 3.5e-05, 6.7e-05, 3e-05, 0.000104, 3.4e-05, 3e-05, 3e-05, 3.4e-05, 6.6e-05, 6.4e-05, 4.8e-05, 4e-05, 3.1e-05, 5.9e-05, 5.9e-05, 5.9e-05, 3.1e-05, 3.1e-05, 3.1e-05, 3.1e-05, 3.7e-05, 4.8e-05, 4e-05, 6.4e-05, 7e-06, 6.7e-05, 9.8e-05, 9.8e-05, 9.8e-05, 7e-06, 7e-06, 7e-06, 7e-06, 3.4e-05, 5.7e-05, 6.6e-05, 5.7e-05, 5.7e-05, 4.7e-05, 4.8e-05, 5.9e-05, 4.2e-05, 4.2e-05, 5.9e-05, 4.8e-05, 4e-05, 4.7e-05, 6.6e-05, 7e-06, 6.7e-05, 0.0, 0.0, 0.0, 7e-06, 3e-05, 5.5e-05, 4.7e-05, 4.7e-05, 5.7e-05, 6.7e-05, 4.8e-05, 4.8e-05, 3.7e-05, 3.7e-05, 3.7e-05, 4.8e-05, 6.7e-05, 4e-05, 4.7e-05, 5.7e-05, 0.0, 5e-05, 5.2e-05, 6.9e-05, 5e-05, 5e-05, 3.5e-05, 9.6e-05, 7e-06, 6.7e-05, 0.0, 6.7e-05, 6.7e-05, 7e-06, 3e-05, 6.6e-05, 3e-05, 5.7e-05, 6.7e-05, 3.7e-05, 3.1e-05, 4.8e-05, 3.6e-05, 6.3e-05, 7e-06, 3.5e-05, 6.9e-05, 6.6e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.5e-05, 0.000104, 6.6e-05, 6.4e-05, 3e-05, 4.7e-05, 5.7e-05, 5.7e-05, 3.6e-05, 4e-05, 6.7e-05, 4e-05, 4e-05, 3.6e-05, 4.7e-05, 6.4e-05, 5.7e-05, 7e-06, 6.9e-05, 4.1e-05, 4.1e-05, 6.6e-05, 4.1e-05, 4.1e-05, 4.1e-05, 6.8e-05, 3.5e-05, 9.6e-05, 5e-05, 6.9e-05, 6.9e-05, 9.6e-05, 0.000104, 6.6e-05, 5.5e-05, 5.7e-05, 5.7e-05, 4e-05, 3.6e-05, 4.7e-05, 3e-05, 3.4e-05, 0.0, 3.5e-05, 6.9e-05, 6.9e-05, 6.8e-05, 6.8e-05, 6.8e-05, 6.8e-05, 6.6e-05, 4.1e-05, 3.5e-05, 9.8e-05, 3.4e-05, 5.7e-05, 0.000104, 6.7e-05, 3.5e-05, 7e-06, 6.4e-05, 6.3e-05, 6.6e-05, 7e-06, 0.0, 9.6e-05, 9.6e-05, 5e-05, 6.8e-05, 6.8e-05, 6.8e-05, 6.9e-05, 6.9e-05, 6.8e-05, 6.9e-05, 9.6e-05, 6.7e-05, 3e-05, 6.6e-05, 6.4e-05, 4.8e-05, 4.7e-05, 3.6e-05, 4e-05, 6.7e-05, 3.7e-05, 3.7e-05, 4.8e-05, 4e-05, 6.3e-05, 9.6e-05, 6.4e-05, 4.9e-05, 5.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 5.5e-05, 4.9e-05, 4.9e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 5.8e-05, 4.5e-05, 4.5e-05, 5.8e-05, 6.6e-05, 5e-05, 0.000104, 7e-06, 6.8e-05, 5.5e-05, 5.5e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.1e-05, 6.6e-05, 6.9e-05, 5e-05, 3.5e-05, 6.7e-05, 9.8e-05, 9.8e-05, 7e-06, 3e-05, 6.6e-05, 5.5e-05, 5.7e-05, 6.7e-05, 3.7e-05, 3.7e-05, 3.7e-05, 4e-05, 3e-05, 0.000104, 3.5e-05, 6.8e-05, 6.6e-05, 6.6e-05, 6.6e-05, 6.6e-05, 6.9e-05, 0.0, 9.8e-05, 0.000104, 6.6e-05, 5.7e-05, 4e-05, 4e-05, 6.7e-05, 4.8e-05, 3.7e-05, 3.1e-05, 3.1e-05, 3.7e-05, 4e-05, 5.7e-05, 6.4e-05, 7e-06, 9.6e-05, 6.7e-05, 9.6e-05, 0.0, 6.7e-05, 3.4e-05, 3e-05, 3e-05, 5.7e-05, 3e-05, 3.4e-05, 3.4e-05, 3e-05, 5.7e-05, 3.6e-05, 4e-05, 6.7e-05, 5e-05, 4.8e-05, 4e-05, 4.8e-05, 4.8e-05, 4.7e-05, 4.7e-05, 6.6e-05, 7e-06, 0.000104, 0.000104, 0.0, 5e-05, 3.5e-05, 3.5e-05, 5e-05, 6.9e-05, 6.9e-05, 7e-06, 6.6e-05, 4.8e-05, 3.6e-05, 4e-05, 4e-05, 6.7e-05, 4e-05, 5.7e-05, 5.7e-05, 9.6e-05, 6.9e-05, 4.9e-05, 5.5e-05, 4.5e-05, 5.5e-05, 5.5e-05, 5.5e-05, 4.9e-05, 4.9e-05, 4.9e-05, 5.5e-05, 4.9e-05, 3.5e-05, 0.000104, 3e-05, 6.4e-05, 5.5e-05, 4.7e-05, 4e-05, 4e-05, 4e-05, 4e-05, 5.5e-05, 6.6e-05, 9.8e-05, 5e-05, 5e-05, 5e-05, 6.8e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.9e-05, 5.5e-05, 4.1e-05, 6.8e-05, 6.7e-05, 6.3e-05, 4e-05, 6.7e-05, 3.1e-05, 5.9e-05, 4.2e-05, 5.9e-05, 3.1e-05, 3.7e-05, 3.7e-05, 4e-05, 4.7e-05, 6.3e-05, 6.6e-05, 6.6e-05, 6.4e-05, 3e-05, 5.5e-05, 5.7e-05, 5.7e-05, 4.8e-05, 3.6e-05, 3.6e-05, 3.6e-05, 3.6e-05, 3.6e-05, 4e-05, 6.7e-05, 4.8e-05, 4.8e-05, 4.8e-05, 6.7e-05, 4.7e-05, 3.4e-05, 3.5e-05, 5e-05, 6.6e-05, 5.5e-05, 4.1e-05, 5e-05, 3.5e-05, 9.8e-05, 3.4e-05, 5.7e-05, 6.6e-05, 3.4e-05, 0.0, 5e-05, 6.6e-05, 6.9e-05, 0.0, 3.4e-05, 5.7e-05, 6.4e-05, 3.4e-05, 7e-06, 3e-05, 0.000104, 3.5e-05, 6.6e-05, 5.5e-05, 4.9e-05, 6.6e-05, 4.9e-05, 5.5e-05, 5.5e-05, 6.8e-05, 3.5e-05, 9.6e-05, 5e-05, 6.9e-05, 6.8e-05, 6.9e-05, 6.9e-05, 6.9e-05, 6.8e-05, 6.8e-05, 6.8e-05, 6.8e-05, 6.8e-05, 6.6e-05, 4.9e-05, 4.9e-05, 4.9e-05, 5.5e-05, 4.9e-05, 4.9e-05, 4.9e-05, 5.5e-05, 5.5e-05, 6.7e-05, 6.9e-05, 6.8e-05, 6.8e-05, 6.6e-05, 6.9e-05, 5e-05, 3.5e-05, 9.8e-05, 0.000104, 5.7e-05, 5.5e-05, 4e-05, 4.8e-05, 6.7e-05, 4e-05, 4.7e-05, 3e-05, 6.3e-05, 6.5e-05, 2.4e-05, 5.9e-05, 4.8e-05, 4.4e-05, 3.5e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 6.3e-05, 6.3e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.5e-05, 4.4e-05, 5.9e-05, 6.3e-05, 5.7e-05, 3.1e-05, 3.1e-05, 3.1e-05, 0.000102, 8e-06, 0.000105, 3.7e-05, 1e-06, 9.3e-05, 3.7e-05, 9.3e-05, 6.4e-05, 0.000102, 5.7e-05, 6.3e-05, 6.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.5e-05, 4.4e-05, 4.8e-05, 2.4e-05, 6.8e-05, 5.7e-05, 3e-05, 3e-05, 3.1e-05, 3e-05, 3.1e-05, 8e-06, 8e-06, 3e-05, 5.7e-05, 6.3e-05, 6.5e-05, 6.5e-05, 2.4e-05, 4.8e-05, 4.1e-05, 6.3e-05, 6.3e-05, 4.1e-05, 4.8e-05, 6.3e-05, 8e-06, 9.3e-05, 4.9e-05, 6.7e-05, 6.7e-05, 3.7e-05, 0.000105, 0.000102, 0.000102, 0.000102, 5.7e-05, 5.9e-05, 4.4e-05, 6.1e-05, 4.1e-05, 4.1e-05, 6.3e-05, 4.8e-05, 4.8e-05, 6.3e-05, 5.9e-05, 0.000105, 4.9e-05, 7.1e-05, 5.3e-05, 4.4e-05, 5.8e-05, 5.8e-05, 4.4e-05, 5e-05, 3.7e-05, 8e-06, 6.3e-05, 5.7e-05, 6.3e-05, 6.5e-05, 2.4e-05, 6.5e-05, 6.8e-05, 6.8e-05, 5.7e-05, 0.000102, 0.000102, 0.000105, 6.7e-05, 5.3e-05, 5.8e-05, 4.3e-05, 4.3e-05, 4.3e-05, 5.3e-05, 5.3e-05, 4.3e-05, 4.3e-05, 5.8e-05, 3.7e-05, 6.7e-05, 3.7e-05, 1e-06, 6.4e-05, 1e-06, 6.7e-05, 4.9e-05, 6.7e-05, 6.7e-05, 4.9e-05, 3.7e-05, 6.4e-05, 3.7e-05, 5e-05, 4.4e-05, 5.8e-05, 5.8e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 5.8e-05, 4.4e-05, 3.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 3.7e-05, 0.000102, 5.9e-05, 6.1e-05, 3.5e-05, 4.1e-05, 4.8e-05, 4.8e-05, 6.3e-05, 3.5e-05, 4.4e-05, 2.4e-05, 6.8e-05, 0.000105, 4.9e-05, 6.7e-05, 6.7e-05, 3.7e-05, 3e-05, 6.1e-05, 3.5e-05, 6.1e-05, 6.1e-05, 4.4e-05, 4.4e-05, 6.1e-05, 6e-05, 4.8e-05, 6.5e-05, 3e-05, 3e-05, 3e-05, 0.000102, 1e-06, 6.7e-05, 5e-05, 5.3e-05, 4.4e-05, 5.8e-05, 5.8e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.8e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.8e-05, 5.8e-05, 4.3e-05, 5.8e-05, 4.4e-05, 5.3e-05, 5e-05, 5.3e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.3e-05, 5.8e-05, 5.8e-05, 5.3e-05, 6.7e-05, 8e-06, 6.5e-05, 5.9e-05, 2.4e-05, 3.1e-05, 1e-06, 7.1e-05, 5e-05, 5e-05, 5.3e-05, 5e-05, 4.9e-05, 3.1e-05, 6.5e-05, 5.9e-05, 6.5e-05, 6.5e-05, 5.9e-05, 5.7e-05, 1e-06, 7.1e-05, 5e-05, 5e-05, 3.7e-05, 6.7e-05, 3.7e-05, 7.1e-05, 5.3e-05, 5.8e-05, 5.8e-05, 4.3e-05, 4.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 4.3e-05, 4.4e-05, 5.8e-05, 4.3e-05, 4.4e-05, 4.3e-05, 4.3e-05, 4.4e-05, 5e-05, 6.7e-05, 6.7e-05, 3.7e-05, 3.7e-05, 6.7e-05, 5e-05, 4.4e-05, 5.8e-05, 4.3e-05, 4.3e-05, 5.3e-05, 5.3e-05, 4.3e-05, 4.3e-05, 5.8e-05, 6.7e-05, 1e-06, 6.7e-05, 3.7e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.4e-05, 5.3e-05, 5.3e-05, 5.3e-05, 4.4e-05, 4.4e-05, 5.3e-05, 7.1e-05, 7.1e-05, 7.1e-05, 3.7e-05, 3.1e-05, 6.3e-05, 6.1e-05, 4.1e-05, 4.1e-05, 4.4e-05, 6.3e-05, 0.000102, 0.000102, 3.1e-05, 5.7e-05, 6.3e-05, 5.9e-05, 5.9e-05, 4.4e-05, 6.1e-05, 4.8e-05, 2.4e-05, 6.5e-05, 5.7e-05, 8e-06, 9.3e-05, 4.9e-05, 6.7e-05, 6.7e-05, 5e-05, 5.3e-05, 5e-05, 3.7e-05, 5e-05, 5.3e-05, 4.4e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 7.1e-05, 5.7e-05, 6.5e-05, 2.4e-05, 5.9e-05, 6.8e-05, 3.1e-05, 9.3e-05, 7.1e-05, 5.3e-05, 5e-05, 3.7e-05, 7.1e-05, 6.4e-05, 3.1e-05, 3.1e-05, 3e-05, 5.7e-05, 5.7e-05, 5.7e-05, 0.000102, 8e-06, 0.000102, 5.7e-05, 5.9e-05, 4.4e-05, 5.9e-05, 6.3e-05, 3e-05, 0.000105, 6.7e-05, 5e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5e-05, 6.7e-05, 6.4e-05, 0.000102, 0.000105, 0.000105, 9.3e-05, 3.7e-05, 5.3e-05, 5.8e-05, 4.4e-05, 5.8e-05, 5.8e-05, 5e-05, 6.7e-05, 5.3e-05, 4.4e-05, 5.8e-05, 5.8e-05, 4.3e-05, 5.3e-05, 4.3e-05, 5.8e-05, 5e-05, 3.7e-05, 5.3e-05, 7.1e-05, 1e-06, 0.000102, 3e-05, 3.1e-05, 0.000102, 3.1e-05, 3.1e-05, 3.1e-05, 3.1e-05, 0.000105, 0.000102, 3.1e-05, 9.3e-05, 7.1e-05, 5.3e-05, 4.4e-05, 5.8e-05, 5.8e-05, 4.3e-05, 5.8e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.3e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.3e-05, 5.3e-05, 5.3e-05, 4.4e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.4e-05, 5.3e-05, 5.3e-05, 5.3e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.3e-05, 4.4e-05, 4.4e-05, 5.3e-05, 5.3e-05, 5.3e-05, 3.7e-05, 4.9e-05, 3.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 7.1e-05, 7.1e-05, 6.7e-05, 4.9e-05, 3.1e-05, 4.4e-05, 4.1e-05, 3.5e-05, 6.1e-05, 4.4e-05, 2.4e-05, 6.5e-05, 5.7e-05, 1e-06, 6.7e-05, 7.1e-05, 6.7e-05, 1e-06, 6.5e-05, 4.8e-05, 5.9e-05, 4.8e-05, 4.4e-05, 4.4e-05, 5.9e-05, 2.4e-05, 2.4e-05, 2.4e-05, 5.9e-05, 3.5e-05, 4.1e-05, 4.1e-05, 6.1e-05, 5.9e-05, 3e-05, 1e-06, 4.9e-05, 6.7e-05, 7.1e-05, 4.9e-05, 8e-06, 6.8e-05, 5.7e-05, 5.7e-05, 3e-05, 3.1e-05, 3.1e-05, 3e-05, 6.8e-05, 6.5e-05, 2.4e-05, 5.9e-05, 4.8e-05, 4.4e-05, 6e-05, 4.8e-05, 3e-05, 9.3e-05, 7.1e-05, 4.4e-05, 5.8e-05, 5.3e-05, 5.3e-05, 4.4e-05, 7.1e-05, 3.7e-05, 1e-06, 0.000105, 5.7e-05, 5.9e-05, 4.4e-05, 5.9e-05, 2.4e-05, 2.4e-05, 6.8e-05, 3e-05, 8e-06, 3e-05, 6.3e-05, 3e-05, 6.3e-05, 3e-05, 1e-06, 3.7e-05, 5.3e-05, 5e-05, 5e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5e-05, 5e-05, 7.1e-05, 5e-05, 4.4e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.4e-05, 5.3e-05, 4.9e-05, 5.7e-05, 4.8e-05, 6.5e-05, 1e-06, 6.7e-05, 5.3e-05, 5.8e-05, 5.8e-05, 4.3e-05, 4.3e-05, 4.3e-05, 5.8e-05, 5.3e-05, 5e-05, 3.7e-05, 3.7e-05, 3.8e-05, 5e-05, 5.3e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.8e-05, 5.8e-05, 4.4e-05, 4.3e-05, 4.3e-05, 5.8e-05, 4.3e-05, 4.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 4.3e-05, 4.3e-05, 5.8e-05, 4.4e-05, 4.4e-05, 5.8e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.3e-05, 4.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 5.3e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 4.9e-05, 5.3e-05, 4.3e-05, 4.4e-05, 4.4e-05, 4.3e-05, 4.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 5.3e-05, 5.3e-05, 4.9e-05, 4.9e-05, 5.3e-05, 4.9e-05, 4.9e-05, 4.9e-05, 5.3e-05, 5.8e-05, 5e-05, 7.1e-05, 6.7e-05, 7.1e-05, 5.3e-05, 5.3e-05, 3.7e-05, 3.7e-05, 5e-05, 3.7e-05, 3.7e-05, 0.000102, 6.8e-05, 6.5e-05, 6.5e-05, 6.3e-05, 5.7e-05, 5.7e-05, 3e-05, 5.7e-05, 5.7e-05, 6.5e-05, 2.4e-05, 6.3e-05, 3.7e-05, 5.3e-05, 5.8e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.4e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 5.3e-05, 4.3e-05, 4.3e-05, 6.7e-05, 3.7e-05, 7.1e-05, 5.3e-05, 5.3e-05, 3.7e-05, 3.7e-05, 3.7e-05, 7.1e-05, 6.7e-05, 6.7e-05, 1e-06, 8e-06, 6.3e-05, 6.8e-05, 6.5e-05, 5.9e-05, 2.4e-05, 6.5e-05, 6.5e-05, 6.8e-05, 6.3e-05, 3e-05, 3.1e-05, 3e-05, 6.8e-05, 6.3e-05, 6.3e-05, 0.000105, 4.9e-05, 7.1e-05, 3.7e-05, 5e-05, 5e-05, 3.7e-05, 7.1e-05, 4.9e-05, 3.1e-05, 6.5e-05, 6.5e-05, 6.5e-05, 6.8e-05, 6.3e-05, 6.5e-05, 4.4e-05, 6.1e-05, 6.1e-05, 3.5e-05, 4.1e-05, 4.1e-05, 4.1e-05, 3.5e-05, 6.1e-05, 4.4e-05, 4.4e-05, 6.5e-05, 3e-05, 0.000102, 0.000102, 8e-06, 0.000102, 6.5e-05, 4.4e-05, 6.1e-05, 4.4e-05, 5.9e-05, 6.8e-05, 6.3e-05, 6.3e-05, 5.9e-05, 6.1e-05, 4.1e-05, 6.3e-05, 6.3e-05, 4.1e-05, 3.5e-05, 6.1e-05, 4.8e-05, 5.9e-05, 6.5e-05, 6.5e-05, 6.8e-05, 6.3e-05, 6.8e-05, 6.8e-05, 6.5e-05, 5.9e-05, 6.8e-05, 5.7e-05, 5.7e-05, 5.7e-05, 6.8e-05, 6.5e-05, 2.4e-05, 2.4e-05, 4.4e-05, 4.1e-05, 6.3e-05, 6.3e-05, 4.1e-05, 3.5e-05, 5.9e-05, 5.7e-05, 0.000102, 6.4e-05, 3.7e-05, 1e-06, 0.000105, 5.7e-05, 4.4e-05, 3.5e-05, 4.4e-05, 2.4e-05, 3.1e-05, 0.000105, 0.000105, 8e-06, 3.1e-05, 6.3e-05, 5.9e-05, 4.4e-05, 5.9e-05, 3e-05, 1e-06, 6.7e-05, 5e-05, 4.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 4.3e-05, 5.8e-05, 4.4e-05, 6.7e-05, 6.7e-05, 7.1e-05, 5.3e-05, 3.7e-05, 5e-05, 7.1e-05, 6.7e-05, 7.1e-05, 7.1e-05, 3.7e-05, 5.7e-05, 3e-05, 6.4e-05, 4.9e-05, 6.7e-05, 6.7e-05, 7.1e-05, 7.1e-05, 6.7e-05, 3.7e-05, 6.4e-05, 0.000105, 0.000102, 5.7e-05, 6.3e-05, 3.1e-05, 8e-06, 4.9e-05, 7.1e-05, 5e-05, 3.7e-05, 5e-05, 5e-05, 3.7e-05, 3.7e-05, 0.000102, 6.4e-05, 7.1e-05, 4.4e-05, 5.8e-05, 5.7e-05, 5.8e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 5.8e-05, 4.4e-05, 4.4e-05, 5.3e-05, 3.7e-05, 7.1e-05, 4.9e-05, 1e-06, 1e-06, 3.7e-05, 6.7e-05, 4.9e-05, 8e-06, 0.000102, 4.9e-05, 7.1e-05, 5e-05, 5e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.4e-05, 3.7e-05, 7.1e-05, 7.1e-05, 7.1e-05, 7.1e-05, 6.7e-05, 3.7e-05, 0.000105, 3.1e-05, 5.9e-05, 4.1e-05, 6.3e-05, 4.1e-05, 6.1e-05, 5.7e-05, 3e-05, 8e-06, 0.000105, 0.000105, 1e-06, 3.7e-05, 3.7e-05, 0.000102, 2.4e-05, 6.1e-05, 4.8e-05, 6.5e-05, 6.8e-05, 6.3e-05, 3.1e-05, 0.000105, 4.9e-05, 7.1e-05, 5e-05, 5e-05, 7.1e-05, 5e-05, 5.8e-05, 4.3e-05, 4.3e-05, 5.3e-05, 5.3e-05, 4.3e-05, 5.8e-05, 4.3e-05, 4.3e-05, 5.3e-05, 5.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.9e-05, 9.3e-05, 6.7e-05, 6.7e-05, 6.7e-05, 3.7e-05, 4.4e-05, 4.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 4.3e-05, 5e-05, 4.9e-05, 6.7e-05, 4.9e-05, 6.7e-05, 3.7e-05, 5.3e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5e-05, 3.7e-05, 0.000102, 8e-06, 6.7e-05, 5.8e-05, 4.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 4.3e-05, 4.3e-05, 5.8e-05, 4.3e-05, 4.3e-05, 5.3e-05, 5.3e-05, 4.3e-05, 4.3e-05, 5.8e-05, 6.7e-05, 5.9e-05, 4.1e-05, 4.1e-05, 6.1e-05, 4.8e-05, 3e-05, 4.9e-05, 6.7e-05, 7.1e-05, 5e-05, 4.4e-05, 4.3e-05, 5.8e-05, 4.4e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 4.4e-05, 5.8e-05, 5.8e-05, 4.3e-05, 4.3e-05, 4.4e-05, 1e-06, 8e-06, 6.4e-05, 6.7e-05, 3.7e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.3e-05, 5.8e-05, 5e-05, 6.4e-05, 0.000102, 8e-06, 4.9e-05, 5.3e-05, 4.4e-05, 5e-05, 5e-05, 5e-05, 5.3e-05, 4.4e-05, 5.3e-05, 3.7e-05, 6.7e-05, 1e-06, 6.7e-05, 3.7e-05, 4.4e-05, 5.8e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 5.8e-05, 5.3e-05, 6.7e-05, 4.9e-05, 6.7e-05, 7.1e-05, 7.1e-05, 3.7e-05, 9.3e-05, 9.3e-05, 6.4e-05, 5.7e-05, 4.4e-05, 4.1e-05, 6.1e-05, 2.4e-05, 0.000105, 5e-05, 5.8e-05, 4.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 4.3e-05, 7.1e-05, 6.7e-05, 6.7e-05, 5e-05, 4.4e-05, 5.3e-05, 5e-05, 7.1e-05, 4.9e-05, 6.7e-05, 4.9e-05, 8e-06, 6.4e-05, 6.7e-05, 4.4e-05, 4.4e-05, 5.8e-05, 4.3e-05, 4.3e-05, 4.3e-05, 5.3e-05, 4.3e-05, 5.8e-05, 5.3e-05, 3.7e-05, 6.7e-05, 7.1e-05, 5.3e-05, 5.8e-05, 5.8e-05, 4.4e-05, 4.4e-05, 4.4e-05, 3.7e-05, 4.8e-05, 6.3e-05, 6.3e-05, 6.3e-05, 4.1e-05, 3.5e-05, 4.8e-05, 6.3e-05, 0.000102, 9.3e-05, 6.7e-05, 7.1e-05, 3.7e-05, 1e-06, 3e-05, 3.1e-05, 6.4e-05, 9.3e-05, 6.7e-05, 5.3e-05, 5.8e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.3e-05, 6.7e-05, 3.7e-05, 4.9e-05, 6.7e-05, 6.7e-05, 6.7e-05, 3.7e-05, 5e-05, 3.7e-05, 6.7e-05, 6.7e-05, 1e-06, 0.000105, 5.7e-05, 6.5e-05, 6.8e-05, 6.5e-05, 6.5e-05, 5.7e-05, 0.000102, 0.000102, 0.000105, 8e-06, 3.1e-05, 0.000102, 9.3e-05, 3.7e-05, 9.3e-05, 6.4e-05, 0.000102, 8e-06, 6.4e-05, 0.000105, 3.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 7.1e-05, 3.7e-05, 5e-05, 5e-05, 5e-05, 3.7e-05, 6.7e-05, 3.7e-05, 3e-05, 5.9e-05, 4.8e-05, 5.9e-05, 6.5e-05, 3e-05, 3.1e-05, 5.7e-05, 5.7e-05, 3.1e-05, 1e-06, 3.7e-05, 5.3e-05, 4.4e-05, 5.8e-05, 5.8e-05, 4.4e-05, 4.4e-05, 3.7e-05, 3.7e-05, 1e-06, 8e-06, 8e-06, 1e-06, 9.3e-05, 1e-06, 3.1e-05, 5.7e-05, 3e-05, 0.000105, 0.000105, 6.4e-05, 1e-06, 3.7e-05, 7.1e-05, 4.3e-05, 4.3e-05, 5.8e-05, 5e-05, 6.7e-05, 0.000105, 0.000102, 6.4e-05, 1e-06, 1e-06, 6.7e-05, 6.7e-05, 9.3e-05, 0.000105, 3e-05, 2.4e-05, 6.3e-05, 3.1e-05, 0.000105, 6.7e-05, 5.3e-05, 4.4e-05, 5.8e-05, 5.8e-05, 4.4e-05, 3.7e-05, 7.1e-05, 6.7e-05, 9.3e-05, 8e-06, 0.000105, 4.9e-05, 1e-06, 8e-06, 0.000105, 0.000102, 5.7e-05, 6.8e-05, 5.7e-05, 6.3e-05, 6.5e-05, 3e-05, 3.1e-05, 3e-05, 8e-06, 3.7e-05, 6.7e-05, 5e-05, 5.8e-05, 4.4e-05, 4.3e-05, 4.3e-05, 4.3e-05, 5.8e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 5.8e-05, 3.7e-05, 7.1e-05, 4.9e-05, 0.000105, 0.000105, 3.7e-05, 3.7e-05, 9.3e-05, 6.7e-05, 7.1e-05, 7.1e-05, 3.7e-05, 6.7e-05, 1e-06, 6.4e-05, 4.9e-05, 6.7e-05, 9.3e-05, 0.000105, 6.4e-05, 1e-06, 3.7e-05, 3.7e-05, 6.4e-05, 4.9e-05, 7.1e-05, 5e-05, 5e-05, 5e-05, 5.3e-05, 4.4e-05, 5.3e-05, 3.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 6.7e-05, 9.3e-05, 9.3e-05, 7.1e-05, 7.1e-05, 6.7e-05, 7.1e-05, 6.7e-05, 6.7e-05, 6.7e-05, 8e-06, 6.5e-05, 5.9e-05, 5.7e-05, 8e-06, 6.4e-05, 6.7e-05, 6.7e-05, 5.3e-05, 5.8e-05, 5.8e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.3e-05, 4.3e-05, 5.8e-05, 5e-05, 4.9e-05, 3.1e-05, 6.1e-05, 4.1e-05, 4.1e-05, 3.5e-05, 4.4e-05, 4.4e-05, 2.4e-05, 5.7e-05, 9.3e-05, 6.7e-05, 5e-05, 5.3e-05, 5.3e-05, 3.7e-05, 6.7e-05, 1e-06, 3.7e-05, 4.9e-05, 6.7e-05, 7.1e-05, 6.7e-05, 6.7e-05, 6.7e-05, 5.7e-05, 3.5e-05, 4.1e-05, 6.1e-05, 5.7e-05, 1e-06, 3.7e-05, 4.4e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5.8e-05, 5e-05, 3.7e-05, 6.8e-05, 2.4e-05, 6.4e-05, 3.7e-05, 3.7e-05, 9.3e-05, 9.3e-05, 5.9e-05, 0.000102, 2.4e-05, 4.1e-05, 6.3e-05, 6.3e-05, 4.1e-05, 6.1e-05, 4.8e-05, 6.8e-05, 5.7e-05, 6.3e-05, 3.1e-05, 1e-06, 4.9e-05, 6.7e-05, 7.1e-05, 7.1e-05, 9.3e-05, 0.000105, 0.000102, 5.7e-05, 5.7e-05, 5.7e-05, 0.000102, 3.1e-05, 0.000105, 0.000105, 3.1e-05, 6.4e-05, 7.1e-05, 3.7e-05, 5.3e-05, 4.4e-05, 5e-05, 7.1e-05, 6.7e-05, 6.4e-05, 3e-05, 3e-05, 5.7e-05, 6.3e-05, 3e-05, 8e-06, 0.000102, 0.000105, 1e-06, 6.7e-05, 1e-06, 8e-06, 6.8e-05, 4.8e-05, 4.4e-05, 5.9e-05, 2.4e-05, 6.5e-05, 3e-05, 6.4e-05, 4.9e-05, 4.9e-05, 1e-06, 6.4e-05, 1e-06, 1e-06, 3.1e-05, 5.9e-05, 4.4e-05, 6.5e-05, 6.3e-05, 6.3e-05, 3.1e-05, 8e-06, 9.3e-05, 9.3e-05, 3.1e-05, 4.8e-05, 4.8e-05, 6.5e-05, 3e-05, 6.4e-05, 9.3e-05, 6.7e-05, 3.7e-05, 5e-05, 4.4e-05, 5.8e-05, 5.8e-05, 4.4e-05, 5.3e-05, 3.7e-05, 3.7e-05, 0.000105, 0.000105, 3.1e-05, 2.4e-05, 5.9e-05, 2.4e-05, 6.5e-05, 5.9e-05, 3.5e-05, 6.1e-05, 4.8e-05, 6.5e-05, 5.7e-05, 6.4e-05, 3.7e-05, 5.3e-05, 4.4e-05, 5.8e-05, 5.8e-05, 5.8e-05, 4.4e-05, 5e-05, 7.1e-05, 6.7e-05, 7.1e-05, 6.7e-05, 6.7e-05, 3.7e-05, 3.7e-05, 5e-05, 3.7e-05, 3.7e-05, 3.7e-05, 7.1e-05, 7.1e-05, 3.7e-05, 5e-05, 5.3e-05, 5e-05, 4.4e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 4.3e-05, 5.8e-05, 5.3e-05, 4.4e-05, 5.8e-05, 4.3e-05, 4.3e-05, 4.3e-05, 5.8e-05, 3.7e-05, 6.7e-05, 4.9e-05, 6.7e-05, 7.1e-05, 3.7e-05, 7.1e-05, 6.7e-05, 6.7e-05, 4.9e-05, 3e-05, 4.8e-05, 6.3e-05, 6.3e-05, 6.3e-05, 4.1e-05, 5.9e-05, 6.3e-05, 8e-06, 9.3e-05, 4.9e-05, 6.7e-05, 4.9e-05, 8e-06, 5.9e-05, 6.8e-05, 6.3e-05, 6.8e-05, 5.7e-05, 5.7e-05, 3e-05, 3.1e-05, 0.000105, 6.4e-05, 9.3e-05, 3e-05, 6.5e-05, 5.9e-05, 6.1e-05, 6.3e-05, 6.3e-05, 4.1e-05, 3.5e-05, 6.1e-05, 5.9e-05, 2.4e-05, 5.9e-05, 6.1e-05, 3.5e-05, 6.1e-05, 6.5e-05, 6.5e-05, 5.7e-05, 3.1e-05, 0.000102, 0.000102, 6.8e-05, 6.5e-05, 2.4e-05, 4.4e-05, 4.8e-05, 4.4e-05, 4.4e-05, 0.000102, 6.4e-05, 0.000102, 0.000105, 9.3e-05, 4.9e-05, 4.9e-05, 0.000102, 2.4e-05, 3.5e-05, 4.8e-05, 3e-05, 4.9e-05, 6.7e-05, 3.7e-05, 5e-05, 3.7e-05, 3.7e-05, 6.7e-05, 7.1e-05, 6.7e-05, 9.3e-05, 2.4e-05, 4.1e-05, 4.1e-05, 6.3e-05, 4.1e-05, 3.5e-05, 6.1e-05, 5.9e-05, 6.8e-05, 6.8e-05, 6.8e-05, 6.3e-05, 3.1e-05, 8e-06, 6.4e-05, 4.9e-05, 6.7e-05, 7.1e-05, 7.1e-05, 4.9e-05, 0.000105, 3e-05, 5.7e-05, 3.1e-05, 3.1e-05, 3e-05, 5.7e-05, 5.7e-05, 3.1e-05, 8e-06, 6.4e-05, 1e-06, 1e-06, 9.3e-05, 1e-06, 3.1e-05, 3e-05, 8e-06, 6.4e-05, 1e-06, 9.3e-05, 4.9e-05, 4.9e-05, 4.9e-05, 1e-06, 8e-06, 8e-06, 0.000105, 2.8e-05, 4.4e-05, 2.4e-05, 6.5e-05, 2.4e-05, 5.7e-05, 0.000102, 1e-06, 9.3e-05, 8e-06, 3e-05, 6.3e-05, 6.8e-05, 2.4e-05, 6.8e-05, 6.5e-05, 5.7e-05, 3.1e-05, 5.7e-05, 3.1e-05, 5.7e-05, 6.3e-05, 5.7e-05, 6.8e-05, 5.9e-05, 2.4e-05, 6.5e-05, 6.5e-05, 3e-05, 0.000105, 6.4e-05, 0.000105, 3e-05, 6.8e-05, 4e-05, 4.8e-05, 4.8e-05, 4.8e-05, 4.8e-05, 6.3e-05, 3.5e-05, 4.4e-05, 2.4e-05, 5.7e-05, 8e-06, 0.000105, 0.000102, 3e-05, 6.8e-05, 2.4e-05, 5.7e-05, 5.7e-05, 5.7e-05, 5.7e-05, 6.5e-05, 2.4e-05, 2.4e-05, 6.1e-05, 4.1e-05, 4.8e-05, 4.1e-05, 3.5e-05, 4.1e-05, 3.5e-05, 5.9e-05, 2.4e-05, 6.5e-05, 6.8e-05, 6.5e-05, 2.4e-05, 6.3e-05, 6.8e-05, 4.4e-05, 4.1e-05, 6.3e-05, 4.1e-05, 6.1e-05, 6.5e-05, 5.7e-05, 0.000105, 1e-06, 9.3e-05, 0.000102, 6.8e-05, 6.3e-05, 5.7e-05, 3.1e-05, 6.4e-05, 6.7e-05, 3.7e-05, 5e-05, 5e-05, 5.3e-05, 4.4e-05, 5.3e-05, 5.3e-05, 5e-05, 6.7e-05, 4.9e-05, 1e-06, 1e-06, 0.000105, 3.1e-05, 1e-06, 6.7e-05, 6.7e-05, 6.7e-05, 0.000105, 3e-05, 6.5e-05, 5.7e-05, 6.8e-05, 3e-05, 6.4e-05, 1e-06, 4.9e-05, 1e-06, 9.3e-05, 0.000102, 2.4e-05, 4.4e-05, 4.8e-05, 5.7e-05, 0.000105, 9.3e-05, 6.7e-05, 7.1e-05, 3.7e-05, 5.3e-05, 5e-05, 9.3e-05, 3.1e-05, 3.1e-05, 3e-05, 3e-05, 6.3e-05, 0.000102, 1e-06, 4.9e-05, 6.7e-05, 3.7e-05, 3.8e-05, 4.9e-05, 9.3e-05, 0.000105, 0.000102, 3e-05, 0.000102, 0.000105, 9.3e-05, 3.7e-05, 4.9e-05, 4.9e-05, 0.000102, 4.8e-05, 4.4e-05, 5.9e-05, 6.3e-05, 3e-05, 6.8e-05, 6.3e-05, 8e-06, 9.3e-05, 3.7e-05, 4.9e-05, 6.4e-05, 5.7e-05, 2.4e-05, 5.9e-05, 6.1e-05, 6.1e-05, 6.1e-05, 6.1e-05, 4.4e-05, 3.5e-05, 6.1e-05, 6.1e-05, 3.5e-05, 4.1e-05, 3.5e-05, 2.4e-05, 5.7e-05, 0.000102, 0.000102, 3.1e-05, 0.000102, 3e-05, 6.3e-05, 6.8e-05, 6.8e-05, 3e-05, 5.7e-05, 6.5e-05, 2.4e-05, 6.3e-05, 5.7e-05, 6.3e-05, 3e-05, 6.4e-05, 4.9e-05, 4.9e-05, 8e-06, 4.8e-05, 6.1e-05, 3.5e-05, 6.1e-05, 6.1e-05, 4.8e-05, 2.4e-05, 6.5e-05, 6.5e-05, 2.4e-05, 2.4e-05, 2.4e-05, 4.8e-05, 4.1e-05, 4.8e-05, 4.8e-05, 6.3e-05, 4.1e-05, 6.3e-05, 4.1e-05, 4.1e-05, 3.5e-05, 4.4e-05, 4.8e-05, 6.1e-05, 5.9e-05, 3e-05, 8e-06, 6.4e-05, 3.7e-05, 6.7e-05, 7.1e-05, 6.7e-05, 6.7e-05, 7.1e-05, 5e-05, 3.7e-05, 3.7e-05, 0.000102, 5.7e-05, 2.4e-05, 2.4e-05, 2.4e-05, 6.8e-05, 6.5e-05, 6.8e-05, 5.7e-05, 6.8e-05, 5.9e-05, 6.3e-05, 6.3e-05, 6.3e-05, 4.1e-05, 6.1e-05, 2.4e-05, 5.7e-05, 6.4e-05, 6.4e-05, 5.7e-05, 3e-05, 8e-06, 8e-06, 0.000102, 3.1e-05, 3e-05, 5.7e-05, 6.5e-05, 6.3e-05, 5.7e-05, 6.8e-05, 6.8e-05, 6.8e-05, 2.4e-05, 5.9e-05, 6.8e-05, 3.1e-05, 0.000102, 0.000105, 0.000105, 0.000101, 6.4e-05, 1e-06, 0.000105, 6.4e-05, 0.000102, 6.1e-05, 3.5e-05, 6.3e-05, 4.1e-05, 4.5e-05, 2.4e-05, 6.5e-05, 6.3e-05, 3e-05, 0.000102, 3e-05, 6.8e-05, 3e-05, 8e-06, 9.3e-05, 4.9e-05, 4.9e-05, 4.9e-05, 6.7e-05, 3.7e-05, 5e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5e-05, 3.7e-05, 3.7e-05, 6.7e-05, 6.4e-05, 6.3e-05, 4.8e-05, 6.5e-05, 2.4e-05, 5.7e-05, 3.1e-05, 6.8e-05, 6.3e-05, 5.7e-05, 5.7e-05, 1e-06, 6.7e-05, 3.7e-05, 5.3e-05, 5.3e-05, 5.3e-05, 5e-05, 7.1e-05, 7.1e-05, 7.1e-05, 6.7e-05, 6.7e-05, 6.7e-05, 5e-05, 5e-05, 5e-05, 3.7e-05, 8e-06, 0.000105, 1e-06, 4.9e-05, 3.7e-05, 3.7e-05, 3.8e-05, 5e-05, 5.3e-05, 5.3e-05, 5.3e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.3e-05, 5e-05, 5e-05, 5.3e-05, 5.3e-05, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 5.8e-05, 4.4e-05, 5.3e-05, 5e-05, 3.7e-05, 6.7e-05, 9.3e-05, 7.1e-05, 3.7e-05, 5e-05, 3.7e-05, 7.1e-05, 3.7e-05, 0.000105, 3e-05, 2.4e-05, 6.1e-05, 4.8e-05, 5.7e-05, 9.3e-05, 6.7e-05, 7.1e-05, 7.1e-05, 5e-05, 3.7e-05, 6.7e-05, 0.000105, 0.000105, 0.000105, 3.1e-05, 0.000105, 9.3e-05, 6.7e-05, 3.7e-05, 7.1e-05, 3.7e-05, 3.7e-05, 5e-05, 3.7e-05, 6.7e-05, 4.9e-05, 3.7e-05, 4.9e-05, 4.9e-05, 8e-06, 3.1e-05, 0.000102, 3e-05, 2.4e-05, 3.5e-05, 6.1e-05, 5.9e-05, 6.3e-05, 0.000102, 1e-06, 4.9e-05, 4.9e-05, 3.7e-05, 9.3e-05, 9.3e-05, 1e-06, 0.000105, 5.7e-05, 4.8e-05, 4.8e-05, 6.3e-05, 4.1e-05, 4.1e-05, 3.5e-05, 4.1e-05, 6.3e-05, 6.3e-05, 4.8e-05, 3.6e-05, 5.5e-05, 5.5e-05, 3.6e-05, 4.8e-05, 3.5e-05, 2.4e-05, 5.7e-05, 8e-06, 0.000105, 1e-06, 9.3e-05, 3.7e-05, 3.7e-05, 1e-06, 0.000105, 1e-06, 8e-06, 3.1e-05, 3e-05, 5.7e-05, 0.000102, 6.7e-05, 3.7e-05, 6.3e-05, 4.4e-05, 4.8e-05, 6.8e-05, 2.4e-05, 6.8e-05, 0.000102, 8e-06, 1e-06, 4.9e-05, 6.7e-05, 4.9e-05, 4.9e-05, 6.7e-05, 7.1e-05, 6.7e-05, 4.9e-05, 6.4e-05, 3.1e-05, 6.8e-05, 5.9e-05, 2.4e-05, 6.3e-05, 3e-05, 2.4e-05, 3.5e-05, 3.5e-05, 6.1e-05, 4.8e-05, 5.9e-05, 2.4e-05, 2.4e-05], "emissions_factor_CO2_decrease_fraction": 0.01174, "emissions_factor_NOx_decrease_fraction": 0.01174, "emissions_factor_SO2_decrease_fraction": 0.01174, "emissions_factor_PM25_decrease_fraction": 0.01174}, - "ElectricStorage": {"min_kw": 0.0, "max_kw": 1000000000.0, "min_kwh": 0.0, "max_kwh": 1000000.0, "internal_efficiency_fraction": 0.975, "inverter_efficiency_fraction": 0.96, "rectifier_efficiency_fraction": 0.96, "soc_min_fraction": 0.2, "soc_min_applies_during_outages": true, "soc_init_fraction": 0.5, "can_grid_charge": false, "installed_cost_per_kw": 840.0, "installed_cost_per_kwh": 420.0, "replace_cost_per_kw": 410.0, "replace_cost_per_kwh": 200.0, "inverter_replacement_year": 10, "battery_replacement_year": 10, "macrs_option_years": 5, "macrs_bonus_fraction": 1.0, "macrs_itc_reduction": 0.5, "total_itc_fraction": 0.26, "total_rebate_per_kw": 0.0, "total_rebate_per_kwh": 0.0}, - "Generator": {"existing_kw": 0.0, "min_kw": 0.0, "max_kw": 1000000000.0, "installed_cost_per_kw": 500.0, "om_cost_per_kw": 10.0, "om_cost_per_kwh": 0.0, "fuel_cost_per_gallon": 3.0, "electric_efficiency_half_load": 0.32329, "electric_efficiency_full_load": 0.32329, "fuel_avail_gal": 660.0, "min_turn_down_fraction": 0.0, "only_runs_during_grid_outage": true, "sells_energy_back_to_grid": false, "macrs_option_years": 0, "macrs_bonus_fraction": 1.0, "macrs_itc_reduction": 0.0, "federal_itc_fraction": 0.0, "state_ibi_fraction": 0.0, "state_ibi_max": 10000000000.0, "utility_ibi_fraction": 0.0, "utility_ibi_max": 10000000000.0, "federal_rebate_per_kw": 0.0, "state_rebate_per_kw": 0.0, "state_rebate_max": 10000000000.0, "utility_rebate_per_kw": 0.0, "utility_rebate_max": 10000000000.0, "production_incentive_per_kwh": 0.0, "production_incentive_max_benefit": 1000000000.0, "production_incentive_years": 0, "production_incentive_max_kw": 0.0, "can_net_meter": false, "can_wholesale": false, "can_export_beyond_nem_limit": false, "can_curtail": false, "fuel_renewable_energy_fraction": 0.0, "emissions_factor_lb_CO2_per_gal": 22.51, "emissions_factor_lb_NOx_per_gal": 0.0775544, "emissions_factor_lb_SO2_per_gal": 0.040020476, "emissions_factor_lb_PM25_per_gal": 0.0, "replacement_year": 25, "replace_cost_per_kw": 0.0} + "ElectricStorage": {"min_kw": 100.0, "max_kw": 100.0, "min_kwh": 100.0, "max_kwh": 100.0, "internal_efficiency_fraction": 0.975, "inverter_efficiency_fraction": 0.96, "rectifier_efficiency_fraction": 0.96, "soc_min_fraction": 0.2, "soc_min_applies_during_outages": true, "soc_init_fraction": 0.5, "can_grid_charge": false, "installed_cost_per_kw": 840.0, "installed_cost_per_kwh": 420.0, "replace_cost_per_kw": 410.0, "replace_cost_per_kwh": 200.0, "inverter_replacement_year": 10, "battery_replacement_year": 10, "macrs_option_years": 5, "macrs_bonus_fraction": 1.0, "macrs_itc_reduction": 0.5, "total_itc_fraction": 0.26, "total_rebate_per_kw": 0.0, "total_rebate_per_kwh": 0.0}, + "Generator": {"existing_kw": 0.0, "min_kw": 100.0, "max_kw": 100.0, "installed_cost_per_kw": 500.0, "om_cost_per_kw": 10.0, "om_cost_per_kwh": 0.0, "fuel_cost_per_gallon": 3.0, "electric_efficiency_half_load": 0.32329, "electric_efficiency_full_load": 0.32329, "fuel_avail_gal": 660.0, "min_turn_down_fraction": 0.0, "only_runs_during_grid_outage": true, "sells_energy_back_to_grid": false, "macrs_option_years": 0, "macrs_bonus_fraction": 1.0, "macrs_itc_reduction": 0.0, "federal_itc_fraction": 0.0, "state_ibi_fraction": 0.0, "state_ibi_max": 10000000000.0, "utility_ibi_fraction": 0.0, "utility_ibi_max": 10000000000.0, "federal_rebate_per_kw": 0.0, "state_rebate_per_kw": 0.0, "state_rebate_max": 10000000000.0, "utility_rebate_per_kw": 0.0, "utility_rebate_max": 10000000000.0, "production_incentive_per_kwh": 0.0, "production_incentive_max_benefit": 1000000000.0, "production_incentive_years": 0, "production_incentive_max_kw": 0.0, "can_net_meter": false, "can_wholesale": false, "can_export_beyond_nem_limit": false, "can_curtail": false, "fuel_renewable_energy_fraction": 0.0, "emissions_factor_lb_CO2_per_gal": 22.51, "emissions_factor_lb_NOx_per_gal": 0.0775544, "emissions_factor_lb_SO2_per_gal": 0.040020476, "emissions_factor_lb_PM25_per_gal": 0.0, "replacement_year": 25, "replace_cost_per_kw": 0.0} } \ No newline at end of file From 674780496cf626717396860c4257af90ada54ffd Mon Sep 17 00:00:00 2001 From: Zolan Date: Tue, 30 Apr 2024 12:38:24 -0600 Subject: [PATCH 11/13] simplify run_reopt() calls in minimize unserved load tests --- test/runtests.jl | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 87a7a7c6c..65a793234 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -908,10 +908,8 @@ else # run HiGHS tests @testset "Minimize Unserved Load" begin d = JSON.parsefile("./scenarios/outage.json") - s = Scenario(d) - p = REoptInputs(s) m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) - results = run_reopt(m, p) + results = run_reopt(m, d) @test results["Outages"]["expected_outage_cost"] ≈ 0 atol=0.1 @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) ≈ 0 atol=0.1 @@ -924,10 +922,8 @@ else # run HiGHS tests d["Financial"]["microgrid_upgrade_cost_fraction"] = 0.3 d["PV"]["min_kw"] = 200.0 d["PV"]["max_kw"] = 200.0 - s = Scenario(d) - p = REoptInputs(s) m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) - results = run_reopt(m, p) + results = run_reopt(m, d) @test value(m[:binMGTechUsed]["PV"]) ≈ 0 @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) > 0 @@ -953,11 +949,8 @@ else # run HiGHS tests @test results["Financial"]["lcc"] ≈ 8.6413594727e7 rtol=0.001 # Scenario with generator, PV, wind, electric storage - d = JSON.parsefile("./scenarios/outages_gen_pv_wind_stor.json") - s = Scenario(d) - p = REoptInputs(s) m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "presolve" => "on")) - results = run_reopt(m, p) + results = run_reopt(m, "./scenarios/outages_gen_pv_wind_stor.json") @test value(m[:binMGTechUsed]["Generator"]) ≈ 1 @test value(m[:binMGTechUsed]["PV"]) ≈ 1 @test value(m[:binMGTechUsed]["Wind"]) ≈ 1 From 296bbd63acc4755283536de6c70c88e191ad54f7 Mon Sep 17 00:00:00 2001 From: Zolan Date: Tue, 30 Apr 2024 12:38:38 -0600 Subject: [PATCH 12/13] more specific test value for outage test --- test/runtests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index 65a793234..e81ef9a80 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -925,7 +925,7 @@ else # run HiGHS tests m = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false, "mip_rel_gap" => 0.01, "presolve" => "on")) results = run_reopt(m, d) @test value(m[:binMGTechUsed]["PV"]) ≈ 0 - @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) > 0 + @test sum(results["Outages"]["unserved_load_per_outage_kwh"]) ≈ 24.16 atol=0.1 #= Scenario with $0.001/kWh value_of_lost_load_per_kwh, 12x169 hour outages, 1kW load/hour, and min_resil_time_steps = 168 From ffcc0629d8d431fe83bcefa70e49044a90d92d25 Mon Sep 17 00:00:00 2001 From: Alex Zolan Date: Tue, 30 Apr 2024 13:24:10 -0600 Subject: [PATCH 13/13] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6efd3a119..fc04cbaeb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,7 +23,7 @@ Classify the change according to the following categories: ### Deprecated ### Removed -## Develop 2024-04-24 +## Develop 2024-04-30 ### Changed - Updated test sets "Emissions and Renewable Energy Percent" and "Minimize Unserved Load" to decrease computing time.